## GEGL-0.4.4 2018-06-02

### Core

Point filters with need for format conversion of input are now parallel. Added swap-reading, swap-writing, swap-read-total and swap-write-total properties to GeglStats.

### Buffer

Trim tile-cache when shrinking. Added reading locks to tiles further improving concurrent access tolerance of GeglBuffer.

### Operations

threshold: operating format changed from linear to perceptual unsharp-mask: add rename standard-deviation and scale properties to Radius and Amount, add Threshold property. recursive-transform now supports applying multiple transformations simultanously. Fixed integer overflow due to logic error in pixelize. New operation: gegl:abs which negates negative values. New operation in workshop: selective-hue-saturation.

### Contributors

Alan Mortensen, Alexandre Prokoudine, Daniel Korostil, Debarshi Ray, Dimitris Spingos (Δημήτρης Σπίγγος), Ell, Marco Ciampa, Michael Schumacher, Miroslav Talasek, orbea, Øyvind Kolås, Øyvind "pippin" Kolås, Piotr Drąg, Rūdolfs Mazurs, and Tobias.

## GEGL-0.4.2 2018-05-15

### Build

Abort early if autoreconf fails, remove unused bits, default to -Ofast as CFLAGS.

### GeglBuffer

Improve concurrency for trimming and destruction of tile caches. Improve cache invalidation during partial mipmap regeneration.

Do new cheap clones of buffers with new internal gegl-buffer backed tile-backend.

Do not keep cached sampler in buffer it makes cache invalidation hard, and for performance/threading it is better to create ones own samplers anyways. The old API still exists, though parts of it is now deprecated. The single special case where gegl_buffer_sample remains somewhat performant is with the NEAREST sampler, for all other samplers creating a caching sampler is better.

### Operations

operation: add GeglOperationAreaFilter::get_abyss_policy() vfunc Copyright notice improvements to spherize, color-overlay. ff-save: implement defines handling compilation with ffmpeg 2.3-2.7, 4.0 compat.

Improved multi-threaded performance of panorama-projection and other transformation operations through optimizations in buffer and base-classes.

### Contributors

code improvements and translations from: Daniel Korostil, Debarshi Ray, Dimitris Spingos (Δημήτρης Σπίγγος), Ell, Franz Brausse, Jehan, Jordi Mas, Marco Ciampa, Øyvind Kolås, and Sebastian Pipping.

## GEGL-0.4.0 2018-04-26

GEGL 0.4.x is a stable release series of GEGL to have a stable API and ABI to go with GIMP-2.10. When the need arises to break API or ABI compatibility the 0.4.x series will get its own branch and unstable API experiments and development, 0.5.x will happen in master. For now though master will track the 0.4.x series.

### Core

Change GeglParamSpecSeed from int to uint to match the value range of GeglRandom’s seed.

### Operations

ripple fixed remaining issues needed to remove legacy GIMP plug-in in GIMP. spherize, requrise transform and color-overlay moved out of workshop. ppm-load ported to GIO.

Contributors to this release: Ell, Piotr Drąg, Anders Mortensen, Anders Jonsson, Marco Ciampa, Daniel Korostil, Øyvind Kolås, Jon Nordby and Simon Budig.

## GEGL-0.3.32 2018-04-16

### Core

Change GeglParamSpecSeed from int to uint to match the value range of GeglRandom’s seed.

### Operations

Limit allocations in ppm-load to 2GB CVE-2018-10114

Contributors to this release: Piotr Drąg, Øyvind Kolås, Sebastian Rasmussen and Michael Natterer.

## GEGL-0.3.32 2018-04-13

### Operations

panorama-projection: added reverse transform, which permits using GIMP for retouching zenith, nadir or other arbitrary gaze directions in equirectangular, also known as 360x180 panoramas.

Added abyss-policy to base class for scale ops, making it possible to achieve hard edges on rescaled buffers.

### GeglBuffer

Improved performance and correctness, avoid incorrectly gamma/ungamma correcting alpha in u8 formats, for a tiny 2-3% performance boost.

Keep track of valid/invalid areas on smaller granularity than tiles in mipmap.

Various micro-optimizations in display paths, with minuscle performance impact.

Contributors to this release: Alexandre Prokoudine, Ell, Jehan, Marco Ciampa, Michael Natterer, Øyvind Kolås and Piotr Drąg.

## GEGL-0.3.30 2018-03-19

### GeglBuffer:

gegl_buffer_get now treats the final argument, which used to control only abyss behavior as a bit-field that also can have interpolation method to use when scaling down from the next larger mipmap level, valid values are GEGL_BUFFER_FILTER_NEAREST, GEGL_BUFFER_FILTER_BILINEAR, GEGL_BUFFER_FILTER_BOXFILTER and GEGL_BUFFER_FILTER_AUTO.

All scaling is now done on linear data, making future results of mipmap computations more valid as well as providing correct results for scaled down thumbnails in user interfaces. Optimized code paths have been added for 8bit buffers (using 12bit linear as processing space) and other formats like 16bit float are now correctly handled by going through generic code paths.

