https://issues.dlang.org/show_bug.cgi?id=16291
--- Comment #2 from Ketmar Dark <[email protected]> --- aha. i see. the thing is that std.internal.phobosinit is not imported from anywhere, so linker simply not including it in resulting executable! but with .so, it is included with all other phobos modules (as linker cannot throw it away from *library*), and druntime then got the list of all modules included in .so. 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. 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. --
