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