giD v0.9.2 GObject Introspection binding repository and generator with Gtk4 support

Element Green element at kymorphia.com
Mon Feb 17 15:12:39 UTC 2025


On Monday, 17 February 2025 at 12:46:17 UTC, Dejan Lekic wrote:
> On Monday, 17 February 2025 at 12:32:29 UTC, M. M. wrote:
>> I am confused (and not an expert in GUI), but -- does this 
>> replace gtkD? (and, cudos, it looks like a fine work!)
>
> It is not replacing gtkD (yet), but it is definitely an 
> alternative to gtkD that _includes_ Gtk4 which most of us are 
> waiting for. On top of Gtk, gid also contains Arrow for an 
> example, something I need too...

Yes, exactly correct. It does not replace gtkD (yet). I began by 
working with girtod and an unreleased version of gtkD for Gtk4 
and spent months trying to improve it. I eventually abandoned the 
effort and decided it would be easiest to start from scratch on a 
new binding utility, which is now gidgen (after about a year of 
work in my spare time). It is much more advanced than girtod and 
requires less manual binding work. The intention is to automate 
as much as possible. Most of the manual effort is to fix issues 
with the underlying GIR API descriptions, in the form of XML 
patch commands embedded as comments in D source definition files.

Adding the Arrow binding took a few hours at most, the majority 
spent trying to build Arrow. It required a few XML patches to 
designate some return string arrays as null terminated which were 
automatic suggestions from gidgen and are missing in the GIR API, 
in order to get 100% coverage.

I think it would make sense to bind Gtk3 as well, since gtkD 
still leaves much to be desired. This will likely require some 
changes to gidgen to take the version into account when resolving 
dependencies. Was just thinking about this actually.

Thanks to all who tried it out. giD and gidgen could use some 
more unittests and I suspect there could be some memory leaks, 
which I still need to track down. I'm looking forward to 
continuing to expand access to other libraries with GObject 
Introspection APIs to D. I was thinking of starting on gstreamer 
next. I welcome any other suggestions as well and would be happy 
to put in the effort or assist if someone wants to learn how to 
create bindings with gidgen.


More information about the Digitalmars-d-announce mailing list