libpng-1.6.7 is available from
Changes since the last public release (1.6.6):
Revised unknown chunk code to correct several bugs in the
Allow HANDLE_AS_UNKNOWN to work when other options are configured off.
fixed the pngminim makefiles to work when $(MAKEFLAGS) contains stuff
which terminates the make options (as by default in recent versions of
Avoid up-cast warnings in pngvalid.c. On ARM the alignment requirements of
png_modifier are greater than that of png_store and as a consequence
compilation of pngvalid.c results in a warning about increased alignment
requirements because of the bare cast to (png_modifier*). The code is
because the pointer is known to point to a stack allocated png_modifier,
but this change avoids the warning.
Fixed default behavior of ARM_NEON_API. If the ARM NEON API option was
compiled without the CHECK option it defaulted to on, not off.
Check user callback behavior in pngunknown.c. Previous versions compiled
if SAVE_UNKNOWN was not available but did nothing since the callback
was never implemented.
Merged pngunknown.c with 1.7 version and back ported 1.7
Made changes for compatibility with automake 1.14:
1) Added the 'compile' program to the list of programs that must be
2) Added 'subdir-objects' which causes .c files in sub-directories to be
compiled such that the corresponding .o files are also in the
sub-directory. This is because automake 1.14 warns that the
current behavior of compiling to the top level directory may be
in the future.
3) Updated dependencies on pnglibconf.h to match the new .o locations
added all the files in contrib/libtests and contrib/tools that depend
4) Added 'BUILD_SOURCES = pnglibconf.h'; this is the automake
way of handling the dependencies of sources that are machine
unfortunately it only works if the user does 'make all' or 'make
so the dependencies (3) are still required.
Cleaned up (char*) casts of zlib messages. The latest version of the
compiler complains about casting a string literal as (char*), so copied
treatment of z_const from the library code into pngfix.c
Simplified error message code in pngunknown. The simplification has the
useful side effect of avoiding a bogus warning generated by the latest
version of the Intel C compiler (it objects to
condition ? string-literal : string-literal).
Make autogen.sh work with automake 1.13 as well as 1.14. Do this by always
removing the 1.14 'compile' script but never checking for it.
Added ARMv8 support (James Yu <james.yu at linaro.org>). Added file
arm/filter_neon_intrinsics.c; enable with -mfpu=neon.
Revised pngvalid to generate size images with as many filters as it can
manage, limited by the number of rows.
Cleaned up ARM NEON compilation handling. The tests are now in pngpriv.h
and detect the broken GCC compilers.
Allow clang derived from older GCC versions to use ARM intrinsics. This
causes all clang builds that use -mfpu=neon to use the intrinsics code,
not the assembler code. This has only been tested on iOS 7. It may be
necessary to exclude some earlier clang versions but this seems
Changed NEON implementation selection mechanism. This allows assembler
or intrinsics to be turned on at compile time during the build by
PNG_ARM_NEON_IMPLEMENTATION to the correct value (2 or 1). This macro
is undefined by default and the build type is selected in pngpriv.h.
Fixed #include in filter_neon_intrinsics.c and ctype macros. The ctype
checking macros take an unsigned char argument, not a signed char.