
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 dangerous bug
   (data/metadata loss or serious security hazard).
 * Other modification (e.g. architectural improvement).


Version 0.5.5   28-jan-2007
-------------
 + Upgraded libpng to version 1.2.15-optipng [private]
++ 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 Mass 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 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 [private]
 + 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 [private]
 + 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.)
 + Added the GUIDE and THANKS documents.
 * Converted some text document files to HTML.


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 [private]
 + Upgraded libpng to version 1.2.8-optipng [private]
 + 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 occured 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 [private]
!! 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 [private]
 + Upgraded libpng to version 1.0.17-optipng [private]
   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 [private]
 + Upgraded libpng to version 1.0.15-cos2 [private]
 * 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     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.