The scaling code paths has also been instrumented and optimized for performance. Improvements to pixel data fetching and setting functions leads to performance boosts across many GEGL operations, as well as display code paths in GEGL using applications. For some performance critical display cases performance should have improved 2-3x over last release.

Improvements to logic switching to boxfiltering behavior and improve cubic samplers box filtering by using a linear sampler and a nearest sampler for the boxfiltering for the linear sampler. This slows down scaling down with the cubic sampler by half, but is less prone to aliasing, while keeping the faster code paths for the fast but not as bad as nearest - bilinear.

gegl_buffer_copy gegl_buffer_clear and gegl_buffer_set color now only emit a single changed signal on the buffer.

### Operations:

c2g and stress have gained the ability to toggle the influence of the shadow neighborhood or not, the new default is to not improve shadow detail; yielding a bit more natural renditions.

color-to-alpha now contains improvements from experiment in workshop which is gone.

Fixed crahses in median-blur.

### Transform ops:

Only rasterize inside the transformed polygon, saving cpu. The optimizations mentioned for GeglBuffer giving boosts and improved quality.

### New ops:

Mean-curvature blur.

News ops in workshop:

color-overlay, enlarge, inpaint, domain-transform, recursive=transform.

Contributors for this release were: Alan Mortensen, Alexandre Prokoudine, Debarshi Ray, Dimitris Spingos, Ell, Felipeek, Inaki Larranaga Murgoitio, Jehan, Jordi Mas, Mario Blättermann, Michael Natterer, Øyvind Kolås, Piotr Drąg, Rūdolfs Mazurs, and Thomas Manni.

## GEGL-0.3.28 2018-01-23

### Core

A new GeglStats object, which provides realtime statistics/profiling for use in UIs. Automatically copy-on-write clone input buffers for auto-threading of operations.

### Buffer

Many significant optimizations as well as a correctness improvement, mipmap scaling and rendering is now done correctly in linear space, thus GIMP will not only produce the right results but also avoid gamma errors in thumbnails and viewport.

Among the signifcant performance boosters are per buffer-instance tile queues, adaptive sampler pre-fetch caching and dedicated code paths for fetching columns of pixels. Along with many multi-threadedness improvements due to more significant testing.

### Operations

Mipmap tuning and performance improvements to gaussian blur added dedicated code paths for nearest sampler in transform ops. more generic RGBE file handling ff-load: permit decoding audio files as well as video files. various code cleanups

## GEGL-0.3.28 2018-01-23

### Core

    A new GeglStats object, which provides realtime statistics/profiling for use
    in UIs.  Automatically copy-on-write clone input buffers for auto-threading of
    operations.

### Buffer

    Many significant optimizations as well as a correctness improvement,
    mipmap scaling and rendering is now done correctly in linear space,
    thus GIMP will not only produce the right results but also avoid gamma
    errors in thumbnails and viewport.

    Among the signifcant performance boosters are per buffer-instance tile queues,
    adaptive sampler pre-fetch caching and dedicated code paths for fetching
    columns of pixels. Along with many multi-threadedness improvements due to
    more significant testing.

### Operations

    Mipmap tuning and performance improvements to gaussian blur
    added dedicated code paths for nearest sampler in transform ops.
    more generic RGBE file handling
    ff-load: permit decoding audio files as well as video files.
    various code cleanups

## GEGL-0.3.26 2017-12-14

### Core

Make gegl-chain parser more robust wrt parsing babl formats, and improved - translatable - error handling.

Add capabilitity to use per thread input buffers for multi-threaded filter/composer/composer3 ops, this reduces contention over the buffer tile locks and improves multi-threaded performance in some cases without reducing it for the majority of cases.

### Buffer

Threads no longer blocked while locking tiles, and fixes to gegL_buffer_copy. Better clone accounting in tile cache.

### Operations

      exp-combine: code cleanup/simplification
      libraw: make bounding box handling consistent with rest of code.
      transform ops: re-enabled multi-threading, reduced some format
    conversions and added wiggle-room in required/invalidated calculations.

## GEGL-0.3.24 2017-11-24

### Core

Flush opencl side buffers before multi threaded iteration for point ops, making multi threading + opencl work.

Add meta-op graph case to gegl_operation_get_source_node

Versioning of installed .mo files restored.

Enable multi-threaded processes by default.

Stop enabling opencl by default, performance with beignet is worse than multi-threading, and with nvidia blank results are being observed in GIMP; maybe improved opencl kernels would make it competetive with multi threaded cpu?

Deprecate gegl_operation_context_get_source, replace usage with gegl_operation_context_get_object.

### Buffer

More multi-thread proofing.

### Operations

median-blur: now op coming out of the GEGL workshop.

exposure: increase old lingering constant enabling larger range of valid inputs.

transform: turn off multi-threading, it was currently degrading overall performance.

ppm-load: fix file-loader registration.

### Contributors

