On Friday, 11 September 2015 at 11:15:33 UTC, NX wrote:
hello_world (linux executable) -> 13 MB !!!

Try running `strip yourexecutable` on all compilers, but on gdc it should make the biggest difference. It brings debugging info and exported symbols.

Is this because whole GC implementation code is injected into executable or maybe libphobos.a being statically linked or is this because TypeInfo* ModuleInfo* stuff?

Static linking is a couple hundred kilobytes, some of the library being intertwined is a couple hundred more.

C's stdlib is also large, but since it comes with the operating system preinstalled, you don't think about it much. Ditto times twenty for Java, .net, C++, dynamic languages, etc.

Just D's isn't preinstalled so it carries what it needs with the executable for broadest compatibility. You could dynamically link if you like (`-defaultlib=libphobos2.so` on dmd linux) though then to share the application, you've gotta share that multi-megabyte .so as well as the executable.... and deal with dependency management, so it really makes it worse.

And if you aren't distributing it, meh, what's 400 kb on your own hard drive?

Reply via email to