This post lists all the changes/additions done to the G’MIC software, starting from the version 3.3.0, until we reach the next major release 3.4.0.
Most of these features are available in latest stable version of G’MIC (3.3.3) after a filter update ($ gmic update
).
New features:
Version 3.3.5:

[stdlib335] Command
edgels
has been recoded from scratch and can now return multiple lists of edgels, either starting from the same pixel, or from any shape pixel present in the image. 
[stdlib335] New command
split_vector
split an image into several parts, where specified vector is the separator. 
[mathcore335] New function
flood(_#ind,_x,_y,_z,_tolerance,_is_high_connectivity,_opacity,_color)
performs a flood fill in image[ind]
(or in default image selected ifind
is not specified) with specified coordinates. This is the math evaluator analog to commandflood
.
Version 3.3.4:
 [gmicqt334] Filter Rendering / Quick Copyright has been recoded from scratch, with lot of new options.
 [gmicqt334] New filter Patterns / Random Rectangles creates a random partition of colored rectangles.
 [stdlib334] New command
poincare_disk
renders an image of the Poincaré disk, and its associated filter Deformations / Poincaré Disk.

[stdlib334] New command
count_colors
returns the number of distinct colors used in selected images. 
[gmicqt334] New filter Patterns / ReactionDiffusion creates reactiondiffusion patterns.

[mathcore334] New function
v(min,max,_include_min,_include_max)
returns a random integer in specified range (similar to functionu()
but returns an integer). 
[mathcore334] New predefined variable
eps
returns the machine epsilon, that is the difference between 1.0 and the next value representable by adouble
. 
[mathcore334] Add support for specifying binary litteral, as
0b1010010
. 
[mathcore334] New function
lcm()
computes the least common multiple of specified arguments. 
[mathcore334] Function
gcd()
now accepts multiple arguments.
Version 3.3.3:
 [gmicqt333] New filter Rendering / ABN Filigrees renders nice 2D closed curves with lot of controls. Filter done by @grosgood .
 [gmicqt333] New filter Rendering / CRT Scanlines simulates the CRT scanline effect.
 [gmicqt333] New filter Rendering / Random Signature.
 [gmicqt333] New filter Degradations / CRT Phosphors.
 [gmicqt333] New filter Deformations / Square to Circle [alt], that warps the image so that every centerted square (or rectangle) becomes a circle (or ellipse), or viceversa.
 [gmicqt333] New filter Black & White / Filaments, that throws thousands of particles from the image borders and deform their paths according to the image geometry.
 [gmicqt333] New filter Degradations / Noise [Gradient] adds noise to image gradients (rather than image values) then reconstruct the corresponding image by solving the Poisson equation (with FFT).
 [stdlib333] New command
canny
, and the filterEdges (Canny)
perform Canny edge detection on selected images.

[stdlib333] New commands
clut2hald
andhald2clut
convert 3D CLUT to 2D HaldCLUT formats. 
[stdlib333] Command
display
gets a new mode to display a 1px outline around each primitives of a 3D mesh. It also now support setting/getting the 3D pose by the user through the variable$_display_3d_pose
.
 [core333] Command
rand
is now able to generate random values according to a userdefined probability density function.

[mathcore333] New function
warp(A,wA,hA,dA,sA,B,wB,hB,dB,sB,_mode,_interpolation,_boundary_conditions)
returns the warped version of the imageA
(viewed as a vector) by the warping fieldB
. This is the mathevaluator analog to thewarp
command. 
[mathcore333] New function
permute(A,wA,hA,dA,sA,permutation_string)
returns the permuted version of the imageA
(viewed as a vector). This is the mathevaluator analog to thepermute
command. 
[mathcore333] New function
mirror(A,wA,hA,dA,sA,axes_string)
returns the mirrored version of the imageA
(viewed as a vector). This is the mathevaluator analog to themirror
command. 
[mathcore333] New function
cumulate(A,_wA,_hA,_dA,_sA,_axes_string)
returns the cumulated version of the imageA
(viewed as a vector). This is the mathevaluator analog to thecumulate
command. 
[mathcore333] New function
normalize(A,min_value,max_value)
returns the normalized version of the vectorA
. This is the mathevaluator analog to thenormalize
command. 
[mathcore333] New function
noise(A,amplitude,_noise_type)
returns the noisy version of the vectorA
. This is the mathevaluator analog to thenoisy
command. 
[mathcore333] New function
index(A,P,nb_channelsP,_dithering,_map_colors)
returns the indexed version of the image ‘A’ by the colormap ‘P’. This is the math evaluator analog to commandindex
. 
[mathcore333] New function
histogram(A,nb_levels,_min_value,_max_value)
returns the histogram of the vectorA
. This is the mathevaluator analog to thehistogram
command. 
[mathcore333] New function
equalize(A,nb_levels,_min_value,_max_value)
returns the equalized version of the vectorA
. This is the mathevaluator analog to theequalize
command. 
[mathcore333] New function
hypot()
computes the length of the hypothenuse. 
[mathcore333] New function
isconst()
returns1
or0
whether the given argument is a constant (value known at compilation time) or not.
Version 3.3.2:
 [gmicqt332] New filter Rendering / Warped Rays render a spirallike shape on the image. It uses the new command
shape_rays
added to thestdlib
.

[stdlib332] New command
histogram_masked
computes the histogram on masked regions of an image. 
[stdlib332] Command
dijkstra
is now a custom command and has been recoded from scratch. This command computes the minimal path between two vertices of a graph.

[mathcore332] New functions
da_push_heap()
andda_pop_heap()
insert/remove elements in/from a dynamic array viewed as a minheap structure. Useful to manage priority queues from the math evaluator.
Version 3.3.1:
 [gmicqt331] New filter Arrays & Tiles / Loose Photos simulates an effect of loose photos that are spatially arranged to recreate a global picture.
 [gmicqt331] New filter Details / Sharpen [Alpha] implements a new multiscale image sharpening algorithm that produces very few halos. New associated command
sharpen_alpha
is also available for script developers.
 [stdlib331] Command
font
returns a font identifier that can be used in text drawing commands, to draw text with more various fonts than the default one.

[stdlib331] Command
font2gmz
converts a.otf
or.ttf
font file as agmz
font file that can be used to draw text with custom fonts. 
[stdlib331] Commands
split_alpha
andmerge_alpha
split an image into several levels of details, that can be recomposed afterwards with alphablending.
 [mathcore331] New function
ispercentage(arg)
returns1
or0
whetherarg
ends with a%
or not.
improvements / Modifications:
Version 3.3.5:
 [stdlib335] Command ‘inpaint_pde’: Allow ‘nb_scales’ to be determined as the minimal image size at lowest scale.
Version 3.3.4:
 [mathcore334] Removed predefined variable
v
in math evaluator (useu(1,1)
instead).
Version 3.3.3:

[mathcore333] Function
permut()
has been renamed asperm()
. 
[core333] G’MIC interpreter now discards possible comments passed in the
commands_line
argument of G’MIC API functions. 
[core333] Community filters are now included by default in the CLI tool
gmic
as well as in thelibgmic
library. 
[stdlib333] Commands
display
: When displaying 3D objects, pressing keyP
not print the 3D pose matrix onstdout
.
Version 3.3.2:

[gmicqt332] When updating filters, the filter tree is refreshed before the dialog window saying the update has been done shows up.

[gmicqt332] Updated plugin code to make it work with API changes introduced in GIMP development version v.2.99.12.

[gmicqt332] Windows installer updated to include missing DLLs from latest GIMP release 2.10.36.

[packaging] Put back the
CMakeLists.txt
file in the project root folder, to allow compilinggmic
withcmake
.
Version 3.3.1:

[core331] Removed possibility of having standalone
{ ... }
blocks in scripts. Now{ ... }
can be only used for constructs that require adone
ending item. 
[core331] Command
text
can now use a custom font defined as an image in the list, in addition to a imagevalued variable name. 
[stdlib331] Command
img2str
has been recoded from scratch. It returns the content of the selected images, as special G’MIC input strings. 
[stdlib331] Command
display
: Add forward/backward modes for 3D mesh animation. 
[stdlib331] Command
text_outline
now accepts a custom font as argument. 
[stdlib331] Command
input_obj
: Improve import of.obj
mesh with pervertex defined colors. 
[stdlib331] Command
xcrop
: Single userdefined crop now applies on all selected images.
Bug fixes:
Version 3.3.5:
 [core335] Fix: Conditions involving simple expressions inside double quotes and containing a
$
were not evaluated correctly.  [stdlib335] Command ‘parse_cli_bashcompletion’: Fix parsing of choicevalued arguments.
Version 3.3.4:
 [mathcore334] Fix possible side effects in math evaluator, that happened when math compiler was trying to optimize the use of some operator (e.g.
x=3; (x^1)=4
was setting4
to variablex
).
Version 3.3.3:

[gmicqt333] Fix management of dynamic interfaces (for filters that use it) when the “Preview” box is unchecked.

[core333] Fix wrong parsing of
xN
repetition suffix ininput
command.
Version 3.3.2:
 [mathcore332] Fixed functions to remove elements from a dynamic array. When the array became too large, suppressing elements was not possible.
Version 3.3.1:
 [gmicqt331] Fix aspect ratio of preview error when using
gui_error_preview
.