
Libpng 1.7.0beta02 - February 18, 2013

This is not intended to be a public release.  It will be replaced
within a few weeks by a public version or by another test version.

Files available for download:

Source files with LF line endings (for Unix/Linux) and with a
"configure" script

   1.7.0beta02.tar.xz (LZMA-compressed, recommended)
   1.7.0beta02.tar.gz

Source files with CRLF line endings (for Windows), without the
"configure" script

   lp170b02.7z  (LZMA-compressed, recommended)
   lp170b02.zip

Other information:

   1.7.0beta02-README.txt
   1.7.0beta02-LICENSE.txt

Changes since the last public release (1.6.0):

Version 1.7.0alpha01 [December 15, 2012]
  Started 1.7.0 branch from libpng-1.6.0beta33.
  Made 8-bit compose and rgb_to_grayscale accuracy improvements.  These
    changes cause 16-bit arithmetic to be used for 8-bit data in the gamma
    corrected compose and grayscale operations.  The arithmetic errors have
    three sources all of which are fixed in this commit:
    1) 8-bit linear calculations produce massive errors for lower intensity
       values.
    2) The old 16-bit "16 to 8" gamma table code erroneously wrote the lowest
       output value into a table entry which corresponded to multiple output
       values (so where the value written should have been the closest to the
       transformed input value.)
    3) In a number of cases the code to access the 16-bit table did not round;
       it did a simple shift, which was wrong and made the side effects of (2)
       even worse.
  The new gamma code does not have the 16-to-8 problem at the cost of slightly
    more calculations and the algorithm used to minimize the number of
    calculations has been extended to all the 16-bit tables; it has advantages
    for any significant gamma correction.
  Rearranged png_struct, remove unused members, change png_set_filter handling
    png_struct members rearranged - partly to reorder to avoid packing, partly
    to put frequently accessed members at the start and partly to make
    the grouping more clear. png_set_filter code has been rewritten and the
    code shared with png_write_start_row moved to a common function.  Comments
    in png.h have been made more clear. Minor fixes to
    contrib/libtests/timepng.c and some of the png_*_tRNS logic, including
    more error detection in png_set_tRNS.
  Cleaned up USER_LIMITS feature, removing members from png_struct when not
    required.
  Rearranged ARM-NEON optimizations to isolate the machine specific code to
    the hardware subdirectory, and add comments to pngrutil.c so that
    implementors of other optimizations will know what to do.
  Fixed cases of unquoted DESTDIR in Makefile.am.
  Rebuilt Makefile.in, configure, etc., with autoconf-2.69 and automake-1.12.5.

Version 1.7.0alpha02 [December 17, 2012]
  Removed functions that were deprecated in libpng-1.6.0:
    png_reset_zstream(), png_info_init_3(), and png_data_freer() and its
    associated flags.
  Removed some duplicated lines from contrib/tools/scale.c and png.c.
  Changed some instances of png_warning() to png_app_error().
  Updated some left over "1.6.0beta32" in code sources.
  Fixed a "png_structp" prototype (should be png_structrp) in arm_init.c
  Updated the version-number hack in pngvalid.c

Version 1.7.0alpha03 [December 19, 2012]
  Cleaned up and enhanced the configure option; libpng now correctly
    links and tests against zlib with a prefix; tests have been clarified; and
    irrelevant or obsolete things (as defined by the autotools man page) have
    been removed.
  Documented new PNG_ABORT behavior in the manual and commentary in pngerror.c
  Cleaned up whitespace in the synopsis portion of the manpage "libpng.3"
  Fixed previous support for Z_PREFIX in configure builds, corrected sCAL APIs;
    some of these use floating point arithmetic so they need to be disabled if
    floating point arithmetic is switched off.  This is a quiet API change -
    previously it appeared that the APIs were supported if fixed point
    arithmetic was used internally, however they required certain APIs (floor,
    modf, frexp, atof) that are part of C floating point support. Changed
    png_fixed and the gamma code specific version of the same to avoid floor(),
    which may be a library function (not an intrinsic). Removed unused #if 0
    code.
  Disassembled the version number in scripts/options.awk (necessary for
    building on SunOs).

Version 1.7.0alpha04 [December 23, 2012]
  Added scripts/makefile.msys contributed by Christopher M. Wheeler
  Made default Zlib compression settings be configurable. This adds #defines to
    pnglibconf.h to control the defaults.
  Fixed Windows build issues, enabled ARM compilation. Various warnings issued
    by earlier versions of GCC fixed for Cygwin and Min/GW (which both use old
    GCCs.) ARM support is enabled by default in zlib.props (unsupported by
    Microsoft) and ARM compilation is made possible by deleting the check for
    x86. The test programs cannot be run because they are not signed.