Debarshi Ray, Ell, Jordi Mas, Øyvind Kolås, Richard Kreckel, Thomas Manni, Marco Ciampa, Alexandre Prokoudine and Piotr Drąg.

## GEGL-0.3.22 2017-11-12

### Core

Refactored graph traversals to use topological sorts.

Completely avoid loading plug-ins .so with -gpl3 in filename unless the application using GEGL explicitly has enabled GPL3 operations.

Replace custom property redirection for meta-ops with GBinding.

Reduced temporary buffer allocation overhead in mipmap downscaling.

Do divide and conquer on higher level in point filter/composer op base-classes.

Migrated from intltool to GNU gettext

### Buffer

Tweak nohalo and lohalo samplers to be orders of magnitude faster for scale factors > ~3% while also removing possible hangs.

### Operations

Improved threading awareness/capabilities of gegl:copy-buffer, gegl:wind, gegl:color-enhance, gegl:photocopy, gegl:matting-levin, npd, contrast-curve, noise-spread, noise-pick, noise- slur, transform ops.

Use of more modern GLib APIs like g_clear_ and make use of the fact that g_free is already NULL safe.

Fixed grayscale behavior of gegl:noise-hurl. OpenCL vs CPU consistency fix for gegl:threshold, and optimization of gegl:wavelet-blur by decomposing to two 1d passes. median-blur, perform binning in a more perceptual space. hue-chroma: added OpenCL support threshold: make opencl match cpu wavelet-blur: decompose for performance illusion: performance improvement permitting partial result computation grey: add fast path for alpha-less input buffers.

new ops in workshop: spherize, color-to-alpha-plus, shadows-highlights

### With contributions from:

Debarshi Ray, Ell, Jehan, Jordi Mas, Marco Ciampa, Massimo, Nicolas Robidoux, Niels De Graef, Øyvind Kolås, Piotr Drąg and Thomas Manni.

## GEGL-0.3.20 2017-08-15

### Core

Increased max thread limit to 64 threads, and improvements to both buffer and progress reporting thread safety, point sized buffers are handled better and COW-tiles are now lock free. Serialization and parsing has been made more robust.

### Operations

Improved property meta data for many opertions, two new operations gegl:spiral and gegl:mix.

ff-load/ff-save: make audio frame handling more generic.

c2g, avoid possible infinite loop on transparent areas.

Fixes to gaussian-blur and ops core for multi-threaded blurring.

### New binary

gcut, a video editing engine for GEGL has also been added to the repo. It permits reusing image filters written as GEGL operations for video, and basic motion graphics. The engines data model is currently fully functional for text-file based input and offline rendering, an experimental user interface for this video editing system is also currently being worked on.

### Contributors

Øyvind Kolås, Michael Natterer, Jehan, Dimitris Spingos, Piotr Drąg, Alexandre Prokoudine, Eugene Hopkinson, Ell, Thomas Manni, Jordi Mas, Edward E, Jan Vesely, Arfrever Frehtes Taifersar Arahesis.

## GEGL-0.3.18 2017-05-31

### Operations

warp: performance improvements displace, map-absolute, map-relative: abyss handling and more buffer-source: improved invalidation signalling text,path: use endian agnostic cairo pixel formats opencl implementations of: noise-hsv, diffraction-patterns, gaussian-blur-selective and motion-blur-linear.

### Core

rerrange connection handling for nodes when changing operation. gegl-path: improvements for corner cases found in warp add validation of roi in gegl_operation_get_bounding_box

### Contributors

Ell, Anton Gorenko, Øyvind Kolås, Piotr Drąg, Mario Blättermann

## GEGL-0.3.16 2017-05-15

### Core

Improvements to gegl-chain serialization and documentation. Remove remnants of deprecated gegl-graph syntactic sugar for C

### Buffer

Avoid choking on 0x0 rectangles, handle implicit mipmap generation for 15bpc and half precision float pixelformate.

### Operations

Many operations have gotten an additiona meta-ui description layer sprinkled on top. And The C source code of the operations is no longer kept as a meta-data key on the binary, with a shrink of ~10mb it might even impact startup time.

New operations: newsprint/spachrotyzer. Moved out of workshop: unpremultiply New in workshop: spiral drop-shadow: improve edge mode of blur, to work on tiny radiuses. transform-ops: ported to the new chanting system ff-load: readjust frame accurate mp4 seeking for newer ffmpeg. file-loading ops: stop some crashes happening due to invalid/lacking properties. npy-save, jpg-save, png-save: port to GIO. raw-load: rotate bounding box based on image meta-data.

### Tests

Improve testing by using hashes of autogenerated reference images for regression testing, thus causing fewer manual steps to add an op with its tests. Some XML based tests removed as they were fully superceded by new automated tests.

### Documentation

Replaced dynamic client side js content with static operation gallery, incremental improvements to website content. This includes updates to the meta-data in the .C files of operations.

### Contributors

Daniel Mustieles, Debarshi Ray, Dimitris Spingos (Δημήτρης Σπίγγος), Ell, Jan Vesely, Jean-Baptiste Mayer, Marco Ciampa, Mario Blättermann, Martin Blanchard, Michael Natterer, nick black, Øyvind Kolås, Piotr Drąg, Thomas Manni,

