https://issues.dlang.org/show_bug.cgi?id=16291
--- Comment #3 from Steven Schveighoffer <schvei...@yahoo.com> --- (In reply to Ketmar Dark from comment #2) > aha. i see. > > the thing is that std.internal.phobosinit is not imported from anywhere, so > linker simply not including it in resulting executable! > Well... That's weird. I assumed module ctors would still be included, even if not imported. How the hell does vibe.d work, where everything is set up in a module ctor? > > i.e. we have to do "import std.internal.phobosinit;" in "std.encoding". but > that defeats the purpose of moving the whole thing to separate module, i > guess. Yes, it does. I purposely removed all imports of phobosinit (was called processinit, and std.process imported it) to avoid cycles. > what was the idea behind moving that initialization to separate module? it > seems that leaving it in std.encoding is not conflicting with anything: not > one of phobos modules that imports "std.encoding" has module ctors. There was a cycle between std.encoding and something else. The easiest thing to do was to remove the constructors. --