On 04/21/12 12:24, Marco Leise wrote:
> At first I confused your project with GtkD. I'll take a look at it, to see 
> how it compares. Many examples for Gtk use C code, and I end up looking for 
> the correct GtkD class that offers the function. Otherwise I quite like the 
> classical inheritance that is possible with GtkD, whereas you use the "alias 
> this" trick, which is fair enough. Also you can bind events like onExpose 
> naturally to class methods in GtkD. There is no data pointer involved.

Hmm, some sugar is likely possible for things like signal callbacks;
i'll think about it.

> On the other hand small executables are my cup of tea. I've compiled a small 
> Haskell Gtk application, that weighted ~10 MB (stripped) and the same program 
> in D using GtkD was 3.4 MB in size. Let's see...
> 

"example_gtk", which is probably the smallest /useful/ GTK2 app is 315K
here (32-bit x86 linux), after commenting out the _dumpObj(event) call.

(I wonder how large an equivalent gtkD version would be... But, as i care
more about /runtime/ efficiency, it's not a very interesting metric) 


If you care about executable sizes, some GDC specific notes:

- compile with "-ffunction-sections -fdata-sections -Wl,--gc-sections"
    Things like std.bitmanip unconditionally emit functions, which will
    be rarely used, but bloat the executable.
- do *not* compile with "-Wl,--export-dynamic"
    This option will slow down linking, while enabling better backtraces;
    unfortunately it will also prevent the gc-sections optimizations above
    from working.
- use '-frelease -fno-bounds-check'
- use '-flto'    
- do not use '-g' together with '-flto' for the final executable linking
    GCC (4.6) bug, can result in ICE.
- strip the executable

artur

Reply via email to