## GEGL-0.3.14 2017-02-27

### Buffer

- changed gegl_buffer_set to accept mipmap level scaled rectangles, similar to gegl_buffer_get and gegl_buffer_iterator_new/_add

### Operations

- made mipmap preview rendering capable: gblur-1d/gaussian blur, sinus, transform (rotate, scale, perspective etc), snn-mean

- noise-perlin: remove unused random seed property

- exposure: remove gamma property

- save-pixbuf: allocate less temporary memory

- load-pixbuf: fix rowstride related crasher

### Translations

Slovenian, Russian, Greek, Polish and Catalan translations updated.

### Contributors

Alexandre Prokoudine, Debarshi Ray, Dimitris Spingos (Δημήτρης Σπίγγος), Jordi Mas, Martin Srebotnjak, Øyvind Kolås

## GEGL-0.3.12 2017-02-13

### Operations

- new ops: edge-neon, image-gradient, slic, wavelet-blur, waterpixels, watershed

- moved from workshop to common: color-warp, component-extract

- text: remove now unneeded work-around, ability to control vertical positioning, permit <1.0 font-sizes, handle text-color alpha, other improvements.

- lens-distortion: default to transparent background

- crop: bounding box computation simplifications

- noise-rgb: add gamma and distribution properties

- dither: renamed from color-reduction and improved ui/property controls.

- high-pass: do inversion, over and contrast in non-linear RGB

- noise-rgb: new linear and gaussian properties

- transform: added a clip-to-input property

- raw-load: improvements to handling of Sony’s ARW files

- exposure: replaced offset with black-level

- moved from common to workshop: bilateral-filter-fast

- new workshop ops: bayer-matrix, linear-sinusoid, shadows-highlights, integral-image, segment-kmeans,

- removed ops: gaussian-blur-old

### Core

- less locale dependent serializations/parameters

- fix local raw file detection of ARW and CR2 files

- gegl_memset_pattern performance improvement

- clean up the way we drop references and free memory

- static caching of some frequently used babl formats/types.

- mipmap preview render code fixes for the following subset of operations: point operations (filter, and composer subclasses), integer translate, crop.

### Translations

Catalan, German, Greek, Italian, Polish, Portuguese, Slovenian, Swedish translations updated

### Contributors

Piotr Drąg, Marco Ciampa, Sergey "Shnatsel" Davidoff, Ell, Øyvind Kolås, Anders Jonsson, Thomas Manni, Jordi Mas, Michael Natterer, Peter O’Regan, Jehan Pagès, Sebastian Rasmussen, Debarshi Ray, Dimitris Spingos (Δημήτρης Σπίγγος), Martin Srebotnjak,Miroslav Talasek.

## GEGL-0.3.10 2016-11-06

### buffer

- stop caching tiles in a singly-linked list; use a hash table only

- adjust box filtering threshold of linear/cubic samplers

- add const qualifier to input rect parameter of gegl_tile_backend_set_extent()

- don’t acquire tile storage lock in NN sampler when not using multithreading

### operations

- rgbe-load: add image/x-hdr mimetype

- map-relative: sample from the pixel centers for integer vectors

- warp: fix and rework the operation, now matches more closely the iWarp behaviour

- color-reduction: add arithmetic dithers; inline for loop for each different method

### binary

speed up some commands by not intializing opencl

### json

make bundleable

### translations

German, Greek, Italian, Occiatan, Polish, Portuguese, Russian, Serbian, Slovenian, Spanish updated

### Contributors

Simon Budig, Marco Ciampa, Piotr Drąg, Ell, Øyvind Kolås, Roman Lebedev, Daniel Mustieles, Michael Natterer, Jehan Pagès, Martin Pelikán, Yolanda Álvarez Pérez, Alexandre Prokoudine, Tiago Santos, Dimitris Spingos, Martin Srebotnjak, Cédric Valmary, Милош Поповић.

## GEGL-0.3.8 2016-06-14

### Buffer

- add box filtering downsampling paths to linear and cubic resamplers to improve default results

- clear hot tile when removing a tile from the cache

### operations

- added: vhsfix (workshop), gegl-gegl (commandline syntax)

- exr-save: port from deprecated chanting system

- ff-save: increase max output packet size from 200kb to 1mb

- gegl-path: add ability to compute y coordinate for a given x

- transform: treat infinite and empty rectangles correctly

- webp: port webp-save to GIO for URI handling

- ops progress:

- add gegl_operation_progress function to report processing progress

- use the new function in cartoon and distance-transform ops

- ops metadata:

- remove custom multiline paramspec

- set multiline ui_meta on more ops

- add reference meta and use it in various ops

### gegl-binary

- add simple video filtering

- encode audio with video

- permit dragging and zooming in more ui states

- deal correctly with integers in ui

- show prop editor for operation if op chain passed at commmandline

### core

- gegl-chain