Version 1.7.0alpha05 [December 24, 2012]
  Discontinued distributing libpng-1.x.x.tar.bz2.
  Discontinued distributing libpng-1.7.0-1.6.0-diff.txt and similar.

Version 1.7.0alpha06 [January 1, 2013]
  Fixed 'make distcheck' on SUN OS - libpng.so was not being removed

Version 1.7.0alpha07 [January 10, 2013]
  Fixed conceivable but difficult to repro overflow. Also added two test
    programs to generate and test a PNG which should have the problem.

Version 1.7.0alpha08 [January 17, 2013]
  Corrected previous attempt at overflow detection in png_set_unknown_chunks().

Version 1.7.0alpha09 [January 21, 2013]
  Pulled changes to multi-chunk handling from libpng-1.6.0beta40.

Version 1.7.0alpha10 [February 5, 2013]
  Make symbol prefixing work with the ARM neon optimizations. Also
    allow pngpriv.h to be included for preprocessor definitions only, so
    it can be used in non-C/C++ files.
  Added png_get_palette_max() function.
  Changed png_size_t to size_t throughout headers, make sRGB check numbers
    consistent.
  Fixed ARM support (Mans Rullgard).
  Removed stray out-of-order #endif and #ifdef (Mans Rullgard).
  Ported libpng 1.5 options.awk/dfn file handling to 1.7, fixed one bug.
  Rebuilt Makefile.in, configure, etc., with autoconf-2.69 and automake-1.13.
  Minor fixes to assembler changes, verified with a dummy .S file
  Removed cc -E workround, corrected png_get_palette_max API. Tested on
    SUN OS cc 5.9, which demonstrates the tokenization problem previously
    avoided by using /lib/cpp.  Since all .dfn output is now protected
    in double quotes unless it is to be macro substituted the fix should work
    everywhere.

Version 1.7.0beta01 [February 15, 2013]
  Enable parallel tests and rearrange TESTS order to take advantage of
    the massive speed improvements use a make capable of parallel builds
    on a multi-CPU machine and pass the right arguments to make (-j10000
    for GNU make) to get the build to run in parallel.
  Fixed previous support for Z_PREFIX in configure builds, corrected
    sCAL APIs; some of these use floating point arithmetic so need to be
    disabled if floating point arithmetic is switched off.  This is a quiet API
    change - previously it appeared that the APIs were supported if fixed point
    arithmetic was used internally, however they required certain APIs (floor,
    modf, frexp, atof) that are part of C floating point support. Changed
    png_fixed and the gamma code specific version of the same to avoid floor(),
    which may be a library function (not an intrinsic). Removed unused #if 0
    code.
  Fixed make distcheck to skip over the test result files. They were
    being included because the whole of the 'tests' directory is included,
    fixed to just include the actual test files and tests/pngstest.  Also
    reverted the previous erroneous change to remove the ${srcdir} from the
    front of contrib, scripts, projects and added an explanation of what is
    going on to Makefile.am
  Fixed missing dependency in --prefix builds. The intermediate
    internal 'prefix.h' file can only be generated correctly after pnglibconf.h,
    however the dependency was not in Makefile.am.  The symptoms are
    unpredictable depending on the order make chooses to build pngprefix.h and
    pnglibconf.h, often the error goes unnoticed because there is a system
    pnglibconf.h to use instead.
  Accept "," as a separator in pnglibconf.dfa and allow for
    continuation lines. This adds to the syntax of "option" and "chunk" lines,
    allowing the elements to be separated by a "," at the end of an element and
    interpreting a "," at end of line as a continuation - so the following line
    is read.  The new syntax is optional and solely provided for readability.
  Enclosed the new png_get_palette_max in #ifdef PNG_GET_PALETTE_MAX_SUPPORTED
    block, and revised pnglibconf.h and pnglibconf.h.prebuilt accordingly.

Version 1.7.0beta02 [February 18, 2013]
  Fixed a race condition in the creation of the build 'scripts' directory
    while building with a parallel make.
  Use approved/supported Android method to check for NEON, use Linux/POSIX
    1003.1 API to check /proc/self/auxv avoiding buffer allocation and other
    library calls (ported from libpng15).
  Use parentheses more consistently in "#if defined(MACRO)" tests.
  Folded long lines.

Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
to subscribe)
or to glennrp at users.sourceforge.net

Glenn R-P
