GNU Image Manipulation Program
2.10 Stable Branch
This is the stable branch of GIMP. Unlike earlier stable branches,
we do allow some new features here, if they are not too invasive.
Otherwise, this branch is only for bug-fixes.
Overview of Changes from GIMP 2.10.6 to GIMP 2.10.8
- Use adaptive chunk size in GimpProjection when rendering the
projection asynchronously, rather than using a fixed chunk size.
This provides a better trade-off between throughput and
responsiveness dynamically, based on how fast the processing is.
- In all selection tools, show error on attempt to
subtract-from/intersect-with empty selection.
- Fix text along path not working with vertical text.
- Fix Text tool's frame position when undoing a move operation.
- Streamline Text tool's drawing blocking/unblocking logic.
- When moving a text layer using the text tool (through alt+drag),
don't change the layer's box mode to "fixed", which is unnecessary,
since the layer's size isn't affected.
- Transform and deformation operations now maintain color for fully
transparent pixels, making unerase and curves manipulation of alpha
channel more reliable.
- All transform tools now apply changes when you save or export/overwrite
an image without pressing Enter first to confirm changes.
- Heal, Dodge/Burn, Smudge, and Convolve tools now adjust the processed
buffer and mask_buffer regions according to the changes made to the
application region, as calculated by intersecting it with the
drawable and mask extents. This fixes wrong application position
when painting on a drawable whose origin is above/to the left of the
image's origin, and there's a selection active.
- Port all plug-ins to the new iterator API in GEGL.
- Improve automatic detection of HEIC/HEIF files.
- Improve RawTherapee discovery by looking up registry key (should
become useful with RawTherapee 5.5 and more).
- Compatibility information in the Save dialog is now more understandable.
The minimum GIMP version for the XCF file is always written down when it
is GIMP 2.8 or over. The list of features warranting the minimum version
is now listed in an expander container rather than as tooltip, which
makes it more discoverable. The warning on compression is now displayed
as its own text under the checkbox and not as additional text to the
minimum GIMP version label.
- New self-explanatory --enable-win32-debug-console CLI option
- New GimpBacktrace API provides an interface for creating and
traversing multi-threaded backtraces, as well as querying symbol
information. Backends are available for Linux and Windows.
- Performance log recording now available in the Dashboard dock.
The log contains a series of samples of the dashboard variables,
as well as the full program backtrace, when available. As such,
it essentially acts as a built-in profiler, which allows us to
correlate program execution with the information available
through the Dashboard.
- New performance-log-expand.py tool decodes a delta-encoded
performance log by expanding the deltas, producing a log where
each sample (and other relevant elements) contain complete
information. The structure of expanded logs is identical to that
of delta-encoded logs, the expanded log simply has no deltas.
- New performance-log-resolve.py tool resolves symbol information
in backtraces. The logs produced by GIMP only specify the program
counter at each stack frame, providing an address-map to map
program-counter addresses to actual symbols separately. This tool
looks up each program-counter address in the address map,
incorporating the relevant symbol information directly into the
- New performance-log-deduce.py tool that statistically deduces the
correct thread states based on backtrace address frequency, fixing
- New performance-log-viewer.py tool that is a viewer for GIMP
performance logs, with a sample-selection area at the top and an
information area at the bottom. The sample-selection area visualizes
the sampled variables and markers using a simultaneous set of plots,
and displays the currently selected samples. The information area
shows global information stored in the log, as well as information
specific to the currently selected samples, including variable listing
and statistics, full backtrace, and profile/call-graph information.
- Updated translations: Danish, Dutch, Finnish, German, Hungarian,
Italian, Polish, Portuguese (Brazil), Spanish, Swedish, Ukrainian.
Overview of Changes from GIMP 2.10.4 to GIMP 2.10.6
- Render drawable previews asynchronously.
- Merge the file view filter and file format lists in GimpFileDialog.
The presence of 2 lists was very confusing.
- DLL search priority is now updated before running a plug-in on
Windows, depending on the executable bitness. This gets rid of one
of the last remnant of DLL hell in GIMP, which was when running
32-bit plug-ins from a 64-bit build of GIMP.
- New "Little Planet" (gegl:stereographic-projection) filter.
- New "Long Shadow" (gegl:long-shadow) filter.
- Halt the Measure tool after straightening.
- Add an "orientation" option to the measure tool, corresponding to
the "orientation" property of GimpToolCompass (i.e., it controls the
orientation against which the angle is measured, when not in 3-
point mode.) The orientation is "auto" by default, so that the
angle is always <= 45 deg. Note that the "orientation" option
affects the tool's "straighten" function, so that the layer is
rotated toward the current orientation.
- Text layers can now represent vertical texts, with 4 variants:
left-to-right and right-to-left lines, and forcing all characters to
be upright or following Unicode's vertical orientation property.
- The Dashboard dockable dialog now has an "async" field to the
dashboard's "misc" group, showing the number of async operations
currently in the "running" state.
- New Preferences option to enable/disable layer-group previews, since
these can get quite time-expensive.
- New language: Marathi
- 12 translations were updated: Brazilian Portuguese, Dutch, French,
German, Greek, Italian, Latvian, Polish, Romanian, Slovenian,
- Add --with-win32-32bit-dll-folder configuration option to override
the folder where 32-bit versions of DLL will be installed (default:
- Install all plug-ins in their own directories. Unlike on master,
this is not mandatory to do so, but it would protect our core
plug-ins against any DLL installed directly under plug-ins/ by
third-party plug-ins (cf. Windows DLL hell).
Overview of Changes from GIMP 2.10.2 to GIMP 2.10.4
- Remove gimp_display_shell_draw_background() and all clipping hacks
for drawing the canvas background. This optimizes away one entire
step of drawing of image size, for each expose.
- Font loading does not block startup anymore. Only consequence is
that the Text tool may not be usable immediately if fonts are not
fully loaded yet (and will output an appropriate error if you do
so). All non-text related activities can be performed right away.
- Change of the URL from bugzilla to gitlab where appropriate.
- New tool option manager to better keep track of user context and
paint options in a consistent manner.
- The Dashboard dockable dialog now has a 'Memory' group that shows
memory-usage information: the currently used memory size, the
available physical memory size, and the total physical memory
size. It can also show the tile-cache size, for comparison
against the other memory stats. Note that the upper-bound of the
meter is the physical memory size, so the memory usage may be over
100% when GIMP uses the swap.
- The Dashboard dockable dialog now has "read" and "written" fields in
the dashboard swap group, which report the total amount of data
read-from/written-to the tile swap, respetively. Additionally, the
swap busy indicator (used as the meter's LED) has been improved,
so that it's active whenever data has been read-from/written-to
the swap during the last sampling interval, rather than at the
point of sampling.
- Fonts can now be tagged. The user interface is the same as for
brushes, patterns etc.
- Some icons fixed: larger spacing between broken chains and
gimp-tool-ellipse-select made symmetrical.
- When a plug-in cannot be applied to an image because of mismatch
in image types (e.g. layer has no alpha or image is greyscale),
GIMP now displays a message listing supported image types for this
- The Measurement tool now has an "Auto straighten" option allowing
to rotate the active drawable (layer, channel…) so that the
measurement line is used as horizon. As other transform tools, the
feature will work on linked drawables as well.
- The Smudge tool now paints correctly on images with a color
profile other than the GIMP's built-in one.
- Installer: set compatibility options to run Python plugins in
- Put back compatibility DLLs for really old plugins.
- Install binary tool `gimp-test-clipboard` on the system to allow
people to help us debug clipboard bugs.
- --enable-bundled-mypaint-brushes renamed
--enable-relocatable-bundle and also make WMF fonts looked up on
the runtime prefix of GIMP (instead of the build-time path) when
this build option was set.
- gimptool-2.0 binary now accepts source files with non-standard
extensions if it can try to guess appropriate language from the
compiler being used. It will also properly quote arguments for
- Run explicitly Python 2 as Python plug-in interpreter to prevent
breakage on systems where Python 3 is the default.
- raw_input()'s argument in Python console is now optional, and
input() support has been added.
- The PSD loader now provides an option to load "merged",
pre-composited version of the images that becomes available when a
PSD file was saved with "Maximize Compatibility" option enabled in
Photoshop. This is useful when loading PSD files that use features
that GIMP doesn't currently support, and therefore can't render
correctly, such as adjustment layers. When loading the merged
image version, we avoid loading certain additional data from the
file, such as channels, paths, and guides, while still loading
metadata. This option is currently exposed as an additional file
type ("Photoshop image (merged)"), which has to be explicitly
selected from the file-type list when opening the image.
- Embedding GIMP's built-in sRGB color profile to exported files is
now optional. The default choice can be set in the Preferences
- Updated translations: Catalan, Czech, Danish, Dutch, Finnish,
Greek, Hungarian, Italian, Latvian, Polish, Romanian, Russian,
Spanish, Swedish, Ukrainian.
Overview of Changes from GIMP 2.10.0 to GIMP 2.10.2
- Discard fonts which fail to load and popup an info dialog to allow
people debug their fonts.
- New API to suppress updates in UI until plug-ins are done
- New API to calculate histograms in separate threads, with possible further
extension to handle similar cases elsewhere in GIMP.
- Tool options are now properly saved and reloaded per-device at
- New plug-in for importing and exporting HEIF images.
- Enable visibility of rasterized vector layer from PSD.
- Single-window screenshots in Windows fixed to correctly snap a
window even when it is partly off-screen or covered by another
window or when display scaling is not set to 100%.
- New Spherize filter to wrap an image around a spherical cap
- New Recursive Transform filter to create Droste effect.
- Warn users, when alpha-only painting has no effect. E.g. when target
drawable doesn't have an alpha channel, or the alpha channel is locked.
- Make the splash texts dynamic, so they are larger on larger splashes.
- Mention pressing Enter to complete Foreground selection in the status bar.
- Make sure that clicking outside any selection prevents Rectangle Select
and Ellipse Select tools from creating empty selections.
- Improve mouse wheel zooming behavior to keep the same point
centered under the pointer even if the image is completely visible
in the canvas.
- Add "View -> Center Image in Window" (Shift+J) as a quick way to
center the image at any zoom level.
- Updated translations: Catalan, Danish, Dutch, French, German, Greek,
Hungarian, Icelandic, Italian, Latvian, Polish, Russian, Spanish,
- New translation of Windows installer: Chinese (Taiwan)
- Add a --with-bug-report-url configure option allowing packagers to
set the address of their own bug tracker. This address will be the
one opened by the debug dialog for reporting bugs.
- Add a flatpak manifest for the gtk3-port branch.
- Remove the possibility to disable script-fu.
- Add a --with-icc-directory configure option to customize the color
profile directory. By default, it is set to the common path
- Updating the description of the XCF format "devel-docs/xcf.txt", for
third-party readers wishing to support GIMP 2.10 XCF files.
- Add documentation skeletons for all enums in libgimpbase/, there is
much room for improvement.