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.