Thread overview
GtkD 3.5.0, GTK+ with D.
Jan 06, 2017
Mike Wey
Jan 07, 2017
Joakim
Jan 07, 2017
Mike Wey
Jan 07, 2017
Joakim
Jan 07, 2017
Mike Wey
Jan 07, 2017
dlang user
Jan 07, 2017
Gerald
Jan 07, 2017
dlang user
Jan 07, 2017
Mike Wey
January 06, 2017
GtkD is a D binding and OO wrapper of Gtk+ and is released on the LGPL license.

Close to the 3.4 release, but the new functionality to now also remove registered signal handlers added by Gerald Nunn warrants a new release.
Signal handles can be removed with the `gobject.Signals.Signals.handlerDisconnect` function.

```
gulong id = addOnDraw(&myHandler);

Signals.handlerDisconnect(this, id);
```

Users who previously removed there handlers from the internal array used by GtkD will need to update there code to the new system.

Changelog: http://gtkd.org/changelog.html
Download: http://gtkd.org/Downloads/sources/GtkD-3.5.0.zip

-- 
Mike Wey
January 07, 2017
On Friday, 6 January 2017 at 22:00:55 UTC, Mike Wey wrote:
> GtkD is a D binding and OO wrapper of Gtk+ and is released on the LGPL license.
>
> Close to the 3.4 release, but the new functionality to now also remove registered signal handlers added by Gerald Nunn warrants a new release.
> Signal handles can be removed with the `gobject.Signals.Signals.handlerDisconnect` function.
>
> ```
> gulong id = addOnDraw(&myHandler);
>
> Signals.handlerDisconnect(this, id);
> ```
>
> Users who previously removed there handlers from the internal array used by GtkD will need to update there code to the new system.
>
> Changelog: http://gtkd.org/changelog.html
> Download: http://gtkd.org/Downloads/sources/GtkD-3.5.0.zip

Hey Mike, any interest in providing a library for Android?  You can try out my ldc cross-compiler for Android:

https://github.com/joakim-noah/android/releases
January 07, 2017
On 01/07/2017 08:24 AM, Joakim wrote:
> Hey Mike, any interest in providing a library for Android?  You can try
> out my ldc cross-compiler for Android:
>
> https://github.com/joakim-noah/android/releases

There would first need to be a GTK version for Android.

-- 
Mike Wey
January 07, 2017
On Saturday, 7 January 2017 at 11:06:14 UTC, Mike Wey wrote:
> On 01/07/2017 08:24 AM, Joakim wrote:
>> Hey Mike, any interest in providing a library for Android?  You can try
>> out my ldc cross-compiler for Android:
>>
>> https://github.com/joakim-noah/android/releases
>
> There would first need to be a GTK version for Android.

There is a repo for it:

https://github.com/eugals/GTKAndroid

But if Gtk doesn't really bother supporting Android and you don't want to mess with it either, that's fine.
January 07, 2017
On 01/06/2017 04:00 PM, Mike Wey wrote:
> GtkD is a D binding and OO wrapper of Gtk+ and is released on the LGPL
> license.
>
> Close to the 3.4 release, but the new functionality to now also remove
> registered signal handlers added by Gerald Nunn warrants a new release.
> Signal handles can be removed with the
> `gobject.Signals.Signals.handlerDisconnect` function.
>
> ```
> gulong id = addOnDraw(&myHandler);
>
> Signals.handlerDisconnect(this, id);
> ```
>
> Users who previously removed there handlers from the internal array used
> by GtkD will need to update there code to the new system.
>
> Changelog: http://gtkd.org/changelog.html
> Download: http://gtkd.org/Downloads/sources/GtkD-3.5.0.zip
>

When I compile the HelloWorld.d demo code on version 3.4.1 in debug mode the resulting file size is 26.4MB, when I compile the same code with 3.5.0 the file size is 70.7MB, that is quite a jump in size.  I am using DMD V2.072.2 on 64bit Debian testing.
January 07, 2017
On Saturday, 7 January 2017 at 16:46:38 UTC, dlang user wrote:
> When I compile the HelloWorld.d demo code on version 3.4.1 in debug mode the resulting file size is 26.4MB, when I compile the same code with 3.5.0 the file size is 70.7MB, that is quite a jump in size.  I am using DMD V2.072.2 on 64bit Debian testing.

