Here is the running changelog of the G’MIC project, until it reaches next major version 3.6.
It lists all changes made to the project since the latest stable release (3.5.0).
New features:
Version 3.5.6
- [stdlib-356] New command
normals3d
returns the 3D unit normal vectors to the vertices or the primitives (or both) of a 3D mesh.
-
[core-356] New substituting expression
$%
can be now used in loops. It is replaced by a value that linearly goes from0
(first iteration) to1
(last iteration), and is actually equal to$>/($>+$<)
. -
[core-356] Left and right braces can be used in a
do...while
loop, just as in C++ (and as for the other loops in G’MIC). E.g:do { echo $> } while u<0.9
is now a valid expression (indeed equivalent to:do echo $> while u<0.9
). It can be useful to make the inside of the loop more delimited.
Version 3.5.4
- [gmic-qt-354] New filter Rendering / Speech Bubble lets you create comic bubbles in different shapes.
-
[core-354] Start port of the
CImgDisplay
class to make G’MIC use theSDL3
library for displaying windows. Hopefully, this will enable future versions of G’MIC to natively use Wayland instead of X11. This is work-in-progress, so expect some (big) troubles when enabling it. -
[math-core-354] Add function
epoch(_year,_month,_day,_hour,_minute,_second)
that returns Epoch (Unix time) corresponding to specified date. -
[math-core-354] Add overloading of function
swap()
that allows to swap pixel values in images, with signatureswap(#ind,pos0,pos1,_is_vector)
. -
[math-core-354] Add function
frac(x)
that computes the fractional part ofx
(i.e.x - (int)x
). -
[math-core-354] Add function
wave(x,type)
that defines periodic functions with various waveforms.

- [stdlib-354] New commands
thickcircle
andthickellipse
draws colored thick outlined circles/ellipses on images.
- [stdlib-354] New command
thickpolygon
draws colored thick outlined polygons on images.
Version 3.5.3
- [gmic-qt-353] New filter Rendering / 2.5D Extrusion renders a fake 3D effect from an input binary shape.
- [gmic-qt-353] New filter Rendering / Fluffy Cloud renders fluffy clouds!
- [gmic-qt-353] New filter Deformations / Warp [RBF] lets you warp an image by moving anchor keypoints directly over the preview widget.
-
[stdlib-353] Add command
at_curve
, that extracts image pixels belonging to a spline curve passing through specified points (replace previous commandat_line
). -
[stdlib-353] Add command
resize_displacement
, that uses a specific algorithm to upscale displacement maps, for patch-based image synthesis. -
[web-353] We have now accounts on X and Bluesky in addition to Mastodon. Mastodon messages will be crossposted to our X and BlueSky accounts : https://x.com/gmic_eu and @gmic-eu.bsky.social on Bluesky .
Version 3.5.1
-
[math-core-351] Add function
isfinite()
that returns0
or1
whether the given argument is a finite number or not (i.e. notinf
norNaN
). -
[math-core-351] Add function
isvar(varname)
that returns0
or1
whether the given argument is the name of an already defined variable or not. -
[math-core-351] Add function
abscut(x,min,max,offset)
that returnscut(abs(x) + offset,min,max)*sign(x)
(see dedicated post to get an idea why). -
[stdlib-351] Add command
matchpatch_alt
, a custom re-implementation of commandmatchpatch
that is slower but easier to modify for computing custom correspondence maps between two images.
Improvements / Modifications:
Version 3.5.6
-
[core-356] Allow more compression methods when TIFF files.
-
[core-356] Speed up computation of min/max search in large images (OpenMP parallelization).
Version 3.5.5
-
[gmic-qt-355] Make code compatible with Qt6. Qt6 version of the G’MIC-Qt plug-in seems to work OK!
-
[math-core-355] Function
do(expression,_while)
now iterates infinitely if nowhile
clause (last argument) is specified, instead of stopping when theexpression
evaluates to0
.
Version 3.5.4
-
[math-core-354] Improve expression parsing to better detect items
$>
and$<
(so that e.g. expression$<*2
does compile without parentheses, as in($<)*2
). -
[math-core-354] Add a first parsing pass to detect math operators and skip their parsing when possible. Slightly optimize expression parsing.
-
[core-354] Enter and Return key events can now be checked independently, when managing display windows.
-
[stdlib-354] Command
plot
: Add shortcutsCTRL+O
andCTRL+S
to save current instance and screenshot.
Version 3.5.3
- [gmic-qt-353] Filter Rendering / Gradient [from line] has been upgraded to Gradient [from Curve] and is now able to extract color gradient from a cubic spline path (rather than just a straight line)
-
[core-353] Various code optimizations, to speed up string parsing and concatenation in the G’MIC interpreter.
-
[core-353] Commands
erode
,dilate
,deform
,spread
now accepts arguments with a%
suffix.
Version 3.5.1
-
[stdlib-351] Command
scale2x_cnn
: Implement downscaling fidelity constraint, so that a downscaled version of the upscaled image is closer to the input image. -
[stdlib-351] Command
denoise_cnn
: Changed the network architecture to make it more controllable (add a user-defined parameter for noise level estimation). -
[stdlib-351] Management of simultaneous neural networks has been improved in the
nn_lib
(ML library inside G’MIC). Some of the existing layers have been also improved.
Bugfix:
Version 3.5.6
- [core-356] Fix saving of TIFF files, avoiding searching for the min/max values of the whole image when saving a single image plane.
Version 3.5.4
- [core-354] Fix possible malformed command data in command parser (called by command
command
), that was leading to invalid memory access when G’MIC environment is cloned (when commandparallel
is used).
Version 3.5.3
-
[core-353] Fix command
median
whensize=3
and selected image is a one-column vector. -
[math-core-353] Fix function
find()
when first argument is an empty string (returns-1
rather than0
).
Version 3.5.2
- [packages-352] Fix DLL issue with the G’MIC-Qt for GIMP.
Version 3.5.1
-
[math-core-351] Fix multi-threading issue when forcing the evaluation of math expressions in parallel for images that has less values than the number of threads (including empty images).
-
[math-core-351] Fix function
v(a,b)
that was always returning positive random values whena
orb
were negative. -
[stdlib-351] Command
display
: Fix window title when displaying a single image that has been generated from a math expression.