libpng 1.6.37.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.36 - December 1, 2018
================================

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.36.tar.xz (LZMA-compressed, recommended)
 * libpng-1.6.36.tar.gz

Source files with CRLF line endings (for Windows):

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

Other information:

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


IMPORTANT licensing update: libpng license v2
---------------------------------------------

The new libpng license comprises the terms and conditions from the zlib
license, and the disclaimer from the Boost license.

The legacy libpng license, used until libpng-1.6.35, is appended to the
new license, following the precedent established in the Python Software
Foundation License version 2.

From now on, the list of contributing authors shall be maintained in a
separate AUTHORS file.  The lists of previous contributing authors,
mentioned in the legacy libpng license and considered to be an integral
part of that license, are kept intact, with no further updates.


Changes since the previous public release (version 1.6.35)
----------------------------------------------------------

 * Optimized png_do_expand_palette for ARM processors.
   Improved performance by around 10-22% on a recent ARM Chromebook.
   (Contributed by Richard Townsend, ARM Holdings)
 * Fixed manipulation of machine-specific optimization options.
   (Contributed by Vicki Pfau)
 * Used memcpy instead of manual pointer arithmetic on Intel SSE2.
   (Contributed by Samuel Williams)
 * Fixed build errors with MSVC on ARM64.
   (Contributed by Zhijie Liang)
 * Fixed detection of libm in CMakeLists.
   (Contributed by Cameron Cawley)
 * Fixed incorrect creation of pkg-config file in CMakeLists.
   (Contributed by Kyle Bentley)
 * Fixed the CMake build on Windows MSYS by avoiding symlinks.
 * Fixed a build warning on OpenBSD.
   (Contributed by Theo Buehler)
 * Fixed various typos in comments.
   (Contributed by "luz.paz")
 * Raised the minimum required CMake version from 3.0.2 to 3.1.
 * Removed yet more of the vestigial support for pre-ANSI C compilers.
 * Removed ancient makefiles for ancient systems that have been broken
   across all previous libpng-1.6.x versions.
 * Removed the Y2K compliance statement and the export control
   information.
 * Applied various code style and documentation fixes.


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.
