Let me share some updates about peel 😀

As a reminder, #peel is a project that implements modern  bindings for #GObject libraries, most notably the #GTK stack, and now also #GStreamer.

🧵

Sebastian @slomo has been tirelessly working (and me, helping and reviewing and merging his work) on improving the GStreamer+peel experience, resulting in many improvements all over peel, and also in GStreamer, GLib, and other components of the stack.

New progress on the #puregotk #GObject introspection things I'm working on in #Go . It's super early, but I added preliminary support for generated getters/setters for properties. No more manual value setup & `SetProperty` calls required, just a simple `SetPropertyX` call.
New progress on the #puregotk #GObject introspection things I'm working on in #Go. It's super early, but I added preliminary support for generated getters/setters for properties. No more manual value setup & `SetProperty` calls required, just a simple `SetPropertyX` call. We're getting closer and closer to more readable code here with this IMHO, GJS on the right for comparison!

@razze sure, good idea. The general stack is C (but, thankfully #GObject), and with that we also deal with almost All The File Formats (tm) thanks to firmware vendors all doing slightly different thing.

We're slowly migrating bits of the code to Rust, but just don't ask how. We're also bit into fuzzing and testing hundreds of emulated devices in CI. There are quite a few build tools in #python too.

Continued some #GObject subclassing support in Go. Turns out I messed up the C memory alignment in #Go for and ended up embedding the parent class as a reference, when GObject expects it to be the actual struct.
Continued some #GObject subclassing support in Go. Turns out I messed up the C memory alignment in #Go for and ended up embedding the parent class as a reference, when GObject expects it to be the actual struct. Funnily enough some callbacks still worked before this, but now even the ones like `Snapshot` and `Activate` work. To demonstrate, here is a Go application subclassing AdwApplication and overwriting the `activate` callback instead of calling `ConnectCallback`!
Now that my PRs for #GObject subclassing support in Go are up on GitHub and ready for review, I can get started porting over Sessions to Gsk instead of Cairo.
Now that my PRs for #GObject subclassing support in Go are up on GitHub and ready for review, I can get started porting over Sessions to GSK instead of Cairo. It was easier to do find examples in JS, so that's what I used, but next up is getting this to work with the freshly implemented `snapshot` function override!
May I present: Typed subclassing of #GObject classes in Golang! Still a WIP, but this is enough now to create proper custom #GTK widgets in #Golang without needing to import any `purego`/CGo code to subclass.
May I present: Typed subclassing of #GObject classes in Golang! Still a WIP, but this is enough now to create proper custom #GTK widgets in #Golang without needing to import any `purego`/CGo code to subclass. Please ignore the `Constructed` callback call here, it's just there to test if getting a callback (e.g. a constructor works), too. 🥳