GIMP 3.0 RC3 Released

Release news for version GIMP 3.0 RC3

Feb 10, 2025 - 11:00
 0
GIMP 3.0 RC3 Released
Elevate your brand in 2025!
Elevate your brand in 2025!

We’re excited to share the third release candidate of GIMP 3.0 for what (we hope) is the final round of community testing before the stable version! This release follows the recent GIMP 3 and Beyond talk by Jehan at FOSDEM 2025.

Important Bug Fixes and Changes

While resolving the last few major bugs for 3.0, we’ve made some changes that we feel need more community review. While trying out this release candidate, please keep an eye out for the following:

New GTK3 Version

Just in time for GIMP 3.0, a new version of GTK3 has been released! Among other changes, GTK 3.24.48 includes fixes for several bugs affecting GIMP with patches initially contributed by Jehan, such as a crash in Wayland when dragging layers and text glitches in certain widgets with Right-To-Left languages. We want to thank Carlos Garnacho and Matthias Clasen for their help on these respective patches.

GTK 3.24.48 also adds support to the version 2 of xdg_foreign for Wayland (v1 stays supported as fallback). Specifically the absence of this support was causing GIMP to freeze with certain actions on KDE/Wayland, which is now fixed.

As a consequence of these issues — some of them really making GIMP unstable on Wayland — we recommend packagers to update to the latest version of GTK3 when packaging our RC3. However, please let us know if you notice any regressions or other issues as a result of the new GTK3 version.

Image Graph Improvements

With non-destructive editing in GIMP, users can now stack multiple filters on top of each other. These filters usually work in high bit-depth format so image information is not lost. However, each filter’s output was converted to and from the original image’s bit-depth when stacked – so if the image was only 8-bit, a great deal of information was lost in these constant conversions. Jehan fixed this problem by only converting to the image’s format when the filter is meant to be merged in, rather than in non-destructive stacks. Since this is a big change in how filters work, we want to have more users test this change for any possible regressions.

Thread-safe Projection Changes

When changes are made to an image (such as painting), the image projection needs to be “flushed” to display new changes to the screen. Some aspects of this process were not “thread-safe”, which means that when your computer used multiple threads to speed up the work, they might conflict with each other and cause a crash. This was observed in our auto-expanding layer feature. Jehan fixed the function to be entirely thread-safe. However, changes to multi-threading can leave some well-hidden bugs, so more community testing would be helpful.

Private Procedures

The GIMP Procedural DataBase browser shows plug-in and script developers all the functions they can access. Until now, it also showed “private” functions that are only used internally. Jehan added a flag to hide these functions. We initially cast too wide of a net and hid some important public functions. While we fixed these instances, we’d like more review from the community to make sure we didn’t miss any mislabeled public functions.

Enhancements

While we are still in major feature-freeze until the stable release of GIMP 3.0, some small and self-contained enhancements have been made to plug-ins.

Script-fu

Filter API

The new (gimp-drawable-merge-filter) PDB call allows Script-fu writers to use labels to specify filter properties. This will give Script-fu users the same flexibility with calling and updating filters that C and Python plug-in developers have in the GIMP 3.0 API. As an example, here is a call to the Emboss filter:

(gimp-drawable-merge-new-filter mask-emboss "gegl:emboss" 0 LAYER-MODE-REPLACE 1.0 "azimuth" 315.0 "elevation" 45.0 "depth" 7 "type" "emboss")

You can see more examples in our Script repository.

New named-arguments syntax

In Script-Fu, all the functions generated from plug-ins’ PDB procedure must now be called with a brand new named-argument syntax, inspired by the Racket Scheme variant.

For instance, say your plug-in wants to call the Foggify plug-in, instead of calling:

(python-fu-foggify RUN-NONINTERACTIVE 1 (car (gimp-image-get-layers 1)) "Clouds" '(50 4 4) 1.0 50.0)

You should now call:

(python-fu-foggify #:image 1 #:drawables (car (gimp-image-get-layers 1)) #:opacity 50.0 #:color '(50 4 4))

This has a few advantages:

Talk to Techatty
Talk to Techatty
  • Much more self-documented calls, especially as some plug-ins have a lot of arguments (so we could end up having functions with a dozen of integers or floats and that was very confusing).
  • The order of arguments doesn’t matter anymore.
  • You can ignore arguments when you call them with default values.
  • It allows to improve plug-in procedures in the future by adding new arguments without breaking existing scripts.

This last point in particular is important, and orders of arguments did not matter anymore when calling PDB procedures from the C API, as well as all introspected bindings. Script-Fu was the only remaining interface we had which still cared about argument orders and numbers. This is not true anymore and is therefore a huge step towards a much more robust API for GIMP 3!

File Formats

All changes to image loading plug-ins are checked with the automated testing framework built by Jacob Boerema to prevent regressions.

PSD

In addition to bug fixes such as saving CMYK merged images properly, Jacob Boerema has added support for loading 16-bits-per-channel LAB PSDs. He also updated the PSD export dialog to use GIMP’s built-in metadata export features.

DDS

Much-requested support for loading DDS images with BC7 support has been implemented by CMYK Student. Jacob Boerema worked to fix compatibility with DDS files exported from older versions of GIMP.

AppImage is now Official

After nine months of incubation (the number is a mere coincidence

Techatty Connecting the world of tech differently! Read. Write. Learn. Thrive. Make an informed decision without distractions. We are building tech media and publication networks to connect YOU and everyone to reliable information, opportunities, and resources to achieve greater success.