As you are probably aware, GtkD auto-generates code. Unfortunately, adding the ability to remove event handlers generated an increase in the size of code, instead of just tracking the delegate directly it now uses a wrapper class to also track the connect flags and returned handlerId. Right now a unique wrapper class is generated for each event handler which I suspect is the primary culprit for the increase in size.

If this size increase is a major concern, one option might be for me to try to use a generic wrapper class instead of a generating a unique one. This would mean converting the generated code to cast the delegate before using it.

I'll let Mike chime in with his thoughts first though before looking too much into it.



January 07, 2017
On 01/07/2017 11:32 AM, Gerald wrote:
> On Saturday, 7 January 2017 at 16:46:38 UTC, dlang user wrote:
>> When I compile the HelloWorld.d demo code on version 3.4.1 in debug
>> mode the resulting file size is 26.4MB, when I compile the same code
>> with 3.5.0 the file size is 70.7MB, that is quite a jump in size.  I
>> am using DMD V2.072.2 on 64bit Debian testing.
>
> As you are probably aware, GtkD auto-generates code. Unfortunately,
> adding the ability to remove event handlers generated an increase in the
> size of code, instead of just tracking the delegate directly it now uses
> a wrapper class to also track the connect flags and returned handlerId.
> Right now a unique wrapper class is generated for each event handler
> which I suspect is the primary culprit for the increase in size.
>
> If this size increase is a major concern, one option might be for me to
> try to use a generic wrapper class instead of a generating a unique one.
> This would mean converting the generated code to cast the delegate
> before using it.
>
> I'll let Mike chime in with his thoughts first though before looking too
> much into it.
>
>
>

No, the size increase isn't a concern for me at all. It was just an observation that I made using the new version, and I wasn't sure if it was expected or not.
January 07, 2017
On 01/07/2017 06:32 PM, Gerald wrote:
> On Saturday, 7 January 2017 at 16:46:38 UTC, dlang user wrote:
>> When I compile the HelloWorld.d demo code on version 3.4.1 in debug
>> mode the resulting file size is 26.4MB, when I compile the same code
>> with 3.5.0 the file size is 70.7MB, that is quite a jump in size.  I
>> am using DMD V2.072.2 on 64bit Debian testing.
>
> As you are probably aware, GtkD auto-generates code. Unfortunately,
> adding the ability to remove event handlers generated an increase in the
> size of code, instead of just tracking the delegate directly it now uses
> a wrapper class to also track the connect flags and returned handlerId.
> Right now a unique wrapper class is generated for each event handler
> which I suspect is the primary culprit for the increase in size.
>
> If this size increase is a major concern, one option might be for me to
> try to use a generic wrapper class instead of a generating a unique one.
> This would mean converting the generated code to cast the delegate
> before using it.
>
> I'll let Mike chime in with his thoughts first though before looking too
> much into it.

I didn't expect a jump in size of that magnitude, but i didn't check for it either.

In release builds the size difference is smaller, and the best results are with ldc. (-O -release + strip) With ldc the HelloWorld demo is just 2.4MB (2.2MiB) a 0.2MB increase from the previous release.

For the library itself this is a bit more with a 30% increase in size.

-- 
Mike Wey
January 07, 2017
On 01/07/2017 02:46 PM, Joakim wrote:
> On Saturday, 7 January 2017 at 11:06:14 UTC, Mike Wey wrote:
>> On 01/07/2017 08:24 AM, Joakim wrote:
>>> Hey Mike, any interest in providing a library for Android?  You can try
>>> out my ldc cross-compiler for Android:
>>>
>>> https://github.com/joakim-noah/android/releases
>>
>> There would first need to be a GTK version for Android.
>
> There is a repo for it:
>
> https://github.com/eugals/GTKAndroid
>
> But if Gtk doesn't really bother supporting Android and you don't want
> to mess with it either, that's fine.

Maybe when the android support is more mature.

-- 
Mike Wey