Victoria Lacroix


⇐ Blog

Introducing LuaGObject

Version 0.10.0 is now available.

July 28, 2025


In brief: version 0.10.0 of LuaGObject has been released. It’s also on LuaRocks.


As previously discussed, LuaGObject is forked from an older project named LGI. Since its last release in 2017, development of LGI has gradually slowed down. Per discussions within its repository, another LGI release is highly improbable—the person with the keys has not been heard of in 5 years, and those with lesser levels of access have lost interest in contributing. As LGI is a critical component of my own apps, I knew someone needed to intervene and that it would unfortunately need to be me.

To make it a clean slate, the fork was renamed to LuaGObject so that its name would convey its function: it allows you to use GObject-based libraries from Lua code. This means writing Gtk apps and leveraging libraries like GLib, Pango, plus so many more.

Changes in LuaGObject 0.10.0

The following changes were made as part of LGI since its last release in 2018:

Make no mistake—the ability to make GUIs using Gtk 4 for GNOME is the defining feature of this release. Credit for this goes to Patrick Griffis (TingPing) and Uli Schlachter (psychon). This release was made in part so their hard work would finally see the light of day outside of a development avenue that had essentially been forsaken.

Beyond these, LuaGObject also builds on an unmerged branch by Christian Hergert which ported LGI to the newest version of GIRepository, the library that allows other languages to dynamically generate bindings to GObject-based libraries at runtime. Per Christian, a move to GIRepository 2.80 or later is necessary for LGI (now LuaGObject) to function in GNOME 49 which is due to release in September 2025. LuaGObject fixes up the small number errors introduced by Christian’s work, plus a preexisting quirk in the code which only became a problem after moving to GIRepository.

From there, I implemented a few more changes to LuaGObject which are present in the 0.10.0 release:

With this release, anyone can now whip up a GNOME app in Lua with minimal fuss, where previously it was somewhat more involved.

Lastly, this release should retain all the same behaviour as the last release of LGI. Each of LGI’s unit tests are untouched and continue to pass under LuaGObject.


As stated at the top of this article, I do not anticipate that this will be a smooth release—it’s probably going to be a disaster! I am simply out of excuses not to release LuaGObject at this point. My apps are already on it, and the few other projects which I know use LGI have been verified to function using LuaGObject. With this release, they will now have reason to switch over to a library where newer releases are at least possible. For the rest: if you discover bugs in an attempt to create a new project, please report them! They won’t be fixed if they’re now known to me.

While I’m thrilled to be the one to be able to make this release, I am more excited simply that a release was made at all. This has truly been a long time coming and it is my hope that with this release, interest in writing GObject-based software in Lua begins to grow.