On the Road to 4.1

This is the running changelog of the G’MIC software, until version 4.1 is released. It lists all new features and changes done since latest major version 4.0.

New features

G’MIC-Qt plug-in:

  • [gmic-qt-407] New filter Rendering / Perspective Water Waves procedurally renders a choppy water surface, in perspective.

  • [gmic-qt-407] New filter Rendering / Paint Background generates a painted-wall / oil-sky style background (cloudy pigment layers, impasto, splatters).


  • [gmic-qt-406] New filter Patterns / Penrose Tiling generate Penrose tilings by Robinson-triangle deflation.

  • [gmic-qt-406] New filter Deformations / Page Curl curls up a corner of the image, as on a sheet of paper.

  • [gmic-qt-406] New filter Deformations / Glass Door simulates optical distortion as if your image is seen through a glass block door.

  • [gmic-qt-406] New filter Rendering / Cosmic Nebula generates a procedural cosmic nebula.


  • [gmic-qt-406] New filter Rendering / Chladni Figures, mathematically simulates complex sand shapes created by 2D wave interference.

  • [gmic-qt-404] New filter Rendering / Variable-Density Hilbert Curve draws a single variable-density Hilbert Curve that reproduces an input image.

  • [gmic-qt-404] Filter Arrays & Tiles / Montage has been recoded to use the newest arrange command, with a few additionnal improvements (support a larger number of input layers, better memory management, etc.).

Core functionalities:

  • [gmic-core-408] Add new native commands sigmoid, logit and log1p.

G’MIC Standard Library:

Improvements / Modifications

G’MIC-Qt plug-in:

  • [gmic-qt-407] Filter Deformations / Perspective has been rewritten from scratch to make it more interactive and easy to use.

Core functionalities:

  • [stdlib-406] Comprehensive code review has been done for nn_lib , with many small bugs fixed and performance improvements.

  • [math-core-408] Optimizations (x6) of vector-valued functions vmax(), vmin(), … when only two arguments are provided.

  • [math-core-406] Optimizations done in parsing macro definitions. Avoid multiple string reallocations.

  • [core-404] Interpreter now pre-counts number of arguments given to a native command, to speed up argument parsing.

  • [core-404] When interpreter parses a string that is expected to be a single double value, it now uses std::strtod() rather than std::sscanf(), which is 5 to 10 times faster (it does not make a huge difference on execution time of G’MIC scripts though).

  • [math-core-404] Function find() has an extra max_iterations parameters that allows to narrow search in an image or vector subset.

G’MIC Standard Library:

  • [stdlib-406] Library nn_lib has been greatly improved after a full code review. Calculations of network modules have been verified and corrected when necessary.

  • [stdlib-405] Command map now proposes an adaptive random colormap option.

  • [stdlib-404] Command colormap now implements a multi-threaded algorithm to extract the full colormap of images.

Bug fix

  • [stdlib-406] Library nn_lib: Fix calculus in backprop when using convolutional layers with boundary_conditions!=0.

  • [stdlib-404] Commands display, print and plot: Fix error occurring when one of the selected images has an empty name.

  • [math-core-407] Fix bug in double assignment expression as x = X[k] = y.

  • [math-core-405] Fix loading PNM files from stdin.

  • [math-core-404] Better catch exceptions occuring in parallelized evaluations.

  • [math-core-404] Fix bug in math evaluator, related to optimization attempts for certain expressions that led to a wrong memory access in some cases.

  • [build-system-406] Fix Makefile to allow parallel compilation with make -j.

1 Like
"* Function 'find(A,B,_starting_index,_search_step,_max_iterations)' returns the index where sub-vector 'B' appears "\

I suppose that max iteration means number of times to search? And can there be max sublength parameter? Vectors are const size, but what if I just want to find exact matches up to N?

rep_uniq_args could benefit from that, which to be honest is pretty small edge case.

That’s it. I didn’t want to call it sequence_length because when search_step is different from 1 it could be tricky to understand what it does.

2026/08/19: Release of G’MIC 4.0.4.

Let’s hope this doesn’t actually happen with the version with the same nomenclature, David. lol

So far appears to work great.

All rendered with a few G’MIC settings. :slight_smile:

2 Likes
  • 2027/09/04 : release of v.4.0.5
  • 2027/10/14: Release of v.4.0.6.
1 Like

Tested and works for the presets most import to me, David (i.e, no way can I test them all; lol). Again, appreciate you and your team. :slight_smile:

1 Like

2026/10/28: Release of G’MIC v.4.0.7.