- implement keyframing of strings

- suggest possible ops in warninge/errors

- gegl-node: relay property change notifies from operation to node

- gegl-serialize:

- improve error handling for parsing of properties

- start handling relative coordinates

- use path instead of curve

- json: misc improvements and fixes

- opencl: fix RGB luminance constants

- docs: fixes, update some info in directory overview

- handlers:

- allow registration of operations by MIME type

- register MIME types for loaders

- guess file types by sniffing content

- build: fix luajit detection

### Contributors

Timm Bäder, Martin Blanchard, Mario Blättermann, Ell, Piotr Drąg, Michael Henning, Øyvind Kolås, Hartmut Kuhse, Michael Natterer, Nils Philippsen, Alexandre Prokoudine, Debarshi Ray, Kristian Rietveld, Dimitris Spingos, Martin Srebotnjak, Pino Toscano, Cédric Valmary, Jan Vesely

## GEGL-0.3.6 2016-03-12

### buffer

COW (Copy on Write) handling for gegl_buffer_clear.

### operations

- added: saturation, gaussian-blur-selective

- ff-load/ ff-save: updated to work with ffmpeg-3.0,configuration of codec/format. misc code cleanup, and meta data improvements, gio (url loading) support in more loaders.

- convolve-generic: optimized paths for common parameters and 3x3 size.

- removed: dcraw-load

- jp2, webp, svg:: make use of GIO for URI handling

- XML: permit serializing a segment/chain of the graph

- gegl-binary:

- permit setting properties of commandline passed ops, as well as connecting buffers to aux and other input pads.

- zoom in/out at cursor position on scroll wheel events.

- processing: improvements to meta-ops

### Contributors

Øyvind Kolås, Thomas Manni, Michael Natterer, Nils Philippsen, Debarshi Ray, Martin Blanchard, Justin Lecher, Massimo Valentini, Jonathan Tait, Mukund Sivaraman, Alexandre Prokoudine, Piotr Drąg, Nanley Chery, Colin Waters

## GEGL-0.3.4 2015-11-24

- build: do not install examples in path

- ff-save fully store all in-flight codec contexts before closing files

- ff-load improvements to seeking accuracy

- transform: make fast paths skip pixel format conversions

### Contributors

Øyvind Kolås, Debarshi Ray and Nils Philippsen

## GEGL 0.3.2 2015-11-22

### Operations

- new operations: libraw based raw loading op, tiff-save and tif-load, maze, sepia

- ff-load and ff-save revived, with support from thegrid.io

- apply-lens uses less memory, higher precision computation.

- disable automatic threading on many ops where it fails

- force more operations to prefer operating on linear RGB data for more accurate/physical processing.

### Buffer:

- implement abyss paremeter on gegl_buffer_copy and gegl_buffer_blit

- Added start of a microraptor gui based image viewer/non destructive editor.

- Optimizations to scaled blitting (speeds up most GEGL UIs a bit)

### Contributiors

Alexandre Prokoudine, André Tupinambá, Claude Paroz, Daniel Mustieles, Debarshi Ray, Dimitris Spingos, Elle Stone, Jehan, Jordi Mas, Marco Ciampa, Martin Blanchard, Martin Srebotnjak, Massimo Valentini, Michael Henning, Michael Natterer, Necdet Yücel, Pedro Albuquerque, Piotr Drąg, Roman Lebedev, Sven Neummann, Thomas Manni, Vilson Vieira, akash akya and Øyvind Kolås.

## GEGL-0.3.0 2015-06-03

- Improvements to thread safety and parallelism.

- Lower overhead graph travesal due from rewrite of visitors

- OpenCL support now enabled by default when detected.

- Experimental multithreading, enable by setting GEGL_THREADS=<number of threads> in the environment.

- Experimental mipmap rendering, which permits transparent rendering of previews on smaller sized versions, enable by setting GEGL_MIPMAP_RENDERING=true in the environment.

### Operations

- new operations: alien-map, antialias, apply-lens, bilateral-filter, bump.map, cartoon, channel-mixer, color-enhance, color-exchange, color-reduction, color-rotate, convolution-matrix, copy-buffer, cubism, deinterlace, diffraction-patterns, distance-transform, displace, edge, emboss, engrave, exposure, fractal-trace, high-pass, image-compare, illusion, invert-gamma, lens-flare, linear, linear-gradient, mosaic, motion-blur-circular, motion-blur-zoom, noise-cell noise-cie-lch, noise-hsv, noise-hurl, noise-pick, noise-rgb, noise-simplex, noise-spread, n-point deformation ops, oilify, panorama-projection, photocopy, plasma, radial-gradient, red-eye-removal, scale-size-keep-aspect, softglow, stretch-contrast, texturize-canvas, tile-glass, tile-seamless, tile-paper, tile, warp, whirl-pinch, wind, cache, cast-format, lcms-from-profile, npy-save, webp-load, webp-save, scale-ratio, scale-size, seamless-clone, sinus, supernova, value-propagate, video-degradation

