summaryrefslogtreecommitdiff
path: root/Build/source/libs/libpng/libpng-1.6.0/ANNOUNCE
blob: b719f6683b018ddcaf83b03ec492915823d1d02a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464

Libpng 1.6.0 - February 14, 2013

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

Files available for download:

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

   libpng-1.6.0.tar.xz (LZMA-compressed, recommended)
   libpng-1.6.0.tar.gz

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

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

Other information:

   libpng-1.6.0-README.txt
   libpng-1.6.0-LICENSE.txt

Changes since the last public release (1.5.7):

  Removed machine-generated configure files from the GIT repository (they will
    continue to appear in the tarball distributions and in the libpng15 and
    earlier GIT branches).
  Restored the new 'simplified' API, which was started in libpng-1.5.7beta02
    but later deleted from libpng-1.5.7beta05.
  Added example programs and test program pngstest for the new 'simplified' API.
  Added ANSI-C (C90) headers and require them, and take advantage of the
    change. Also fixed some of the projects/* and contrib/* files that needed
    updates for libpng16 and the move of pngvalid.c.
    With this change the required ANSI-C header files are assumed to exist: the
    implementation must provide float.h, limits.h, stdarg.h and stddef.h and
    libpng relies on limits.h and stddef.h existing and behaving as defined
    (the other two required headers aren't used).  Non-ANSI systems that don't
    have stddef.h or limits.h will have to provide an appropriate fake
    containing the relevant types and #defines.
  The use of FAR/far has been eliminated and the definition of png_alloc_size_t
    is now controlled by a flag so that 'small size_t' systems can select it
    if necessary.  Libpng 1.6 may not currently work on such systems -- it
    seems likely that it will ask 'malloc' for more than 65535 bytes with any
    image that has a sufficiently large row size (rather than simply failing
    to read such images).
  New tools directory containing tools used to generate libpng code.
  Fixed race conditions in parallel make builds. With higher degrees of
    parallelism during 'make' the use of the same temporary file names such
    as 'dfn*' can result in a race where a temporary file from one arm of the
    build is deleted or overwritten in another arm.  This changes the
    temporary files for suffix rules to always use $* and ensures that the
    non-suffix rules use unique file names.
  Correct configure builds where build and source directories are separate.
    The include path of 'config.h' was erroneously made relative in pngvalid.c
    in libpng 1.5.7.
  Start-up code size improvements, error handler flexibility. These changes
    alter how the tricky allocation of the initial png_struct and png_info
    structures are handled. png_info is now handled in pretty much the same
    way as everything else, except that the allocations handle NULL return
    silently.  png_struct is changed in a similar way on allocation and on
    deallocation a 'safety' error handler is put in place (which should never
    be required).  The error handler itself is changed to permit mismatches
    in the application and libpng error buffer size; however, this means a
    silent change to the API to return the jmp_buf if the size doesn't match
    the size from the libpng compilation; libpng now allocates the memory and
    this may fail.  Overall these changes result in slight code size
    reductions; however, this is a reduction in code that is always executed
    so is particularly valuable.  Overall on a 64-bit system the libpng DLL
    decreases in code size by 1733 bytes.  pngerror.o increases in size by
    about 465 bytes because of the new functionality.
  Added png_convert_to_rfc1123_buffer() and deprecated png_convert_to_rfc1123()
    to avoid including a spurious buffer in the png_struct.
  Regenerated configure scripts with automake-1.11.2
  Eliminated png_info_destroy(). It is now used only in png.c and only calls
    one other internal function and memset().
  Enabled png_get_sCAL_fixed() if floating point APIs are enabled. Previously
    it was disabled whenever internal fixed point arithmetic was selected,
    which meant it didn't exist even on systems where FP was available but not
    preferred.
  Added pngvalid.c compile time checks for const APIs.
  Implemented 'restrict' for png_info and png_struct. Because of the way
    libpng works both png_info and png_struct are always accessed via a
    single pointer.  This means adding C99 'restrict' to the pointer gives
    the compiler some opportunity to optimize the code.  This change allows
    that.
  Moved AC_MSG_CHECKING([if libraries can be versioned]) later to the proper
    location in configure.ac (Gilles Espinasse).
  Changed png_memcpy to C assignment where appropriate. Changed all those
    uses of png_memcpy that were doing a simple assignment to assignments
    (all those cases where the thing being copied is a non-array C L-value).
  Added some error checking to png_set_*() routines.
  Removed the reference to the non-exported function png_memcpy() from
    example.c.
  Fixed the Visual C 64-bit build - it requires jmp_buf to be aligned, but
    it had become misaligned.
  Revised contrib/pngminus/pnm2png.c to avoid warnings when png_uint_32
    and unsigned long are of different sizes.
  Updated manual with description of the simplified API.
  Fix bug in pngerror.c: some long warnings were being improperly truncated
    (CVE-2011-3464, bug introduced in libpng-1.5.4).
  Increased the formatted warning buffer to 192 bytes.
  Fixed Min/GW uninstall to remove libpng.dll.a
  Eliminated Intel icc/icl compiler warnings. The Intel (GCC derived)
    compiler issues slightly different warnings from those issued by the
    current vesions of GCC. This eliminates those warnings by
    adding/removing casts and small code rewrites.
  Updated configure.ac from autoupdate: added --enable-werror option.
    Also some layout regularization and removal of introduced tab characters
    (replaced with 3-character indentation).  Obsolete macros identified by
    autoupdate have been removed; the replacements are all in 2.59 so
    the pre-req hasn't been changed.  --enable-werror checks for support
    for -Werror (or the given argument) in the compiler.  This mimics the
    gcc configure option by allowing -Werror to be turned on safely; without
    the option the tests written in configure itself fail compilation because
    they cause compiler warnings.
  Rewrote autogen.sh to run autoreconf instead of running tools one-by-one.
  Conditionalize the install rules for MINGW and CYGWIN in CMakeLists.txt and
    set CMAKE_LIBRARY_OUTPUT_DIRECTORY to "lib" on all platforms (C. Yapp).
  Freeze libtool files in the 'scripts' directory. This version of autogen.sh
    attempts to dissuade people from running it when it is not, or should not,
    be necessary.  In fact, autogen.sh does not work when run in a libpng
    directory extracted from a tar distribution anymore. You must run it in
    a GIT clone instead.
  Added two images to contrib/pngsuite (1-bit and 2-bit transparent grayscale),
    and renamed three whose names were inconsistent with those in
    pngsuite/README.txt.
  Check libtool/libtoolize version number (2.4.2) in configure.ac
  Moved automake options to AM_INIT_AUTOMAKE in configure.ac
  Added color-tests, silent-rules (Not yet implemented in Makefile.am) and
    version checking to configure.ac
  Cleaned up pngpriv.h to consistently declare all functions and data.
    Also eliminated PNG_CONST_DATA, which is apparently not needed but we
    can't be sure until it is gone.
  Added symbol prefixing that allows all the libpng external symbols
    to be prefixed (suggested by Reuben Hawkins).
  Updated "ftbb*.png" list in the owatcom and vstudio projects.
  Added Z_SOLO for zlib-1.2.6+ and correct pngstest tests
  Revised INSTALL information about autogen.sh.
  Updated list of test images in CMakeLists.txt
  Corrected estimate of error in libpng png_set_rgb_to_gray API.  The API is
    extremely inaccurate for sRGB conversions because it uses an 8-bit
    intermediate linear value and it does not use the sRGB transform, so it
    suffers from the known instability in gamma transforms for values close
    to 0 (see Poynton).  The net result is that the calculation has a maximum
    error of 14.99/255; 0.5/255^(1/2.2).  pngstest now uses 15 for the
    permitted 8-bit error. This may still not be enough because of arithmetic
    error.
  Removed some unused arrays (with #ifdef) from png_read_push_finish_row().
  Fixed a memory overwrite bug in simplified read of RGB PNG with
    non-linear gamma Also bugs in the error checking in pngread.c and changed
    quite a lot of the checks in pngstest.c to be correct; either correctly
    written or not over-optimistic.  The pngstest changes are insufficient to
    allow all possible RGB transforms to be passed; pngstest cmppixel needs
    to be rewritten to make it clearer which errors it allows and then changed
    to permit known inaccuracies.
  Removed tests for no-longer-used *_EMPTY_PLTE_SUPPORTED from pngstruct.h
  Fixed fixed/float API export conditionals. 1) If FIXED_POINT or
    FLOATING_POINT options were switched off, png.h ended up with lone ';'
    characters.  This is not valid ANSI-C outside a function.  The ';'
    characters have been moved inside the definition of PNG_FP_EXPORT and
    PNG_FIXED_EXPORT. 2) If either option was switched off, the declaration
    of the corresponding functions were completely omitted, even though some
    of them are still used internally.  The result is still valid, but
    produces warnings from gcc with some warning options (including -Wall). The
    fix is to cause png.h to declare the functions with PNG_INTERNAL_FUNCTION
    when png.h is included from pngpriv.h.
  Check for invalid palette index while reading paletted PNG.  When one is
    found, issue a warning.
  Fixed CVE-2011-3026 buffer overrun bug.  Deal more correctly with the test
    on iCCP chunk length. Also removed spurious casts that may hide problems
    on 16-bit systems.
  Eliminated redundant png_push_read_tEXt|zTXt|iTXt|unknown code from
    pngpread.c and use the sequential png_handle_tEXt, etc., in pngrutil.c;
    now that png_ptr->buffer is inaccessible to applications, the special
    handling is no longer useful.
  Added PNG_SAFE_LIMITS feature to pnglibconf.dfa, pngpriv.h, and new
    pngusr.dfa to reset the user limits to safe ones if PNG_SAFE_LIMITS is
    defined.  To enable, use "CPPFLAGS=-DPNG_SAFE_LIMITS_SUPPORTED=1" on the
    configure command or put #define PNG_SAFE_LIMITS_SUPPORTED in
    pnglibconf.h.prebuilt and pnglibconf.h.
  Added information about the new limits in the manual.
  Removed unused "current_text" members of png_struct and the png_free()
    of png_ptr->current_text from pngread.c
  Added PNG_IMAGE_FLAG_FAST for the benefit of applications that store
    intermediate files, or intermediate in-memory data, while processing
    image data with the simplified API.  The option makes the files larger
    but faster to write and read.  pngstest now uses this by default; this
    can be disabled with the --slow option.
  Improved pngstest fine tuning of error numbers, new test file generator.
    The generator generates images that test the full range of sample values,
    allow the error numbers in pngstest to be tuned and checked.  makepng
    also allows generation of images with extra chunks, although this is
    still work-in-progress.
  Fixed some bugs in ICC profile writing. The code should now accept
    all potentially valid ICC profiles and reject obviously invalid ones.
    It now uses png_error() to do so rather than casually writing a PNG
    without the necessary color data.
  Removed whitespace from the end of lines in all source files and scripts.
  Added tests for invalid palette index while reading and writing.
  Changed png_inflate() and calling routines to avoid overflow problems.
    This is an intermediate check-in that solves the immediate problems and
    introduces one performance improvement (avoiding a copy via png_ptr->zbuf.)
    Further changes will be made to make ICC profile handling more secure.
  Added contrib/libtests/tarith.c to test internal arithmetic functions from
    png.c. This is a libpng maintainer program used to validate changes to the
    internal arithmetic functions.
  Made read 'inflate' handling like write 'deflate' handling. The read
    code now claims and releases png_ptr->zstream, like the write code.
    The bug whereby the progressive reader failed to release the zstream
    is now fixed, all initialization is delayed, and the code checks for
    changed parameters on deflate rather than always calling
    deflatedEnd/deflateInit.
  Validate the zTXt strings in pngvalid.
  Added code to validate the windowBits value passed to deflateInit2().
    If the call to deflateInit2() is wrong a png_warning will be issued
    (in fact this is harmless, but the PNG data produced may be sub-optimal).
  Fixed PNG_LIBPNG_BUILD_BASE_TYPE definition. 
  Reject all iCCP chunks after the first, even if the first one is invalid.
  Deflate/inflate was reworked to move common zlib calls into single
    functions [rw]util.c.  A new shared keyword check routine was also added
    and the 'zbuf' is no longer allocated on progressive read.  It is now
    possible to call png_inflate() incrementally.
  If benign errors are disabled use maximum window on ancilliary inflate.
    This works round a bug introduced in 1.5.4 where compressed ancillary
    chunks could end up with a too-small windowBits value in the deflate
    header.
  Issue a png_benign_error() instead of png_warning() about bad palette index.
  In pngtest, treat benign errors as errors if "-strict" is present.
  Fixed a compiler warning under Cygwin (Windows-7, 32-bit system)
  Revised example.c to put text strings in a temporary character array
    instead of directly assigning string constants to png_textp members.
    This avoids compiler warnings when -Wwrite-strings is enabled.
  Added output flushing to aid debugging under Visual Studio. Unfortunately
    this is necessary because the VS2010 output window otherwise simply loses
    the error messages on error (they weren't flushed to the window before
    the process exited, apparently!)
  Added configuration support for benign errors and changed the read
    default. Also changed some warnings in the iCCP and sRGB handling
    from to benign errors. Configuration now makes read benign
    errors warnings and write benign errors to errors by default (thus
    changing the behavior on read).  The simplified API always forces
    read benign errors to warnings (regardless of the system default, unless
    this is disabled in which case the simplified API can't be built.)
  Work around for duplicate row start calls; added warning messages.
    This turns on PNG_FLAG_DETECT_UNINITIALIZED to detect app code that
    fails to call one of the 'start' routines (not enabled in libpng-1.5
    because it is technically an API change, since it did normally work
    before.)  It also makes duplicate calls to png_read_start_row (an
    internal function called at the start of the image read) benign, as
    they were before changes to use png_inflate_claim. Somehow webkit is
    causing this to happen; this is probably a mis-feature in the zlib
    changes so this commit is only a work-round.
  Removed erroneous setting of DETECT_UNINITIALIZED and added more
    checks. The code now does a png_error if an attempt is made to do the
    row initialization twice; this is an application error and it has
    serious consequences because the transform data in png_struct is
    changed by each call.
  Added application error reporting and added chunk names to read
    benign errors; also added --strict to pngstest - not enabled
    yet because a warning is produced.
  Avoid the double gamma correction warning in the simplified API.
    This allows the --strict option to pass in the pngstest checks
  Changed chunk handler warnings into benign errors, incrementally load iCCP
  Added checksum-icc.c to contrib/tools
  Prevent PNG_EXPAND+PNG_SHIFT doing the shift twice.
  Recognize known sRGB ICC profiles while reading; prefer writing the
    iCCP profile over writing the sRGB chunk, controlled by the
    PNG_sRGB_PROFILE_CHECKS option.
  Revised png_set_text_2() to avoid potential memory corruption (fixes
    CVE-2011-3048).
  Revised scripts/makefile.darwin: use system zlib; remove quotes around
    architecture list; add missing ppc architecture; add architecture options
    to shared library link; don't try to create a shared lib based on missing
    RELEASE variable.
  Enable png_set_check_for_invalid_index() for both read and write.
  Removed #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED in pngpriv.h around
    declaration of png_handle_unknown().
  Added -lssp_nonshared in a comment in scripts/makefile.freebsd
    and changed deprecated NOOBJ and NOPROFILE to NO_OBJ and NO_PROFILE.
  Removed need for -Wno-cast-align with clang.  clang correctly warns on
    alignment increasing pointer casts when -Wcast-align is passed. This
    fixes the cases that clang warns about either by eliminating the
    casts from png_bytep to png_uint_16p (pngread.c), or, for pngrutil.c
    where the cast is previously verified or pngstest.c where it is OK, by
    introducing new png_aligncast macros to do the cast in a way that clang
    accepts.
  Revised CMakeLists.txt to not attempt to make a symlink under mingw.
  Made fixes for new optimization warnings from gcc 4.7.0. The compiler
    performs an optimization which is safe; however it then warns about it.
    Changing the type of 'palette_number' in pngvalid.c removes the warning.
  Do not depend upon a GCC feature macro being available for use in generating
    the linker mapfile symbol prefix.
  Improved performance of new do_check_palette_indexes() function (only
    update the value when it actually increases, move test for whether
    the check is wanted out of the function.
  Don't check palette indexes if num_palette is 0 (as it can be in MNG files).
  Revised png_set_keep_unknown_chunks() so num_chunks < 0 means ignore all
    unknown chunks and all known chunks except for IHDR, PLTE, tRNS, IDAT,
    and IEND.  Previously it only meant ignore all unknown chunks, the
    same as num_chunks == 0. Revised png_image_skip_unused_chunks() to
    provide a list of chunks to be processed instead of a list of chunks to
    ignore.  Revised contrib/gregbook/readpng2.c accordingly.
  Removed scripts/makefile.cegcc from the *.zip and *.7z distributions; it
    depends on configure, which is not included in those archives.
  Moved scripts/chkfmt to contrib/tools.
  Changed "a+w" to "u+w" in Makefile.in to fix CVE-2012-3386.
  Do not compile PNG_DEPRECATED, PNG_ALLOC and PNG_PRIVATE when __GNUC__ < 3.
  Do not use __restrict when GNUC is <= 3.1
  Removed references to png_zalloc() and png_zfree() from the manual.
  Fixed configurations where floating point is completely disabled.  Because
    of the changes to support symbol prefixing PNG_INTERNAL_FUNCTION declares
    floating point APIs during libpng builds even if they are completely
    disabled. This requires the png floating point types (png_double*) to be
    declared even though the functions are never actually defined.  This
    change provides a dummy definition so that the declarations work, yet any
    implementation will fail to compile because of an incomplete type.
  Re-eliminated the use of strcpy() in pngtest.c.  An unncessary use of
    strcpy() was accidentally re-introduced in libpng16; this change replaces
    it with strncpy().
  Eliminated use of png_sizeof(); use sizeof() instead.
  Use a consistent style for (sizeof type) and (sizeof (array))
  Cleanup of png_set_filler().  This function does very different things on
    read and write.  In libpng 1.6 the two cases can be distinguished and
    considerable code cleanup, and extra error checking, is possible.  This
    makes calls on the write side that have no effect be ignored with a
    png_app_error(), which can be disabled in the app using
    png_set_benign_errors(), and removes the spurious use of usr_channels
    on the read side.
  Insist on autotools 1.12.1 for git builds because there are security issues
    with 1.12 and insisting on anything less would allow 1.12 to be used.
  Removed info_ptr->signature[8] from WRITE-only builds.
  Add some conditions for compiling png_fixed().  This is a small function
    but it requires "-lm" on some platforms.
  Cause pngtest --strict to fail on any warning from libpng (not just errors)
    and cause it not to fail at the comparison step if libpng lacks support
    for writing chunks that it reads from the input (currently only implemented
    for compressed text chunks).
  Make all three "make check" test programs work without READ or WRITE support.
    Now "make check" will succeed even if libpng is compiled with -DPNG_NO_READ
    or -DPNG_NO_WRITE.  The tests performed are reduced, but the basic reading
    and writing of a PNG file is always tested by one or more of the tests.
  Consistently use strlen(), memset(), memcpy(), and memcmp() instead of the
    png_strlen(), png_memset(), png_memcpy(), and png_memcmp() macros.
  Removed the png_sizeof(), png_strlen(), png_memset(), png_memcpy(), and
    png_memcmp() macros.
  Work around gcc 3.x and Microsoft Visual Studio 2010 complaints. Both object
    to the split initialization of num_chunks.
  Unknown handling fixes and clean up. This adds more correct option
    control of the unknown handling, corrects the pre-existing bug where
    the per-chunk 'keep' setting is ignored and makes it possible to skip
    IDAT chunks in the sequential reader (broken in earlier 1.6 versions).
    There is a new test program, test-unknown.c, which is a work in progress
    (not currently part of the test suite).  Comments in the header files now
    explain how the unknown handling works.
  Allow fine grain control of unknown chunk APIs. This change allows
    png_set_keep_unknown_chunks() to be turned off if not required and causes
    both read and write to behave appropriately (on read this is only possible
    if the user callback is used to handle unknown chunks).  The change
    also removes the support for storing unknown chunks in the info_struct
    if the only unknown handling enabled is via the callback, allowing libpng
    to be configured with callback reading and none of the unnecessary code.
  Corrected fix for unknown handling in pngtest. This reinstates the
    libpng handling of unknown chunks other than vpAg and sTER (including
    unsafe-to-copy chunks which were dropped before) and eliminates the
    repositioning of vpAg and sTER in pngtest.png by changing pngtest.png
    (so the chunks are where libpng would put them).
  Added "tunknown" test and corrected a logic error in png_handle_unknown()
    when SAVE support is absent.  Moved the shell test scripts for
    contrib/libtests from the libpng top directory to contrib/libtests.
    png_handle_unknown() must always read or skip the chunk, if
    SAVE_UNKNOWN_CHUNKS is turned off *and* the application does not set
    a user callback an unknown chunk will not be read, leading to a read
    error, which was revealed by the "tunknown" test.
  Cleaned up and corrected ICC profile handling.
    contrib/libtests/makepng: corrected 'rgb' and 'gray' cases.  profile_error
    messages could be truncated; made a correct buffer size calculation and
    adjusted pngerror.c appropriately. png_icc_check_* checking improved;
    changed the functions to receive the correct color type of the PNG on read
    or write and check that it matches the color space of the profile (despite
    what the comments said before, there is danger in assuming the app will
    cope correctly with an RGB profile on a grayscale image and, since it
    violates the PNG spec, allowing it is certain to produce inconsistent
    app behavior and might even cause app crashes.) Check that profiles
    contain the tags needed to process the PNG (tags all required by the ICC
    spec). Removed unused PNG_STATIC from pngpriv.h.
  Fixed the simplified API example programs and improved the error message
    if the version field is not set.
  Updated simplified API synopses and description of the png_image structure
    in the manual.
  Made makepng and pngtest produce identical PNGs, add "--relaxed" option
    to pngtest. The "--relaxed" option turns off the benign errors that are
    enabled by default in pre-RC builds. makepng can now write ICC profiles
    where the length has not been extended to a multiple of 4, and pngtest
    now intercepts all libpng errors, allowing the previously-introduced
    "--strict test" on no warnings to actually work.
  Added a work around for GCC 4.2 optimization bug.
  Marked the broken (bad white point) original HP sRGB profiles correctly and
    correct comments.
  Added -DZ_SOLO to contrib/pngminim/*/makefile to work with zlib-1.2.7
  Use /MDd for vstudio debug builds. Also added pngunkown to the vstudio
    builds, fixed build errors and corrected a minor exit code error in
    pngvalid if the 'touch' file name is invalid.
  Add updated WARNING file to projects/vstudio from libpng 1.5/vstudio
  Fixed build when using #define PNG_NO_READ_GAMMA in png_do_compose() in
    pngrtran.c (Domani Hannes).
  Made pngvalid so that it will build outside the libpng source tree.
  Made PNG_NO_READ_GAMMA switch off interfaces that depend on READ_GAMMA.
    Prior to 1.6.0 switching off READ_GAMMA did unpredictable things to the
    interfaces that use it (specifically, png_do_background in 1.4 would
    simply display composite for grayscale images but do composition
    with the incorrect arithmetic for color ones). In 1.6 the semantic
    of -DPNG_NO_READ_GAMMA is changed to simply disable any interface that
    depends on it; this obliges people who set it to consider whether they
    really want it off if they happen to use any of the interfaces in
    question (typically most users who disable it won't).
  Added the ability for contrib/libtests/makepng.c to make a PNG with just one
    color. This is useful for debugging pngstest color inaccuracy reports.
  Made png_user_version_check() ok to use with libpng version 1.10.x and later.
  Fixed typo in png.c (PNG_SET_CHUNK_MALLOC_MAX should be PNG_CHUNK_MALLOC_MAX)
    that causes the MALLOC_MAX limit not to work (John Bowler)
  Change png_warning() to png_app_error() in pngwrite.c and comment the
    fall-through condition.
  Change png_warning() to png_app_warning() in png_write_tRNS().
  Rearranged the ARM-NEON optimizations: Isolated the machine specific code
    to the hardware subdirectory and added comments to pngrutil.c so that
    implementors of other optimizations know what to do.
  Fixed cases of unquoted DESTDIR in Makefile.am
  Cleaned up whitespace in the synopsis portion of the manpage "libpng.3"
  Disassembled the version number in scripts/options.awk (necessary for
    building on SunOs).
  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.
  Discontinued distributing libpng-1.x.x.tar.bz2.
  Discontinued distributing libpng-1.7.0-1.6.0-diff.txt and similar.
  Rebuilt Makefile.in, configure, etc., with autoconf-2.69 and automake-1.12.5.
  Fixed 'make distcheck' on SUN OS - libpng.so was not being removed
  Fixed conceivable but difficult to repro overflow. Also added two test
    programs to generate and test a PNG which should have the problem.
  Added overflow detection in png_set_sPLT() and png_set_text_2().
  Use consistent handling of overflows in text, sPLT and unknown png_set_* APIs
  Added png_get_palette_max() function.
  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.
  Enclosed the new png_get_palette_max in #ifdef PNG_GET_PALETTE_MAX_SUPPORTED
    block, and revised pnglibconf.h and pnglibconf.h.prebuilt accordingly.

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