This is the changelog for the release of the 4.0 version of the G’MIC software, released on 2026/07/01.
It lists all new features and changes done since version 3.7.
What is G’MIC?
G’MIC (GREYC’s Magic for Image Computing) is a full-featured open-source framework for image processing. It provides several different user interfaces to convert/manipulate/filter/visualize generic image datasets, ranging from 1D scalar signals to 3D+t sequences of multi-spectral volumetric images, thus including 2D color images.
- G’MIC main project page : https://gmic.eu
- G’MIC download : G'MIC - GREYC's Magic for Image Computing: A Full-Featured Open-Source Framework for Image Processing - Download
- G’MIC web service : https://gmicol.greyc.fr/
- G’MIC language tutorial pages : Start Here
What’s new in version 4.0?
New features
G’MIC-Qt plug-in:
- [gmic-qt-400] New filter Rendering / Pixel Stretch adds colorful streaks to your images along user-defined spline curves.
- [gmic-qt-400] New filter Colors / Transfer Color [Multi] proposes several different methods to transfer colors from a style image onto a content image, possibly with user guidance.
- [gmic-qt-371] New filter Artistic / Marker Drawing applies a marker drawing effect on selected images.
G’MIC Standard Library:
-
[stdlib-375] New command
output_csvsaves arrays of strings or numbers as a.csvfile. -
[stdlib-371] New command
unitnormcomputes the pointwise Lp-norm in selected images.
Others:
- [web-373] New code repository
gmic-interactive-demosprovides sources of some of our interactive demo programs (used at booths for Science Day)
- [web-371] Added a new code sample “Rotating Diffusion-Limited Aggregation”, in the Gallery section of the G’MIC website.
- [emacs-371] Created a
gmic-mode.elfile, that defines a G’MIC mode for Emacs : Automatic indentation and syntax coloring for G’MIC scripts.
Improvements / Modifications
G’MIC Standard Library:
-
[stdlib-400] Command
rbf: Additional affine term can be added in the interpolating function. -
[stdlib-400] Command
transfer_rgbhas been recoded from scratch. It implements a better variational algorithm and is way faster to run. -
[stdlib-375] Command
split_colorshas been recoded from scratch and is faster. -
[stdlib-375] Command
input_csvhas been recoded from scratch.
Core functionalities:
-
[core-400] Command
qr: New parameter to use pivoting in QR decomposition, and return the permutation vectors of matrix columns. -
[core-400] New mechanism to auto-check validity of a shared image when it is used in a selection or as an argument. Slightly slows down the code but avoid nasty code that can segfault.
-
[core-400] Syntax
{``string}has been replaced by{:string}. -
[core-400] Command
displacementhas been recoded from scratch. It is now faster, more precise and better manage prescribed vector constraints. -
[math-core-376] Optimization of variable assignements, so that an expression like
X = cos(X)is actually computed “in-place”. -
[math-core-375] Optimization of functions when working on vector-valued arguments (e.g.
cos(X)whereX = vectorN()). -
[math-core-375] New functions ‘_cumulate()’, ‘_equalize()’, ‘_mirror()’, ‘_noise()’, ‘_normalize()’, ‘_permute()’, ‘_reverse()’, ‘_shift()’ and ‘_sort()’ define in-place versions of their equivalent functions (whose names do not begin with an underscore).
-
[math-core-371] New pre-defined variables
_0and_1which are vectors whose dimension is equal to the number of channels of the associated image, and whose values are all0or1. -
[math-core-371] Optimization of vector initializers, with smaller generated opcodes.
Others:
- [web-373] Successfully upgraded the G’MIC-Qt plug-in for GIMP 3.2
Bug fix:
-
[stdlib-375] Fix bug in command
remove_duplicates. -
[core-372] Fix UB in G’MIC interpreter, caused by trying to unlock a mutex that has not been locked before.
-
[core-371] Fix line drawing algorithm bug happening when specified line coordinates are very large (out-of-image), but a when portion of the line should be drawn anyway in the image.
-
[math-core-400] Fix regression introduced in 3.7.6: Check correctness of lvalue when assigning variables.
-
[math-core-400] Fixed expression involving variable assignment and pixel modification, like
var = i(x,y) = value(was not assigning image pixel). -
[math-core-371] Variable
$%were returningNaNin a single-iteration loop, when accessed through the math parser. Now returns0. -
[math-core-371] Variable
$varwere returning0instead ofNaNif$varwas as a string rather than a number. -
[math-core-371] Fix bug in SVD computation that was computing wrong singular values in some cases. That was affecting the functions
svd()andeig().