- reimplementation of gaussian-blur faster and more accurate

- support for using URIs in image loaders

### Buffer

- New default tile backend, doing disk writes in a separate thread.

### Contributors

Albert F, Alexandre Prokoudine, Alexia Death, Akash Akya, Anders Jonsson, Andika Triwidada, Andreas Fischer, Angh, Awaw Fumin, Barak Itkin, Bruce Cowan, Carlos Zubieta, Cédric Valmary, Chris Leonard, Christian Kirbach, Clayton Walker, Daniel Mustieles, Daniel Nylander, Daniel Sabo, Debarshi Ray, Denis Knoepfle, Dimitris Papavasiliou, Dimitris Spingos, Djavan Fagundes, Dov Grobgeld, Elle Stone, Enrico Nicoletto, Felix Ulber, Florian Klemme, Francisco Vila, Fran Diéguez, Georges Basile Stavracas Neto, Hans Lo, Harald Korneliussen, Hartmut Kuhse, Inaki Larranaga Murgoitio, Isaac Wagner, Jan Vesely, Jan Vesely, Jehan, Jon Nordby, Jordi Mas, Kalev Lember, Kristjan Schmidt, Marco Ciampa, Marek Dvoroznak, Maria Mavridou, Martijn van Beers, Martin Nordholts, Martin Srebotnjak, Massimo Valentini, Matej Urbančič, Maxime Nicco, Michael Henning, Michael Muré, Michael Natterer, Mikael Magnusson, Miroslav Talasek, Muhammet Kara, Mukund Sivaraman, Nana Chery, Nick Black, Nicolas Robidoux, Nils Philippsen, Norm Murray, Pascal Giessler, Piotr Drąg, Quentin Glidic, Rafael Ferreira, Rasmus, RPG, Rūdolfs Mazurs, Samir Ribic, Samuel Pitoiset, sebul, Simon Budig, Sven Claussner, Téo Mazars, Thomas Manni, Tim Lunn, Tim Mooney, Ting-Wei Lan, Tom Stellard, Ulf-D. Ehlert, Vadim Rutkovsky, Victor Oliveira, Ville Sokk, Vincent Untz, Yongjia Zhang, Yongjia Zhang, Øyvind Kolås and 周 周.

## GEGL-0.2.0 2012-04-02

- OpenCL support

- build improvements.

- High level API to apply ops directly to buffers with arguments.

- Final bits of translation infrastructure.

- Invalidate regions when disconnecting input pads.

### Operations

- New operation: global-matting

- Allow transform core to do perspective transforms.

- Added string based key/value pairs to operations.

- Added arguments for dealing with scaled down preview rendering.

- Added human interaction ranges and non-linear mapping to properties.

### Buffer

- Removed broken lanczos sampler.

- Add gegl_buffer_set_color and gegl_buffer_set_pattern

- Added ability to drop cached tiles.

- Added API for handling abyss policy (not implemented yet)

- Avoid iterating global tile cache when flushing/destroying buffers that have no tiles in the cache.

### Contributors

Øyvind Kolås, Martin Nordholts, Hans Petter Jansson, Mikael Magnusson, Victor Oliveira, Nils Philippsen, Kevin Cozens, Michael Muré, Jan Rüegg, Michael Natterer, Michael Henning, Massimo Valentini, Alexandre Prokoudine and Jon Nordby.

## GEGL-0.1.8 2011-11-18

- New operations: spread, vignette, map-relative, noise-reduction, plasma, fractal-trace, exr-save, lens-correct, emboss, cubism, ripple, color-to-alpha, color-rotate, red-eye-removal, convolution-matrix, deinterlace, polar-coordinates, lens-distortion, pixelise.

- Split GeglView GTK Widget into separate utility library

- build/test improvements.

### Buffer

- Added lohalo resampler

- API and infrastructure for doing non-affine resamplings.

### Contributors

Øyvind Kolås, Michael Natterer, Barak Itkin, Nils Philippsen, Mukund Sivaraman, Jon Nordby, Emilio Pozuelo Monfort, Étienne Bersac, Martin Nordholts, Victor Oliveira, Michael Muré, Michael Schumacher, Adam Turcotte, Nicolas Robidoux, Robert Sasu, Massimo Valentini, Joao S. O. Bueno, Hans Lo, Zbigniew Chyla, David Evans and Javier Jardón.

## GEGL-0.1.6 2011-02-13

- New operations: max-rgb, pixelise, motion blur.

- Fixed a bug in matting-levin that made GEGL halt due to errors detected by babl sanity code, this made 0.1.4 be unusable if you had all dependendencies when building.

- build/test improvements.

### Buffer

Added API to use external tile backends, allowing to plug-in alien tilebackends, for GIMP/Krita/OSM or similar.

### Contributors

Tobias Ellinghaus, Øyvind Kolås, Barak Itkin and Martin Nordholts

## GEGL-0.1.4 2011-01-20

### Operations

- save (chooses delegate save op automatically)

- rgbe load/save

- jpeg200 load/save

