libpng 1.6.44.git
=================

This is a development version, not intended to be a public release.
It will be replaced by a public release, or by another development
version, at a later time.


libpng 1.6.43 - February 23, 2024
=================================

This is a public release of libpng, intended for use in production code.


Files available for download
----------------------------

Source files with LF line endings (for Unix/Linux):

 * libpng-1.6.43.tar.xz (LZMA-compressed, recommended)
 * libpng-1.6.43.tar.gz (deflate-compressed)

Source files with CRLF line endings (for Windows):

 * lpng1643.7z (LZMA-compressed, recommended)
 * lpng1643.zip (deflate-compressed)

Other information:

 * README.md
 * LICENSE.md
 * AUTHORS.md
 * TRADEMARK.md


Changes from version 1.6.42 to version 1.6.43
---------------------------------------------

 * Fixed the row width check in png_check_IHDR().
   This corrected a bug that was specific to the 16-bit platforms,
   and removed a spurious compiler warning from the 64-bit builds.
   (Reported by Jacek Caban; fixed by John Bowler)
 * Added eXIf chunk support to the push-mode reader in pngpread.c.
   (Contributed by Chris Blume)
 * Added contrib/pngexif for the benefit of the users who would like
   to inspect the content of eXIf chunks.
 * Added contrib/conftest/basic.dfa, a basic build-time configuration.
   (Contributed by John Bowler)
 * Fixed a preprocessor condition in pngread.c that broke build-time
   configurations like contrib/conftest/pngcp.dfa.
   (Contributed by John Bowler)
 * Added CMake build support for LoongArch LSX.
   (Contributed by GuXiWei)
 * Fixed a CMake build error that occurred under a peculiar state of the
   dependency tree. This was a regression introduced in libpng-1.6.41.
   (Contributed by Dan Rosser)
 * Marked the installed libpng headers as system headers in CMake.
   (Contributed by Benjamin Buch)
 * Updated the build support for RISCOS.
   (Contributed by Cameron Cawley)
 * Updated the makefiles to allow cross-platform builds to initialize
   conventional make variables like AR and ARFLAGS.
 * Added various improvements to the CI scripts in areas like version
   consistency verification and text linting.
 * Added version consistency verification to pngtest.c also.


Send comments/corrections/commendations to png-mng-implement at lists.sf.net.
Subscription is required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
to subscribe.
