| |
| OptiPNG - Revision history |
| ========================== |
| |
| Legend |
| ------ |
| ++ Added or improved performance-related feature |
| (might improve compression ratio or processing speed). |
| + Added or improved feature. |
| - Removed feature. |
| ! Fixed bug. |
| !! Fixed critical bug |
| (crash, data/metadata loss or security hazard). |
| * Other modification (e.g. architectural improvement). |
| |
| Version 0.7.4 21-oct-2012 |
| ------------- |
| !! Fixed the previous fix, which failed to fix the option -fix. |
| (Thanks to Gynvael Coldwind and Mateusz Jurczyk for the report.) |
| |
| Version 0.7.3 16-sep-2012 |
| ------------- |
| !! Fixed a use-after-free vulnerability in the palette reduction code. |
| This vulnerability was accidentally introduced in version 0.7. |
| |
| Version 0.7.2 24-aug-2012 |
| ------------- |
| * Upgraded libpng to version 1.4.12. |
| * Upgraded zlib to version 1.2.7-optipng. |
| ! Fixed the display of huge (4GB+) file/IDAT sizes on 32-bit platforms. |
| ! Issued a proper error message if the output IDAT can't fit in 2GB. |
| Acknowledged this limitation in the user manual. |
| (Thanks to John Sauter for the report.) |
| ! Fixed the output file cleanup that should occur after a write error. |
| * Added the option -debug and various undocumented debug features. |
| * Moved the PNG reduction module (opngreduc) to a separate sub-project. |
| |
| Version 0.7.1 19-mar-2012 |
| ------------- |
| !! Fixed a regression in the reduction of palette-encoded grayscale |
| images. This regression was introduced in version 0.7. |
| (Thanks to Adam Ciarcinski for the fix.) |
| |
| Version 0.7 29-feb-2012 |
| ----------- |
| * Upgraded libpng to version 1.4.9. |
| * Upgraded zlib to version 1.2.6-optipng. |
| !! Resolved a rarely-occurring out-of-bounds memory access error in |
| Z_RLE, by upgrading zlib. (Thanks to Christopher Wichura for the |
| report, and thanks to Mark Adler for fixing zlib.) |
| + Added the popularly-requested option -strip. |
| The only suboption currently supported is "-strip all". |
| + Added the option -clobber. |
| (Thanks in part to Maciej Pilichowski for the contribution.) |
| + Added the option -backup, as an alias of -keep. |
| + Added the option -silent, as an alias of -quiet. |
| - Deprecated the option -log. |
| * Changed the activity display output from STDOUT to STDERR. |
| + Allowed the option -preserve to save high-resolution timestamps |
| on Unix, if the POSIX-1.2008 API is available. This feature was |
| previously available on Windows only. |
| ! Fixed a minor precision error in the display of file size percents. |
| ! Fixed a memory leak that occurred when reading broken GIF images. |
| ! Fixed various build issues. |
| (Thanks to Sebastian Pipping and Ville Skytta for the fixes.) |
| * Resolved all remaining compatibility issues with libpng-1.5. |
| (Thanks in part to Adam Ciarcinski for the contribution.) |
| * Added build support for clang. |
| * Reorganized the source directory structure. |
| |
| Version 0.6.5 24-jan-2011 |
| ------------- |
| * Upgraded libpng to version 1.4.5-optipng. |
| * Upgraded zlib to version 1.2.5-optipng. |
| !! Fixed the I/O states (in libpng 1.4.5); |
| they caused incorrect file reads in some rare cases. |
| (Thanks to [M*A*S*H] and Dmitry Marakasov for the report.) |
| !! Fixed processing of PNG files with chunks of size 0. |
| (Thanks to Matthew Fearnley for the report.) |
| ! Fixed a display error in the TIFF import. |
| (Thanks to Piotr Bandurski for the fix.) |
| + Improved checking of the arguments of -f, -zc, -zm and -zs. |
| - Removed quirks from the rangeset option argument syntax. |
| ! Fixed a build issue under the system-supplied libpng-1.4. |
| (Thanks to Petr Gajdos for the fix.) |
| * Resolved forward-compatibility issues regarding libpng-1.5; |
| however, the system-supplied libpng-1.5 is not yet supported. |
| * Added various enhancements to the configure+make build system. |
| (Thanks in part to Elias Pipping and Dmitri Zubko.) |
| |
| Version 0.6.4 14-mar-2010 |
| ------------- |
| * Upgraded libpng to version 1.4.1-optipng. |
| * Upgraded zlib to version 1.2.4-optipng. |
| + Added the option -nx. |
| * Clarified the behavior of -nz and the relation between -nz and -o0. |
| + Added a filesystem check (resolving normalized paths, symlinks, etc.) |
| to better detect when the output overwrites the input. |
| + Enabled automatic wildcard expansion (i.e. globbing) on Win64. |
| ! Fixed a Unicode build issue on Windows. |
| (Thanks to Fabien Barbier for the fix.) |
| |
| Version 0.6.3 18-may-2009 |
| ------------- |
| * Upgraded libpng to version 1.2.36-optipng. |
| !! Fixed a use-after-free error in the GIF reader. |
| (Thanks to Roy Tam for the report, and to Bryan McQuade for the fix.) |
| ! Flushed the output log to display the current trial in real time. |
| This only worked on Windows in the previous version. |
| (Thanks to Vincent Lefevre for the fix.) |
| ! Fixed an error in reporting unrecognized file formats. |
| (Thanks to [LaughingMan] for the report.) |
| - Removed the requirement to "fix" TIFF files that contain unrecognized |
| metadata. (Thanks to Piotr Bandurski for the suggestion.) |
| * Simplified the option abbreviation rules. Option names can now be |
| abbreviated to their shortest unique prefix, as in X11 applications. |
| |
| Version 0.6.2 9-nov-2008 |
| ------------- |
| * Upgraded libpng to version 1.2.33-optipng. |
| ++ Put back a speed optimization, accidentally removed in version 0.6, |
| allowing singleton trials (-o1) to be bypassed in certain conditions. |
| !! Fixed an array overflow in the BMP reader. |
| !! Fixed the loss of private chunks under the -snip option. |
| + Produced a more concise on-screen output in the non-verbose mode. |
| (Thanks to Vincent Lefevre for the contribution.) |
| * Added a programming interface to the optimization engine, in order |
| to facilitate the development of PNG-optimizing GUI apps and plugins. |
| |
| Version 0.6.1 20-jul-2008 |
| ------------- |
| * Upgraded cexcept to version 2.0.1. |
| + Added a configure script, to be used instead of unix-secure.mak. |
| ! Fixed a build issue that occurred when using libpng from the system. |
| (Thanks to Nelson A. de Oliveira for the report.) |
| ! Fixed processing when image reduction yields an output larger than |
| the original. (Thanks to Michael Krishtopa for the report.) |
| ! Fixed behavior of -preserve. |
| (Thanks to Bill Koch for the report.) |
| - Removed displaying of partial progress when abandoning IDATs under |
| the -v option. The percentages displayed were not very accurate. |
| |
| Version 0.6 15-jun-2008 |
| ----------- |
| * Upgraded libpng to version 1.2.29-optipng. |
| ++ Implemented grayscale(alpha)-to-palette reductions. |
| ++ Improved conversion of bKGD info during RGB-to-palette reductions. |
| (Thanks to Matthew Fearnley for the contribution.) |
| !! Fixed conversion of bKGD and tRNS during 16-to-8-bit reductions. |
| (Thanks to Matthew Fearnley for the report.) |
| + Added support for compressed BMP (incl. PNG-compressed BMP, you bet!) |
| + Improved the speed of reading raw PNM files. |
| + Recognized PNG digital signatures (dSIG) and disabled optimization |
| in their presence, to preserve their integrity. |
| + Allowed the user to enforce the optimization of dSIG'ed files. |
| + Recognized APNG animation files and disabled reductions to preserve |
| their integrity. |
| + Added the -snip option, to allow the user to "snip" one image out of |
| a multi-image file, such as animated GIF, multi-page TIFF, or APNG. |
| (Thanks to [LaughingMan] for the suggestion.) |
| + Improved recovery of PNG files with incomplete IDAT. |
| !! Fixed a crash triggered by the use of -log on some platforms. |
| (Thanks to Stefan Bruns for the fix.) |
| ! Fixed behavior of -out and -dir when the input is already optimized. |
| (Thanks to Christian Davideck for the report.) |
| * Provided more detailed image information at the start of processing. |
| * Provided a more detailed summary at the end of processing, under the |
| presence of the -v option and/or the occurrence of exceptional events. |
| |
| Version 0.5.5 28-jan-2007 |
| ------------- |
| * Upgraded libpng to version 1.2.15-optipng. |
| ++ Used a previously-missed RGB-to-palette reduction opportunity |
| for images containing 256 distinct colors. |
| (Thanks to Joachim Kluge for the report.) |
| !! Fixed conversion of bKGD info during RGB-to-palette reductions. |
| (Thanks to Matthew Fearnley for the report.) |
| ! Fixed pre-computation of iterations. |
| (Thanks to Matthew Fearnley for the report.) |
| ! Eliminated a false alarm when processing RGB images with tRNS |
| in Unix-secure mode. (Thanks to Till Maas for the report, and |
| thanks to Nelson A. de Oliveira for the fix.) |
| ! Fixed behavior of -out and -dir when changing interlacing. |
| (Thanks to Martin Packman for the report.) |
| ! Fixed the behavior of "-dir [DRIVE]:" on Windows. |
| |
| Version 0.5.4 11-aug-2006 |
| ------------- |
| + Added user options -out and -dir, to specify the name of |
| the output file or directory. |
| (Thanks to Alexander Lucas for the suggestion.) |
| * Added support for builds based on the system-supplied libpng. |
| (Thanks to Nelson A. de Oliveira for the valuable help.) |
| |
| Version 0.5.3 23-jul-2006 |
| ------------- |
| * Upgraded libpng to version 1.2.12-optipng. |
| + Implemented basic support for TIFF (grayscale, RGB and RGBA, |
| uncompressed). |
| ++ Avoided the redundant trial when the search space is singular |
| (e.g. when running "optipng -o1 example.tif"). |
| + Prevented accidental file corruption when using option "-log". |
| ! Fixed (again) a small typo in the online help. |
| |
| Version 0.5.2 7-may-2006 |
| ------------- |
| + Improved handling of inexact PNM-to-PNG conversions. |
| ! Fixed a typo that was breaking the build on some Unix platforms. |
| (Thanks to Aaron Reitz for the report.) |
| |
| Version 0.5.1 30-apr-2006 |
| ------------- |
| ++ Implemented bit depth reduction for palette images. |
| * Upgraded libpng to version 1.2.10-optipng. |
| + Improved the BMP support. |
| + Added a Unix man page. |
| (Thanks to Nelson A. de Oliveira for the contribution.) |
| + Allowed abbreviation of command-line options. |
| + Changed user option -log to accept a file name as an argument. |
| * Changed user option -no to -simulate. |
| ! Fixed an error in handling .bak files on Unix. |
| (Thanks to Adam Szojda and Nelson A. de Oliveira for the report.) |
| ! Fixed a small typo in the help screen. |
| (Thanks to A. Costa and Nelson A. de Oliveira for the report.) |
| |
| Version 0.5 14-jan-2006 |
| ----------- |
| ++ Added pngxtern, a libpng add-on for external image format |
| support: BMP (uncompressed), GIF, PNM. |
| (This was incorporated from OptiPNG-Plus.) |
| ++ Implemented RGB(A)-to-palette reductions. |
| * Upgraded zlib to version 1.2.3-optipng. |
| * Upgraded libpng to version 1.2.8-optipng. |
| + If trials are ended prematurely, detailed progression is only |
| reported under the user option -v. |
| - Removed reporting of some IDAT sizes that exceeded the optimum. |
| (This was NOT a bug, but a "feature" that confused some users.) |
| ! Fixed an RGB-to-gray reduction problem that occurred under some |
| specific background colors. |
| * Added support for builds based on the system-supplied zlib. |
| (Thanks to Nelson A. de Oliveira for the suggestion.) |
| * Modified LICENSE. It is now a verbatim spell of the zlib license. |
| |
| Version 0.4.8 10-may-2005 |
| ------------- |
| * Upgraded libpng to version 1.0.18-optipng. |
| !! Fixed a palette-to-gray reduction problem that occurred when an |
| RGB triple had both an alpha below max, and an alpha equal to max. |
| (Thanks to Nicolas Le Gland for the report.) |
| + Packed the Windows executable using UPX. |
| (Thanks to [Warriant] for the suggestion.) |
| |
| Version 0.4.7 30-oct-2004 |
| ------------- |
| !! Fixed a palette-to-gray reduction problem that occurred when |
| having more than one alpha value per RGB triple. |
| (Thanks to Larry Hastings for the report.) |
| ! Fixed the progress display, when processing very large images. |
| + Displayed the image info at the beginning of processing. |
| ++ Reduced the IDAT buffer size, allowing abandoned trials to |
| terminate earlier in some circumstances. |
| + Implemented error recovery, when PLTE is too small, and/or |
| tRNS is too large. |
| |
| Version 0.4.6 25-oct-2004 |
| ------------- |
| * Upgraded zlib to version 1.2.2-optipng. |
| * Upgraded libpng to version 1.0.17-optipng. |
| This provides safe handling of some ill-formed PNG images. |
| + Rewrote makefiles. |
| + Added project workspace to build under Visual C++ 6.0, |
| integrated with memory leak detection. |
| ++ Implemented a premature termination of trials, in the moment |
| when IDAT grows beyond the smallest size previously achieved. |
| (Thanks to Larry Hastings for the idea.) |
| + Changed the order of trials, to perform the trials that are |
| more likely to yield a smaller IDAT, at the beginning. |
| + Added user option -full to avoid the premature termination of |
| trials; useful for debugging. |
| |
| Version 0.4.5 31-may-2004 |
| ------------- |
| * Upgraded zlib to version 1.2.1.f-cos2. |
| * Upgraded libpng to version 1.0.15-cos2. |
| * Changed user option -nx to -nz. |
| + Added user option to preserve file attributes (file mode, |
| time stamp, etc.) when applicable. |
| (Thanks to Nehal Mistry for the suggestion.) |
| ! Fixed an incorrect initialization of zlib window bits. |
| ! Displayed an error message when the search space was invalid. |
| !! Fixed a palette reduction problem for bit depths below 8. |
| ! Eliminated memory leaks. |
| (Thanks to Niels de Koning for the help.) |
| |
| Version 0.4.4 20-nov-2003 |
| ------------- |
| * Upgraded zlib to version 1.2.1 |
| ++ Added support for the Z_RLE strategy. |
| |
| Version 0.4.3 12-aug-2003 |
| ------------- |
| ! Fixed a reduction problem that caused an assertion failure. |
| (Thanks to Dimitri Papadopoulos for the report.) |
| |
| Version 0.4.2 30-jun-2003 |
| ------------- |
| ++ Enhanced the support for palette size reductions: |
| trailing sterile palette entries are removed even when |
| the bit depth is below 8. |
| ! Enforced recompression when the new IDAT has the same size, |
| but other chunks have been reduced. |
| + Displayed the IDAT size difference as a percentage. |
| (Thanks to Nehal Mistry for the suggestion.) |
| |
| Version 0.4.1 19-may-2003 |
| ------------- |
| ! Fixed the removal of trailing sterile palette entries. |
| |
| Version 0.4 12-may-2003 |
| ----------- |
| ++ Added support for palette-to-gray reductions. |
| ++ Added partial support for palette size reductions. |
| ! Fixed the reporting of invalid command-line options. |
| ! Eliminated a spurious warning when the zlib window size |
| is set to 256. |
| |
| Version 0.3.2 11-mar-2003 |
| ------------- |
| + Added support for updating sBIT during reductions. |
| ! Fixed the reduction of the alpha channel. |
| |
| Version 0.3.1 25-feb-2003 |
| ------------- |
| ! Fixed the encoding of interlaced images when they become |
| larger than the input. |
| (Thanks to James H. Cloos, Jr. for the report.) |
| + Added the HISTORY document (this file). |
| |
| Version 0.3 24-feb-2003 |
| ----------- |
| This is the first public release of OptiPNG. |
| ++ Added support for iterating through zlib memory levels. |
| ++ Added support for collapsing IDAT, avoiding calls to |
| png_set_compression_buffer_size(). |
| This reduces the memory requirements. |
| ++ Added support for lossless reduction of the image type: |
| RGB[A] -> G[A], RGBA -> RGB, GA -> G |
| + Added many user options. |
| + Added documentation. |
| |
| Version 0.2 27-dec-2001 |
| ----------- |
| + Added support for optimization level presets. |
| + Added user option for changing the interlacing. |
| |
| Version 0.1 17-dec-2001 |
| ----------- |
| + Added support for chunk I/O status annotation. |
| This improves the speed of OptiPNG significantly. |
| * Structured exception handling is provided by cexcept. |
| |
| Version 0.0.1 10-dec-2001 |
| ------------- |
| This is the very first version of OptiPNG. |
| It compresses IDAT repeatedly, iterating through zlib compression |
| and strategy levels, and PNG filters. |
| |