- ppm load/save

- map-absolute (GIMP cage tool gsoc helper op)

- whirl and pinch

- mirrors

- grid render

- fixed imagemagick fallback load op

- fixed pipe based dcraw wrapper

- GSoC 2010 ops: exp-combine, reinhard05, fattal02, mantiuk06, matting-levin

- Various source and build improvements.

- improvements towards threaded rendering

### Buffer

- refactored away some constant overhead made GeglBufferIterator API public

### Contributors

Michael Natterer, Øyvind Kolås, Vincent Untz, Kaja Liiv, Nils Philippsen, Étienne Bersac, Martin Nordholts, Debarshi Ray, Danny Robson, Stuart Axon, Kao, Mukund Sivaraman, Ruben Vermeersch, Barak Itkin, Michael Muré, Mikael Magnusson, Patrick Horgan and Andy Gill.

## GEGL-0.1.2 2010-02-07

- GeglLookup, configurable floating point lookup tables for lazy computation.

- Use GFileIOStream in GeglTileBackendFile.

- Optimizations: in-place processing for point filters/composers, SIMD version of gegl:opacity, avoid making unneccesary sub-buffers, removed some manual instrumentation from critical paths, improved speed of samplers.

- Added xml composition/reference image based regression tests.

- Added performance tracking framework.

- Syntactic sugar using varargs for constructing gegl graphs from C.

- Build fixes on cygwin,

- Gegl# fixes.

- Initial, but unstable code towards multithreading.

- Improvements to lua op in workshop.

- Added new resamplers upsize, upsharp, upsmooth, downsize, downsharp and downsmooth.

- Removed gegl:tonemap and gegl:normal ops.

### Contributors

    Martin Nordholts, Sven Neumann, Nils Philippsen, Adam Turcotte,
    Danny Robson, Michael Schumacher, Ruben Vermeersch, Øyvind Kolås,
    Javier Jardón, Yaakov Selkowitz and Michael Natterer, Kaja Liiv
    and Eric Daoust.

## GEGL-0.1.0 2009-07-01

- Renamed gegl:load-buffer to gegl:buffer-source and gegl:save-buffer to gegl:buffer-sink (but the old names still work)

- Represent colors using doubles instead of floats (this change is independent from internal processing)

- Removed the GTK+ UI parts of the gegl binary and turned gegl into a pure command line tool (which can still visualize stuff with help help the SDL based display operation)

- Consider G_MININT/2, y=G_MININT/2, width=G_MAXINT, height=G_MAXINT as the only valid region in which processing may occur. Processing outside of this region is undefined behaviour.

- Added support for storing allocation stack traces for GeglBuffers so that debugging buffer leaks becomes much easier

- Made small changes and cleanups of the public API, e.g.

- Removed gegl_node_adapt_child()

- Made GeglConfig an explicit object

- Removed most of the ifdeffed stuff to mask away internal structures

- Added gegl_rectangle_infinite_plane() and gegl_rectangle_is_infinite_plane()

- Added new sampler GeglSamplerSharp

- Added format property to gegl:buffer-sink

- Cleaned up and made gegl:introspect work again

- Add a bunch of test cases using the automake test system (make check) and also port buffer tests to automake

- General cleanups, bug fixes, increased robustness and improved documentation

### Contributors

Øyvind Kolås, Sven Neumann, Étienne Bersac, Hubert Figuiere, Martin Nordholts, Nicolas Robidoux, Michael Natterer, Ruben Vermeersch, Kevin Cozens, Manish Singh, Gary V. Vaughan, James Legg, Henrik Åkesson, Fryderyk Dziarmagowski, Ozan Caglayan and Tobias Mueller.

## GEGL-0.0.22 2008-12-31

### GeglOperation

- operation names are now prefixed, the ops in GEGL use gegl: as prefix.

- gegl:opacity - combine value and aux mask input when both are available.

- gegl:src-in - deal correctly with extens.

- gegl:path - new op covering the stroke/fill needs of SVG.

- deprecated gegl:shift, the affine family of operations now uses the same fast code paths for integer translations.

### GeglBuffer

- Profiling motivated speed ups in data reading/writing.

- Remove left-over swapfiles from dead processes at startup. • GeglNode

