What’s new for developers
GNOME 49 brings a host of improvements for developers, including enhanced tools, improved libraries, and updated language bindings. Read on to learn what’s new.
GTK
GNOME 49 is accompanied by the new GTK 4.20. GTK saw several notable improvements in this new version.
- GTK now supports YUV color formats, broadening compatibility for video and image pipelines.
- Symbolic icon rendering has been refactored, resulting in improved rendering.
- GTK’s CSS support has gained media queries for detecting color scheme and contrast preferences.
- A number of accessibility improvements are included, including accessibility enhancements for entries and file selection dialogs.
- Developers can also take advantage of new path intersection APIs and component transfer nodes for more advanced graphics operations.
- GtkImage now respects the
:pixel-sizeproperty and/or-gtk-icon-sizeCSS property instead of stretching the paintable to the allocated size. gdk-pixbufnow uses glycin as its preferred image loader, bringing security benefits and broader format support.
Glib
The latest stable GLib is version 2.86.0. It comes with several enhancements:
- GLib’s default log handler now includes the
SYSLOG_IDENTIFIERfield in its journald log messages, thanks to work by Axel Karjalainen. This makes it easier to filter and locate messages from your application in the system journal, improving debugging and monitoring workflows. - Support for file handles in nested containers has also been added to
gdbus call. Contributed by Julian Sparber, this makes it easier to test certain D-Bus APIs, such as the desktop portals, directly from the command line.
Libadwaita
GNOME 49 comes with Libadwaita 1.8, the latest release of GNOME’s dedicated UI platform library. The new release includes several notable new features and improvements.
AdwShortcutsDialog provides a modern replacement for the now deprecated GtkShortcutsWindow, and is the recommended method for apps to document their keyboard shortcuts. The new widget is adaptive and benefits from integrated search. Additionally, AdwShortcutLabel has been introduced as a replacement for GtkShortcutLabel, which can be used to show keyboard shortcuts in other interfaces.
A new .document style class has been introduced, to provide a typography option that is more suitable to large blocks of document text.
Finally, the new release contains a number of other enhancements, including new capabilities in AdwPreferencesGroup and AdwPreferencesPage. Check out the Libadwaita 1.8 blog post for more details.
Builder
GNOME Builder has gained several new features to make coding more productive and enjoyable in this new release:
- Inline Git blame shows who last modified each line of code.
- Enhanced document map now shows changes and diagnostics at a glance.
- Improved LSP support includes enhanced Markdown rendering and syntax highlighting in hover popups and documentation.
- New Arduino support makes it possible to compile and upload sketches to compatible boards. A graphical interface for managing libraries and platforms is included, as well as an Arduino project template (
arduino-climust be installed for this).
Mutter Development Kit
Mutter and GNOME Shell come with a new development tool in GNOME 49. Called the Mutter Development Kit, this replaces the previous nested method of running development versions of GNOME Shell.
Mutter Development Kit uses Toolbx to reliably and easily build Mutter and GNOME Shell in isolation from the host system. It comes with a number of significant improvements over the old nested method, including not relying on X11, improved HiDPI handling, and the ability to emulate touch input.
Tutorials for how to use the tool are available for both Mutter and GNOME Shell.
Sysprof
Sysprof comes with two enhancements in the new version. First, it is now possible to filter by marks, which is a helpful way to analyze large sets of profiling data. Second, Sysprof now has richer marks instrumentation, with the ability to capture DR M vblank, compositor, GTK rendering, WebKit, Mesa, and full frame-cycle marks throughout the stack.
Manuals
Manuals is a new integrated reference and documentation tool that replaces Devhelp. Designed to provide a modern and unified developer experience, Manuals offers access to API references, guides, and other documentation in a streamlined interface.
Manuals is available via Flathub and is now the recommended solution for browsing developer documentation within GNOME.
For Distributions
There are several important changes in GNOME 49 for distributions.
Disabled X11 Session
Support for a dedicated X11 session has been disabled by default in GNOME 49. This change applies to gnome-session, gdm, mutter, and gnome-shell. X11 support can still be enabled as a build option for each of these modules, though distributions should be aware that this may not be possible in future GNOME versions.
This change is part of GNOME’s long-running migration to Wayland. Apps which depend on X11 continue to be supported via xwayland.
More details about this change can be found in Jordan Petridis’s blog post.
Stronger systemd dependencies
A number of GNOME modules have increased their dependencies on systemd in GNOME 49:
gdmhas grown a dependency on systemd’suserdb.- The service manager in
gnome-sessionhas been removed, with systemd being used in its place.
These changes allow significant cleanups and modernization in these modules, as well as new features. Adrian Vovk has provided a detailed blog post on this topic, which provides guidance for distributions.