----------------------- 2.16 Featured release ----------------------- New import .CUBE files as RGB devicelinks New Read/Write MHC2 tags for Windows GPU access New Support for UTF8 on multilocalized unicode functions New Suppot for OkLab color space, built-in and formatter. Improved floating point transforms float -> integer are now honored as float Improved MSYS2, mingw is now supported Improved proferred CMM, platform and creator now survives profile edition. Fixed tificc now can deal with Lab TIFF Fixed code can now be compiled by a C++17 compiler, "register" keywork use detected at compile time. Fixed Reverted postcript creation that corrupted some interpreters. ----------------------- 2.15 Maintenance release ----------------------- New MESON build system, many thanks to amispark and Lovell Fuller for bringing this. Fixed a bug that caused memory corruption on colord cmsReadRawTag can read portions of tags again. Removing this caused colord to segfault when dumping profiles Added more checks based of fuzzer discoveries. MSYS2 can now compile lcms2 Checked on Apple Silicon M1 and M2 Fixed a bug of fastfloat plug-in that affected Krita CMYK color selector ----------------------- 2.14 Featured release ----------------------- lcms2 now implements ICC specification 4.4 New multi-threaded plug-in several fixes to keep fuzzers happy Remove check on DLL when CMS_NO_REGISTER_KEYWORD is used Added more validation against broken profiles Add more help to several tools ----------------------- 2.13.1 Hot fix ----------------------- Fix for pure white going gray in grayscale transforms. ----------------------- 2.13 Featured release ----------------------- Added support for premultiplied alpha tifficc can now handle alpha channels, both unassociated and premultiplied Better documentation CGATS parser can now deal with very long strings Added Projects for Visual Studio 2020 Travis CI discontinued, GitHub actions used instead Added a very preliminar meson build script (thanks to xclaesse) Added ARM64 target to visual studio 2019 (thanks to gaborkertesz-linaro) Added thread safe code to get time Added automatic linear space detection Added cmsGetStageContextID function Added cmsDetectRGBProfileGamma function configure now accepts --without-fastfloat to turn plugin off autogen.sh has now a --distclean toggle to get rid of all autotools generated files Checked to work on STM32 Cortex-A, Cortex-M families Bug & typos fixing (thanks to many reporters and contributors) ----------------------- 2.12 Maintenance release ----------------------- Added new build-in sigmoidal tone curve Added XCode 12 project Added support for multichannel input up to 15 channels Fix LUT8 write matrix Fix version mess on 10/11 Fix tools & samples xgetopt Fix warnings on different function pointers Fix matlab MEX compilation plugin: cleanup and better SSE detection plugin: add lab to any on float plugin: it can now be compiled as C++ recover PDF documentation, but try to keep it under a reasonable size. Prevent a rare but possible out-of-bounds read in postscript generator Remove unused variables ----------------------- 2.11 Maintenance release ----------------------- Fixed __cpuid() on fast float plugin to allow gnu gcc Fixed copy alpha bounds check Fixed data race condition on contexts pool Fixed LUT16 write matrix on multichannel V2 profiles ----------------------- 2.10 Featured release ----------------------- Added a compilation toggle to remove "register" keyword in API. Previously commercial, fast_float plug-in is now released as open source under GPL3 license. MD5 functions are now accessible through plug-in API. Added support for Visual Studio 2019 Bug fixing. ----------------------- 2.9 Maintenance release ----------------------- Several fixes related with security, and therefore not detailed here. C++ compiles now without warnings Added OSX and clang in travis Added a travis-ci test matrix for many compilers and OS. Thanks to Thomas Weber (debian) for this great improvement. testbed can now work with dynamic versions of library Fixed wrong planar formatters regarding linestride interpretation ----------------------- 2.8 Featured release ----------------------- Changed ChangeLog direction Fixed many typos in comments, thanks to Stefan Weil for doing that. Fixed localization bug, added a new test case crayons.icc thanks to Richard Hughes for providing the profile. Fixed a bug in optimizer that made some formats (i.e, bits planar) unavailable Fixed misalignment problems on Alpha. The compiler does not align strings, and accessing begin of string as a uint16 makes code to fail. Added some extra checks to the tools and examples. Fixed a bug that prevented to read luminance tag BIG amount of functionality contributed/Sponsored by Alien Skin Software: TransformStride, copyAlpha, performance plug-ins. Fixes some warnings as well. Added an extra _ to _stdcall to make it more portable Fixed a bug in transicc for named color profiles Fixed several compiler warnings Added support for Visual Studio 2015 Fixed for XCODE project ----------------------- 2.7 Maintenance release ----------------------- Added a version retrieval function Added an option in transicc for working in bounded mode Fixed wrong handling of extra channels in some formatters. Added a project for VS2013 Added license for iccjpeg.c New project for mac Added a global optimization that merges consecutive matrices in pipelines. Fixes loss of precision in some transforms Added a flag to clip negative values in unbounded transforms (only gray, rgb, cmyk) Move unused var suppresor before the `return` statements. Remove dead code. Add missing comma in CGATS parser utils/jpgicc/iccjpeg.c: Fix check if unsigned variable 'total_length'… … Some maintenance fixes Remove unused vcproj files Added a function to retrieve the iohandler of a given profile object Added a safety check on named color lists Fixed a macro clash on SNONE. Fixed a possible segmentation fault in a non-happy path ----------------------- 2.6 Featured release ----------------------- Added pthread dependency. From now lcms supports multithreading Fix for delete tag memory corruption Added directories for tiff, jpeg in configure script New locking plug-in, from Artifex Big revamp on Contexts, from Artifex Fixed memory leaks on error handling Changed endianness detection for PowerPC Added a way to retrieve matrix shaper always, no matter LUT is present Fixed a bug in PCS/Colorspace order when reading V2 Lab devicelinks Fixed some indexing out of bounds in floating point interpolation Fixed a double free in recovering from a previous error in default intent handler. ----------------------- 2.5 Maintenance release ----------------------- Added some checks for non-happy path, mostly failing mallocs Transform2Devicelink now keeps white point when guessing deviceclass is enabled Rendering intent used when creating the transform is now propagated to profile header in cmsTransform2Devicelink. This is because 7.2.15 in spec 4.3 Added a simple project for cppcheck Added support for VS2012 Remove spurious tabs added by git merge of pull request Fixed a bug in parametric curves Added some fixes from XhmikosR Added TIFF Lab16 handling on tifficc More changes from Artifex Added identity curves support for write V2 LUT Added a way to read the profile creator from header Added a reference for Mac MLU tag Fixed devicelink generation for 8 bits Several minor issues found by cppcheck Several improvements in cgats parser. Fixed some bugs on floating point curves. Fixed a bug on big endian platforms not supporting uint64 or long long. Added error descriptions on cmsSmoothToneCurve Added new cmsPlugInTHR() and fixed some race conditions (thanks to Artifex) update black point detection algorithm to reflect ICC changes Fixed some 64 bit warnings on size_t to uint32 conversions Fixed a multithead bug on optimization (StageDEF) RGB profiles using same tone curves for several channels are storing now only one copy of the curve (saves space) User defined parametric curves can now be saved in ICC profiles. -------------------- 2.4 Featured release -------------------- Added a check for maximum input channels Fixed an uninitialized read on PatchLUT Fixed a bug in XYZ floating point PCS added half float variants (ABGR and so) Added formatter resolution after xform optimization plugin Fixed a bug in transicc when clot tables are present Added a conditional compilatio flag for "half" support Fixed a bug on named color profiles. Fixed a typo on tificc and jpgicc names, thanks to Elle Stone for reporting. Added half float support Increased security checks, thanks to Mateusz Jurczyk, from Google. Fixed a bug on IT8 reading of negative numbers. Fixed a bug on ending zero when saving a IT8 to memory Internal stage structs are now accessible through plug-in API Added a new plug-in type Added getPipelineContextID Fixed a bug in pipeline duplication gamma 1.0 can now operate in unbounded mode Exposed internal overview table for tone curves Added a new plug in entry for full transform Added support for transforms on planar data with different stride Added black point detection algorithm from Adobe paper Fixed a bug in black preservation checking Added performance improvements from several contributors, mostly Artifex Fixed uint64 to work in systems without long long native type Fixed a bug in the named color devicelink generation ----------------------- 2.3 Maintenance release ----------------------- Added compatibility with Argyll's CGATS parser Updated to ICC spec 4.3 Adding a memory alignment macro for CGATS parser Fixed a bug on the range of data in transicc, when colorant tag is specified Fixed Absolute colorimetric intent issues Fixed encoding for floating point tags in Lab/XYZ Fixed a 0 byte allocation issue in _cmsCreateSubAllocChunk ----------------------- 2.2 Maintenance release ----------------------- Pascal unit now is supported by Free Pascal Compiler Fixed a bug on ReadRAWtag Added dictionary metatag support Fixed a bug in black preservation and slightly non-monotonic curves Added named color functionality Fixed a bug that made crash black preservation on CMYK2CMYK devicelinks Added functions to retrieve formatters from transforms Profiles with weird curves are not prone to p`relinearization optimization. changed memmove to memcpy in cache for xput improvement Fixed GBD bug (out of bounds memory overwrite) Fixed some potential issues as NULL dereferencing Updated linkicc to 2.1, cleanup Removed pthreads need Fixed severa bugs in absolute colorimetric intent ----------------------- 2.1 Maintenance release ----------------------- Added bound check in floating point interpolation Fixed a bug on curve reversing when source curves have few points Added Duotone support (Bilinear interpolation) Fixed delphi interface linkicc now stores the rendering intent in the profile header Fixed several integer overflow and other integrity checks, thanks to Chris Evans Fixed an issue on curve inversion Fixed memory leaks on when recovering from errors Fixed a bug in psid and profile sequence tags Fixed a bug in device link creation on v4 profiles Fixed a bug in tificc in floating point formats Peliminary Delphi wrapper Fixed some typos in error messages Added cmsTagLinkedTo Fixed VC2010, VC2008 projects Added a check on jpgicc for NULL transforms Added UTILS_UNUSED_PARAMETER for samples Added cmsChangeBufferFormat for backwards compatibility Fixed a bug on Lab + Alpha float formatters, added such predefined formatters as well Fixed a bug on transicc that made profiles with output colorants info to malfunction Fixed a bug that prevented linkicc to work Fixed a bug on V2 CHAD construction, affects absolute colorimetric intent ----------------------- 2.0 Major version bump -----------------------