On Wednesday, 7 March 2018 at 10:51:49 UTC, CSim wrote:
Hi,

I'm trying to decide whether it is better to use DLang for Gtk development or Vala/Genie.

When I make a simple Vala/Genie Gtk executable the file is tiny whereas the DLang file is huge. First I used the default Dub build and the file was in excess of 60mb (assuming this includes debug build). Using dub build=release the file is still more than 7 mb. Using a native Vala/Genie build the file is less than 500k.

Trying to understand what is going on, but I assume from this that Dub is linking static dependencies, whereas the Vala/Genie builds will link to dynamic libraries.


So my (two pronged) question is this: Is there any way to specify in dub.json to build and link dependencies as dynamic libraries, and are there any other tips that can be used to reduce these (relatively) huge executables?

Personally, I do not worry too much about the executable size, however a couple of tips as follows:

a. If this is on linux use "strip" to remove symbols out of the executable

b. In dub.json you can specify just the portions of GtkD that your application depends on, i.e.:

    "dependencies": {
        "gtk-d:gtkd": {
            "version": "3.7.5"
        },
        "gtk-d:vte": {
            "version": "3.7.5"
        }
    }

Is what I use in tilix (https://github.com/gnunn1/tilix)

c. You can dynamically link to GtkD, in tilix I have the config below to do so. Interestingly on ldc it doesn't make any difference in size though using ldd I can see the dependency to GtkD. With DMD it is smaller however I cannpt run it since the Arch Linux GtkD package is compiled with ldc2.

        {
            "name": "dynamic",
            "targetType": "executable",
            "libs": ["gtkd-3"],
            "libs-linux": ["X11"],
            "lflags": ["-defaultlib=libgtkd-3.so"],
            "versions": ["StdLoggerDisableTrace"]
        }

Reply via email to