@jmdavis it's too late to change it to system now. Back then it passed the review and you have to remember almost nothing was `@safe` back then and we had to start somewhere. It's true that this is leaking implementation details and the correct solution is that `rndGen` needs to be marked as safe/trusted so randomUUID can be marked as safe. But back then it just wasn't feasible to fix all of phobos at once and this was the compromise. From an API point of view `randomUUID` has to be usable from safeD or it's useless.

@monarchdodra What is (memory)-unsafe about the initialization? As it's automatically initialized on first access I don't see how it could break (AFAICS it can't even go out of memory). This would be different if explicit initialization was necessary, but it's not. The other part is seeding, but I don't see how this is could be unsafe. Yes it's using unsafe casts and stuff which the compiler can't prove to be safe, but it's still safe when viewed as a black-box from the outside as every unsafe operation is done in safe ways one specific inputs only. rndGen itself isn't trusted cause `@safe/trusted` hasn't been applied to all of std.random yet. The rndGen function header was only touched once since the original commit in 2009 and that was to add `property`.