24–29 Jul 2025
Europe/Rome timezone

Bridging type systems: what I learned designing and building modern C++ bindings for GObject libraries

25 Jul 2025, 09:00
40m
40 Minute Presentation - Remote Application Development and Deployment

Description

C++ developers using GTK have long relied on the venerable gtkmm project. More recently, cppgir has emerged as another alternative.

In this talk, I will introduce peel — a new project providing C++ bindings for GObject libraries. It tries to bridge the impedance mismatch between C++ and GObject type systems while prioritizing:

  • zero runtime overhead compared to plain C code;
  • broad and up-to-date API coverage based on GObject introspection;
  • native support for GObject type system concepts such as initializers, properties, and deep inheritance.

To achieve this, peel deliberately rethinks several classic design decisions.

I will also touch on the broader challenges & patterns in GObject bindings design, stating ideas that could be useful for other languages' bindings.

Author(s) Bio

Sergey Bugaev is a software engineer with a passion for systems programming. He occasionally contributes to GTK as well as to other components of the GNOME and freedesktop stack, as well as other projects including the GNU Hurd kernel. When not hacking on something, he's probably out there dancing, or listening to classic rock music.

Presentation Type In Person

Author

Sergey Bugaev

Presentation materials