libpng 1.6.43.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.42 - January 29, 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.42.tar.xz (LZMA-compressed, recommended)
 * libpng-1.6.42.tar.gz (deflate-compressed)

Source files with CRLF line endings (for Windows):

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

Other information:

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


Changes from version 1.6.41 to version 1.6.42
---------------------------------------------

 * Fixed the implementation of the macro function `png_check_sig`.
   This was an API regression, introduced in libpng-1.6.41.
   (Reported by Matthieu Darbois)


Changes from version 1.6.40 to version 1.6.41
---------------------------------------------

 * Added SIMD-optimized code for the Loongarch LSX hardware.
   (Contributed by GuXiWei, JinBo and ZhangLixia)
 * Fixed the run-time discovery of MIPS MSA hardware.
   (Contributed by Sui Jingfeng)
 * Fixed an off-by-one error in the function `png_do_check_palette_indexes`,
   which failed to recognize errors that might have existed in the first
   column of a broken palette-encoded image. This was a benign regression
   accidentally introduced in libpng-1.6.33. No pixel was harmed.
   (Contributed by Adam Richter; reviewed by John Bowler)
 * Fixed, improved and modernized the contrib/pngminus programs, i.e.,
   png2pnm.c and pnm2png.c
 * Removed old and peculiar portability hacks that were meant to silence
   warnings issued by gcc version 7.1 alone.
   (Contributed by John Bowler)
 * Fixed and modernized the CMake file, and raised the minimum required
   CMake version from 3.1 to 3.6.
   (Contributed by Clinton Ingram, Timothy Lyanguzov, Tyler Kropp, et al.)
 * Allowed the configure script to disable the building of auxiliary tools
   and tests, thus catching up with the CMake file.
   (Contributed by Carlo Bramini)
 * Fixed a build issue on Mac.
   (Contributed by Zixu Wang)
 * Moved the Autoconf macro files to scripts/autoconf.
 * Moved the CMake files (except for the main CMakeLists.txt) to
   scripts/cmake and moved the list of their contributing authors to
   scripts/cmake/AUTHORS.md
 * Updated the CI configurations and scripts.
 * Relicensed the CI scripts to the MIT License.
 * Improved the test coverage.
   (Contributed by John Bowler)


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.
