giD v0.9.5: GStreamer, json-glib, libadw, and libpanel bindings; signal handler improvements; memory leak fixes; and more

Element Green element at kymorphia.com
Mon Apr 21 14:00:56 UTC 2025


On Tuesday, 8 April 2025 at 16:57:02 UTC, Ian wrote:
> On Monday, 31 March 2025 at 01:22:12 UTC, Element Green wrote:
>> [giD](https://gid.dub.pm) v0.9.5 has now been released which 
>> adds several additional bindings with the total library count 
>> now over 60 with [high API 
>> coverage](https://github.com/Kymorphia/gid/blob/main/report.txt).
>
> This is amazing. Thank you!
>
> Would you say GTK4 is already usable? It should be judging from 
> the example, but just checking if you think it's still missing 
> large chunks or will have large breaking changes.

As Dejan said, gid:gtk4 support has a very high [API 
coverage](https://github.com/Kymorphia/gid/blob/main/report.txt) 
(99.6% method coverage currently) and is very usable.  You can 
see a list of unsupported APIs in the linked report.txt.

gid:gtk3 actually has better coverage and support for Gtk3 than 
gtk-d does as well.

Having said that, we do consider the API to be unstable at the 
moment, hence the < 1.x version. The most recent release (v0.9.6) 
adds GObject property method support and did some significant 
renames to be more consistent (VariantG -> Variant, ObjectG -> 
ObjectWrap, etc) for example. Having said that, at this point I 
don't expect any major API breaking changes and we are nearing a 
1.x release. At which point, the API will be kept as stable as 
possible within a major version.

There are still areas that [gidgen](https://gidgen.dub.pm) does 
not support with respect to GIR APIs, such as GObject "virtual 
class" methods, and certain data type/ownership scenarios. 
Bindings for such APIs (though few) could be created manually or 
support added as needed.  Virtual class method support will be 
added in the next release, though I have seldom used those, since 
there are typically alternative ways to execute them, since they 
are often connected to signals or used only when implementing a 
native GObject.

More unit tests and user testing is also needed before I feel 
more confident there aren't any bugs or memory leaks. But I have 
been using it in a port of a rather large commercial audio 
synthesizer project [Kymorphia 
Alkimiya](https://www.kymorphia.com/products/alkimiya/index.html) 
with great success for a while now (website is a bit dated as it 
is still WIP), which was my original inspiration for creating giD.


More information about the Digitalmars-d-announce mailing list