On Tuesday, 20 December 2011 at 14:01:04 UTC, Denis Shelomovskij wrote:
Detailed description:
GtkD is built using singe (gtk-one-obj.lib) or separate (one per source file) object files (gtk-sep-obj.lib).

Than main.d that imports gtk.Main is built using those libraries.

Than zeroCount utils is built and launched over resulting files:
--------------------------------------------------
Now let's calculate zero bytes counts:
--------------------------------------------------
 Zero bytes|     %|    Non-zero| Total bytes|        File
    3628311| 21.56|    13202153|    16830464|gtk-one-obj.lib
    1953124| 15.98|    10272924|    12226048|gtk-sep-obj.lib
  127968798| 99.00|     1298430|   129267228|main-one-obj.exe
     743821| 37.51|     1239183|     1983004|main-sep-obj.exe
Done.

So we have to use very slow per-file build to produce a good (not 100 MiB) executable. No matter what *.exe is launched, its process allocates ~20MiB of RAM (loaded Gtk dll-s).

I believe this is bug 2254:

http://d.puremagic.com/issues/show_bug.cgi?id=2254

The cause is the way DMD builds libraries. The old way of building libraries (using a librarian) does not create libraries that exhibit this problem when linked with an executable.

Reply via email to