- made gegl_node_add_child and gegl_node_remove_child public API. (#507298)

### GeglPath

Vector path representation infrastructure, supporting poly lines and beziers by default, the infrastructure allows extensions from applications with other curve types (smooth curves, spiro curves and others.).

Contributors:

Hubert Figuiere, Sven Neumann, Øyvind Kolås, Michael Natterer, Kevin Cozens, Sam Hocevar, Martin Nordholts, Manish Singh, Étienne Bersac and Michael Schumacher.

## GEGL-0.0.20 2008-10-05

- Build and code clean ups and fixes.

- RAW loader using libopenraw.

### GeglBuffer

- Linear buffer support, amongst other things enabling GeglBuffer API access to external linear buffers in memory.

- Reworked samplers using a shared caching neighbourhood infrastructure.

- YAFR - a new resampler contributed by Nicolas Robidoux.

### GeglVector

Added SVG parsing capability (no serialisation yet).

### GeglOperations

- Marked user visible strings for translation.

- Added a fill operation that renders a path.

### Contributors

Martin Nordholts, Øyvind Kolås, Sam Hocevar, Manish Singh, Hubert Figuiere, Sven Neumann and yahvuu at gmail.com.

## GEGL-0.0.18 2008-06-14

- Configuration both from commandline arguments and at runtime.

### GeglBuffer

- New raw tiled raster file format, used both as swap and stored buffers.

- Sharing between processes through synced swap.

- Babl powered scan iteration infrastructure for efficient access.

- Cubic and lanczos samplers re-enabled.

### Operations

- Use scan iterator for point-filter, point-composer and point-render base classes internally for minimal amount of copies.

- Optimized variants of some point and compositing operations reimplemented using a new data type /g4float/ that allows writing CPU agnostic vectorized code for GCC.

- New temporal filter base class, for operations operating on color values from neighbouring frames in a video stream.

- Autogenerated operation reference installed for use with devhelp.

- New operations: write-buffer, v4l, color-temperature.

### Contributors

Øyvind Kolås, Kevin Cozens, Sven Neumann, Manish Singh, Martin Nordholts, Étienne Bersac, Hans Petter Jansson, Jan Heller, dmacks@netspace.org, Sven Anders, Hubert Figuiere and Geert Jordaens.

## GEGL-0.0.16 2008-02-29

- Install headers for development of external operation plug-ins.

- Added rowstride argument to gegl_buffer_set ()

- Made it possible for sink operations to do chunkwise processing through GeglProcessor. when processed using a GeglProcessor.

- constification of GeglRectangles and babl formats.

- Build and dist fixes, plugged annoying buffer leaks, GEGL now also works on OSX

### Contributors

Øyvind Kolås, Étienne Bersac, Kevin Cozens, Sven Neumann, Manish Singh, Michael Natterer, Hans Brauer, Deji Akingunola, Bradley Broom and Tor Lillqvist.

## GEGL-0.0.14 2007-12-20

- Relicensed under LGPLv3+.

- Per node caches (faster recomputation when properties of nodes in composition change)

- Sampler framework for interpolation.

- Modified API for retrieving scaled buffers gegl_node_blit / gegl_buffer_get.

- Renamed XML serialization and parsing API to be descendants of GeglNode.

- Progress monitoring for GeglProcessor

- New operation base class GeglOperationAreaFilter

- API reference installed and browsable using devhelp.

- New operations: ff-load, mono-mixer, contrast-curve, save-pixbuf, compositing ops from SVG-1.2 draft, value-invert, convert-format, bilateral-filter, snn-mean

### Contributors

Étienne Bersac, Kevin Cozens, Manish Singh, Mark Probst, Martin Nordholts, Michael Schumacher, Mukund Sivaraman, Shlomi Fish, Tor Lillqvist and Øyvind Kolås

## GEGL-0.0.12 2007-02-18

- Swapping out of image pyramid.

- Speedups to text rendering.

- GEGL compiles on win32

- GEGL_SWAP now specifies swapdir location.

- Small refactorings of public API.

- Changed the XML parser/serializer to not use attributes for node properties.

- Improvements to documentation.

- Automagic build environment for operations simplified.

- Internal API for saving/loading GeglBuffers to/from disk.

- Ruby, C# and Python bindings added to version control system (not included in distributed tarball)

### Contributors

Kevin Cozens, Michael Schumacher. Sven Neumann and Øyvind Kolås,

## GEGL-0.0.6 2007-01-07

- hit detection code

- handling of relative/absolute path names for XML.

- merged GeglNode and GeglGraph classes.

- build fixes for Win32 and FreeBSD

- temporarily disabled custom cairo in test application.

- png and EXR improvements.

### Contributors

Dominik Ernst, Kevin Cozens, Øyvind Kolås and Michael Schumacher.

## GEGL-0.0.4 2006-12-29

This was the first public release of GEGL.

- 8bit, 16bit integer and 32bit floating point, RGB, CIE Lab, YCbCr and naive CMYK output.

- Extendable through plug-ins.

- XML, C and Python interfaces.

- Memory efficient evaluation of subregions.

- Tiled, sparse, pyramidial and larger than RAM buffers.

### Operations

- PNG, JPEG, SVG, EXR, RAW and other image sources.

- Arithmetic operations, porter duff compositing operations, SVG blend modes, other blend modes, apply mask.

- Gaussian blur.

- Basic color correction tools.

- Most processing done with High Dynamic Range routines.

- Text layouting using pango

### Contributors

Dominik Ernst, Kevin Cozens, Manish Singh, Martin Nordholts, Michael Natterer. Philip Lafleur, Sven Neumann and Øyvind Kolås.

## GEGL-0.0.0

Contributors:

Calvin Williamson, Caroline Dahloff Daniel Rogers, Garry R. Osgood, Jay Cox and Sven Neumann