github.com/kaydxh/golang@v0.0.131/pkg/gocv/cgo/third_path/graphics-magick/share/doc/GraphicsMagick/NEWS.txt (about)

     1  .. -*- mode: rst -*-
     2  .. This text is in reStucturedText format, so it may look a bit odd.
     3  .. See http://docutils.sourceforge.net/rst.html for details.
     4  
     5  ===================
     6  GraphicsMagick News
     7  ===================
     8  
     9  This file was last updated to reflect changes up to February 23, 2020
    10  
    11  Please note that this file records news for the associated development
    12  branch and that each development branch has its own NEWS file. See the
    13  ChangeLog file, and/or the Mercurial changesets, for full details.
    14  
    15  Due to significant issues being discovered and addressed for almost
    16  every release, it is recommended to update to the most current
    17  release and not attempt to patch older releases.
    18  
    19  .. contents::
    20    :local:
    21  
    22  1.3.35 (February 23, 2020)
    23  ==========================
    24  
    25  Special Issues:
    26  
    27  * It has been discovered that the 'ICU' library (a perhaps 30MB C++
    28    library) which is now often a libxml2 dependendency causes huge
    29    process initialization overhead.  This is noticed as unexpected
    30    slowness when GraphicsMagick utilities are used to process small to
    31    medium sized files.  The time to initialize the 'ICU' library is
    32    often longer than the time that GraphicsMagick would otherwise
    33    require to read the input file, process the image, and write the
    34    output file.  If the 'ICU' dependency can not be avoided, then make
    35    sure to use the modules build so there is only impact for file
    36    formats which require libxml2.  Please lobby the 'ICU' library
    37    developers to change their implementation to avoid long start-up
    38    times due to merely linking with the library.
    39  
    40  Security Fixes:
    41  
    42  * GraphicsMagick is now participating in Google's oss-fuzz project due
    43    to the contributions and assistance of Alex Gaynor. Since February 4
    44    2018, 398 issues have been opened by oss-fuzz (some of which were
    45    benign build issues) and 11 issues remain open.
    46    The issues list is available at
    47    https://bugs.chromium.org/p/oss-fuzz/issues/list under search term
    48    "graphicsmagick".  Issues are available for anyone to view and
    49    duplicate if they have been in "Verified" status for 30 days, or if
    50    they have been in "New" status for 90 days.  There are too many
    51    fixes to list here.  Please consult the GraphicsMagick ChangeLog
    52    file, Mercurial repository commit log, and the oss-fuzz issues list
    53    for details.
    54  
    55  Bug fixes:
    56  
    57  * Fix broken definition of ResourceInfinity which resulted in that
    58    GetMagickResource() would return -1 rather than the maximum range
    59    value for the return type as documented. (problem added by the
    60    1.3.32 release).
    61  
    62  * ModifyCache(): Re-open the pixel cache if the cache rows/columns do
    63    not match the owning image rows/columns.
    64  
    65  * Fix DisplayImages() return status.  The return status was inverted.
    66  
    67  * HISTOGRAM: Histogram once again includes the histogram as a text
    68    comment.  This became broken by previous security fixes.
    69  
    70  * PICT: Fixed heap buffer overuns reported multiple sources.
    71  
    72  * JNG: Detect when JPEG encoder has failed and throw an exception.
    73  
    74  * MVG/DrawImage(): Performs even more parsing validations.
    75  
    76  * Clang static analyzer fixes: A great many fixes were made based on
    77    problem reports by the Clang static analyzer.
    78  
    79  * Visual Studio static analyzer fixes: A great many fixes were made
    80    based on problem reports by the Visual Studio 2019 static analyzer.
    81    Many of these may improve the robustness of 64-bit code.
    82  
    83  New Features:
    84  
    85  * GRADIENT/GradientImage(): Improved accuracy of gradient levels as
    86    well as dramaticaly improving performance.  Output PseudoClass
    87    images if we can.  Add support for using the image 'gravity'
    88    attribute as well as the "gradient:direction" definition to produce
    89    gradient vector directions corresponding to SouthGravity (the
    90    previously-existing default), NorthGravity, WestGravity,
    91    EastGravity, NorthWestGravity, NorthEastGravity, SouthWestGravity,
    92    and SouthEastGravity.
    93  
    94  API Updates:
    95  
    96  * InitializeMagickEx(): New function which may be used in place of
    97    InitializeMagick() to initialize GraphicsMagick.  This
    98    initialization function returns an error status value, may update a
    99    passed ExceptionInfo structure with error information, and provides
   100    an options parameter which supports simple bit-flags to tailor
   101    initialization.  The signal handler registrations are skipped if the
   102    MAGICK_OPT_NO_SIGNAL_HANDER flag is set in the options.
   103  
   104  Feature improvements:
   105  
   106  * Replace use of non-reentrant legacy POSIX functions with reentrant
   107    equivalents.
   108  
   109  * Timing of image reads should now be very accurate.  The timer was
   110    sometimes not stopped as soon as it should be.
   111  
   112  * PICT: The PICT reader is working pretty good now.  It handles all
   113    the PICT image files I have available to me.
   114  
   115  Windows Delegate Updates/Additions:
   116  
   117  * None
   118  
   119  Build Changes:
   120  
   121  * Visual Studio Build: Configure program now provides a checkbox to
   122    enable common optimizations for better performance.
   123  
   124  Behavior Changes:
   125  
   126  * POSIX Signals: Use the normal termination signal handler for SIGXCPU
   127    and SIGXFSZ so that ulimit or setrlimit(2) may be used to apply CPU
   128    (RLIMIT_CPU) and output file size (RLIMIT_FSIZE) limits with the
   129    normal cleanup, and without dumping core. Note that any output files
   130    currently being written may be truncated and files being written by
   131    external programs (e.g. Ghostscript) might be left behind unless
   132    they are to a temporary file assigned by GraphicsMagick.
   133  
   134  * Some private string and integer constants were removed from the
   135    apparent library ABI.  Some private functions were marked static and
   136    removed from the apparent library ABI.  This is mentioned because
   137    someone is sure to notice and be concerned about it.
   138  
   139  * The remaining private content in installed header files was moved
   140    into -private.h header files which are not installed.  This should
   141    not be cause for concern but is mentiond because someone is sure to
   142    notice and be concerned about it.
   143  
   144  
   145  1.3.34 (December 24, 2019)
   146  ==========================
   147  
   148  Special Issues:
   149  
   150  * It has been discovered that the 'ICU' library (a perhaps 30MB C++
   151    library) which is now often a libxml2 dependendency causes huge
   152    process initialization overhead.  This is noticed as unexpected
   153    slowness when GraphicsMagick utilities are used to process small to
   154    medium sized files.  The time to initialize the 'ICU' library is
   155    often longer than the time that GraphicsMagick would otherwise
   156    require to read the input file, process the image, and write the
   157    output file.  If the 'ICU' dependency can not be avoided, then make
   158    sure to use the modules build so there is only impact for file
   159    formats which require libxml2.  Please lobby the 'ICU' library
   160    developers to change their implementation to avoid long start-up
   161    times due to merely linking with the library.
   162  
   163  Security Fixes:
   164  
   165  * GraphicsMagick is now participating in Google's oss-fuzz project due
   166    to the contributions and assistance of Alex Gaynor. Since February 4
   167    2018, 386 issues have been opened by oss-fuzz (some of which were
   168    benign build issues) and 376 of those issues have been resolved.
   169    The issues list is available at
   170    https://bugs.chromium.org/p/oss-fuzz/issues/list under search term
   171    "graphicsmagick".  Issues are available for anyone to view and
   172    duplicate if they have been in "Verified" status for 30 days, or if
   173    they have been in "New" status for 90 days.  There are too many
   174    fixes to list here.  Please consult the GraphicsMagick ChangeLog
   175    file, Mercurial repository commit log, and the oss-fuzz issues list
   176    for details.
   177  
   178  Bug fixes:
   179  
   180  * DPS: Eliminate a memory leak.
   181  
   182  * Debug Trace: Only output text to terminate an XML format log file if
   183    XML format is active.
   184  
   185  * EXIF Parser: Detect non-terminal parsing and report an error.
   186  
   187  * EXIF Parser: Eliminate heap buffer overflows.
   188  
   189  * HuffmanDecodeImage(): Fix heap overflow in 32-bit applications.
   190  
   191  * MAT: Implement subimage/subrange support.
   192  
   193  * MVG: Address non-terminal loops, excessive run-time, thrown
   194    assertions, divide-by-zero, heap overflow, and memory leaks.
   195  
   196  * OpenModule(): Now properly case-insensitive, as it used to be.
   197  
   198  * PCX: Verify that pixel region is not negative. Assure that opacity
   199    channel is initialized to opaqueOpacity.  Update DirectClass
   200    representation while PseudoClass representation is updated.  Improve
   201    read performance with uncompressed PCX.
   202  
   203  * PICT: Fix heap overflow in PICT writer.
   204  
   205  * PNG: Fix validation of raw profile length.
   206  
   207  * PNG: Skip coalescing layers if there is only one layer.
   208  
   209  * PNM: Fix denial of service opportunity by limiting the length of PNM
   210    comment text.
   211  
   212  * WPG: Avoid Avoid dereferencing a null pointer.
   213  
   214  * WPG: Implement subimage/subrange support.
   215  
   216  * WPG: Improve performance when reading an embedded image.
   217  
   218  * Wand library: In MagickClearException(), destroy any existing
   219    exception info before re-initializing the exception info or else
   220    there will be a memory leak.
   221  
   222  * XPM: Rquire that image properties appear in the first 512 bytes of
   223    the XPM file header.
   224  
   225  New Features:
   226  
   227  * Visual Studio build supports JBIG and WebP compression in TIFF format.
   228  
   229  API Updates:
   230  
   231  * None
   232  
   233  Feature improvements:
   234  
   235  * Compliles clean using GCC 9.
   236  
   237  Windows Delegate Updates/Additions:
   238  
   239  * bzlib: bzip is updated to 1.0.8 release.
   240  
   241  * jbig: jbigkit is updated to 2.1 release.
   242  
   243  * lcms: lcms2 is updated to 2.9 release.
   244  
   245  * libxml: libxml2 is updated to 2.9.10 release.
   246  
   247  * png: libpng is updated to 1.6.37 release.
   248  
   249  * tiff: libtiff is updated to 4.1.0 release.
   250  
   251  * webp: libwebp is updated to the 1.0.3 release.
   252  
   253  * zlib: zlib is updated to 1.2.11 release.
   254  
   255  * TIFF: Now also supports reading JBIG-compressed TIFF, and
   256    reading/writing WebP-compressed TIFF.  A number of libtiff feature
   257    options which are now commonly enabled were disabled and are now
   258    enabled by default.
   259  
   260  Build Changes:
   261  
   262  * MinGW: Static and shared library builds were not working.  Only the
   263    modules build was actually working!
   264  
   265  * Python scripts related to the build (enabled by
   266    --enable-maintainer-mode) are now compatible with Python 3.
   267  
   268  * Now supports using Google gperftools tcmalloc library for the memory
   269    allocator.  This improves performance for certain repetitive
   270    work-loads and heavily-threaded algorithms.
   271  
   272  * Configure now reports the status of zstd (FaceBook Zstandard)
   273    compression in its configuration summary.
   274  
   275  * TclMagick: Address many issues mentioned by SourceForge issue #420
   276    "TclMagick issues and patch".
   277  
   278  Behavior Changes:
   279  
   280  * PNG: Post-processing to convert the image type in the PNG reader
   281    based on a specified magick prefix string is now disabled.  This can
   282    (and should) be done after the image has been returned.
   283  
   284  * Trace Logging: The compiled-in logging default is always to stderr,
   285    which may be over-ridden using log.mgk as soon as it is loaded.
   286  
   287  * Windows Build: Search registry key HKEY_CURRENT_USER as well as
   288    HKEY_LOCAL_MACHINE when searching for Ghostscript.  By following the
   289    procedure documented in SourceForge bug 615 "GhostScript
   290    installation check", this allows for local user installations
   291    without "administrator" privileges.
   292  
   293  1.3.33 (July 20, 2019)
   294  ==========================
   295  
   296  Special Issues:
   297  
   298  * It has been discovered that the 'ICU' library (a perhaps 30MB C++
   299    library) which is now often a libxml2 dependendency causes huge
   300    process initialization overhead.  This is noticed as unexpected
   301    slowness when GraphicsMagick utilities are used to process small to
   302    medium sized files.  The time to initialize is often longer than the
   303    time to read the input file, process the image, and write the output
   304    file.  If the 'ICU' dependency can not be avoided, then make sure to
   305    use the modules build.  Please lobby the 'ICU' library developers to
   306    change their implementation to avoid long start-up times due to
   307    merely linking with the library.
   308  
   309  Security Fixes:
   310  
   311  * GraphicsMagick is now participating in Google's oss-fuzz project due
   312    to the contributions and assistance of Alex Gaynor. Since February 4
   313    2018, 353 issues have been opened by oss-fuzz and 338 of those
   314    issues have been resolved.  The issues list is available at
   315    https://bugs.chromium.org/p/oss-fuzz/issues/list under search term
   316    "graphicsmagick".  Issues are available for anyone to view and
   317    duplicate if they have been in "Verified" status for 30 days, or if
   318    they have been in "New" status for 90 days.  There are too many
   319    fixes to list here.  Please consult the GraphicsMagick ChangeLog
   320    file, Mercurial repository commit log, and the oss-fuzz issues list
   321    for details.
   322  
   323  * Documentation has been added regarding security hazards due to
   324    commands which support a '@filename' syntax.
   325  
   326  * MontageImages(): Fix wrong length argument to strlcat() when
   327    building montage directory, which could allow heap overwrite.
   328  
   329  Bug fixes:
   330  
   331  * PNG: Pass correct size value to strlcat() in module registration
   332    code.  This bug is noticed to cause problems for Apple's OS X and
   333    Linux Alpine with musl libc.  This fixes a regression introduced by
   334    the 1.3.32 release.
   335  
   336  * Re-implement command-line utility `'@'` file inclusion support for
   337    `-comment`, `-draw`, `-format`, and `-label` which was removed for
   338    the 1.3.32 release.  The new implementation is isolated to
   339    command-line utility implementation code rather than being deeply
   340    embedded in the library and exposed in other usage contexts.  This
   341    fixes a regression introduced by the 1.3.32 release.
   342  
   343  * CAPTION: The The CAPTION reader did not appear to work at all any
   344    more.  Now it works again, but still not very well.
   345  
   346  * MagickXDisplayImage(): Fix heap overwrite of windows->image.name and
   347    windows->image.icon_name buffers.  This bug has surely existed since
   348    early GraphicsMagick releases.
   349  
   350  * MagickXAnimateImages(): Fix memory leak of scene_info.pixels.
   351  
   352  * AcquireTemporaryFileDescriptor(): Fix compilation under Cygwin. This
   353    fixes a regression introduced by the 1.3.32 release.
   354  
   355  * PNG: Fix saving to palette when mage has an alpha channel but no
   356    color is marked as transparent.
   357  
   358  * Compilation warnings in the Visual Studio WIN64 build due to the
   359    'long' type being only 32-bits have been addressed.
   360  
   361  New Features:
   362  
   363  * None
   364  
   365  API Updates:
   366  
   367  * None
   368  
   369  Feature improvements:
   370  
   371  * None
   372  
   373  Windows Delegate Updates/Additions:
   374  
   375  * None
   376  
   377  Build Changes:
   378  
   379  * None
   380  
   381  Behavior Changes:
   382  
   383  * Support for `'@'` file inclusion support for `-comment`, `-draw`,
   384    `-format`, and `-label` has been restored.
   385  
   386  1.3.32 (June 15, 2019)
   387  ==========================
   388  
   389  Special Issues:
   390  
   391  * It has been discovered that the 'ICU' library (a perhaps 30MB C++
   392    library) which is now often a libxml2 dependendency causes huge
   393    process initialization overhead.  This is noticed as unexpected
   394    slowness when GraphicsMagick utilities are used to process small to
   395    medium sized files.  The time to initialize is often longer than the
   396    time to read the input file, process the image, and write the output
   397    file.  If the 'ICU' dependency can not be avoided, then make sure to
   398    use the modules build.  Please lobby the 'ICU' library developers to
   399    change their implementation to avoid long start-up times due to
   400    merely linking with the library.
   401  
   402  Security Fixes:
   403  
   404  * GraphicsMagick is now participating in Google's oss-fuzz project due
   405    to the contributions and assistance of Alex Gaynor. Since February 4
   406    2018, 343 issues have been opened by oss-fuzz and 331 of those
   407    issues have been resolved.  The issues list is available at
   408    https://bugs.chromium.org/p/oss-fuzz/issues/list under search term
   409    "graphicsmagick".  Issues are available for anyone to view and
   410    duplicate if they have been in "Verified" status for 30 days, or if
   411    they have been in "New" status for 90 days.  There are too many
   412    fixes to list here.  Please consult the GraphicsMagick ChangeLog
   413    file, Mercurial repository commit log, and the oss-fuzz issues list
   414    for details.
   415  
   416  * BMP reader: Fix heap overflow in 32-bit build due to arithmetic
   417    overflow. Only happens if limits are changed from defaults.
   418  
   419  * BMP reader/writer: Improve buffer-size calculations to guard against
   420    buffer overflows.
   421  
   422  * DIB reader: Reject files which claim more than 8-bits per pixel but
   423    also claim to be colormapped.
   424  
   425  * DIB reader/writer: Improve buffer-size calculations to guard against
   426    buffer overflows.
   427  
   428  * MIFF reader: Detect end of file while reading RLE packets.
   429  
   430  * MIFF reader: Fix heap overflow (for some files using RLE
   431    compression) caused by a typo in the code.
   432  
   433  * MAT writer: Added missing error handling to avoid heap overflow.
   434  
   435  * MNG reader: Fixed a small heap buffer overflow.
   436  
   437  * SVG reader: Fixed a stack buffer overflow.
   438  
   439  * TGA writer: Fix heap overflow when image rows/columns are larger
   440    than 65535.
   441  
   442  * TIFF reader: Rationalize tile width/height to reject large tile
   443    sizes which are much larger than the image dimensions.
   444  
   445  * TIFF reader: Apply memory resource limits to strip and tile allocations.
   446  
   447  * WMF reader: Fixed a division by zero problem.
   448  
   449  * XWD reader: Many heap buffer overflows and uses of uninitialized data were fixed.
   450  
   451  * Pixel cache: Now apply resource limits to pixel nexus allocations
   452    using the same limits (total pixels, width, height, memory) as
   453    applied to the whole image since some requests are directly
   454    influenced by the input file.  More tests are added for arithmetic
   455    overflow.  Care was taken to minimize performance impact due to the
   456    many extra checks.
   457  
   458  Bug fixes:
   459  
   460  * See above note about oss-fuzz fixes.
   461  
   462  * Fixed include order of magick/api.h vs wand/wand_symbols.h.
   463  
   464  * WriteImage(): Eliminate use of just-freed memory in
   465    clone_info->magick when throwing exception due to no support for
   466    format.
   467  
   468  * Magick++/lib/Magick++/Drawable.h: Fix use of clang diagnostic syntax.
   469  
   470  * DIB: Preserve PseudoClass opaque representation if ICO mask is opaque.
   471  
   472  * JPEG reader: Restore ability to access detailed image properties
   473    while in 'ping' mode.
   474  
   475  * JPEG reader: Base test for "Unreasonable dimensions" on original
   476    JPEG dimensions and not the scaled dimensions.
   477  
   478  * JPEG reader: Allow input files to have a compression ratio as high
   479    as 2500.  Extremely compressed files were being rejected.
   480  
   481  * FreeType renderer: Fixed a memory leak.
   482  
   483  * PDF writer: Fixed a memory leak.
   484  
   485  * PDF writer: Fixed a thread safety problem.
   486  
   487  * PICT reader: Fix a thread safety problem.
   488  
   489  * Exception reporting: Throwing an exception was not thread safe.  Now it is.
   490  
   491  * Exception reporting: Handle the case where some passed character
   492    strings refer to existing exception character strings.
   493  
   494  * Command-line parser now does not attempt to read a list of filenames
   495    from a file in '@name' syntax if the path '@name' exists.
   496    Previously it would attempt to read a list of file names from 'name'
   497    even if '@name' did exist.
   498  
   499  * Rendering: Short-circuit path parsing and return and error
   500    immediately if an error occurs.
   501  
   502  New Features:
   503  
   504  * Added support for writing the Braille image format (by Samuel
   505    Thibault).
   506  
   507  * WebP writer: Support WebP 'use_sharp_yuv' option ("if needed, use
   508    sharp (and slow) RGB->YUV conversion") via `-define
   509    webp:use-sharp-yuv=true`.
   510  
   511  * The version command output now reports the OpenMP specification
   512    number rather than just the integer version identifier.
   513  
   514  API Updates:
   515  
   516  * ReallocateImageColormap() added to re-allocate an existing colormap.
   517  
   518  * Some improperly-exposed globals are now static as they should have
   519    been.
   520  
   521  Feature improvements:
   522  
   523  * Microsoft Windows timing information now uses
   524    QueryPerformanceFrequency() and QueryPerformanceCounter() for
   525    increased precision.
   526  
   527  * The 'benchmark' command now shows 6 digits (microseconds) of elapsed
   528    time indication.
   529  
   530  * The 'time' command now shows 6 digits (microseconds) of elapsed time
   531    indication.
   532  
   533  * The logging facility now shows 6 digits (microseconds) of time
   534    resolulution
   535  
   536  * Dcraw: When QuantumDepth is greater than 8, pass -6 option to dcraw
   537    so that it returns a 16-bit/sample image.
   538  
   539  * Dcraw: If Dcraw supports TIFF format, then request TIFF format in
   540    order to be able to acquire more metatdata.
   541  
   542  * Scale algorithm: Eliminate artifacts when scaling an image with
   543    semi-transparent pixels.
   544  
   545  * Library metrics: The number of shared library relocations and the
   546    amount of initialized data has been signficantly reduced by
   547    following recommendations from Ulrich Drepper's document `How To
   548    Write Shared Libraries <https://akkadia.org/drepper/dsohowto.pdf>`_.
   549  
   550    For comparison, these are the differences in library metrics between
   551    the 1.3.31 and 1.3.32 releases for a simple shared library with all
   552    features supported:
   553  
   554    +---------+-------------+------------------+------------+
   555    | Release | Relocations | Initialized Data | Total Size |
   556    +=========+=============+==================+============+
   557    | 1.3.31  |      12,432 |          506,496 |  3,587,227 |
   558    +---------+-------------+------------------+------------+
   559    | 1.3.32  |         747 |          127,936 |  3,033,279 |
   560    +---------+-------------+------------------+------------+
   561  
   562    and these are the differences in library metrics between 1.3.31 and
   563    1.3.32 for a shared library using the modules option (recommended!)
   564    with all features supported:
   565  
   566    +---------+-------------+------------------+------------+
   567    | Release | Relocations | Initialized Data | Total Size |
   568    +=========+=============+==================+============+
   569    | 1.3.31  |       5,370 |          176,784 |  1,940,620 |
   570    +---------+-------------+------------------+------------+
   571    | 1.3.32  |         367 |          119,472 |  1,825,651 |
   572    +---------+-------------+------------------+------------+
   573  
   574    As can be seen, the number of relocations was extreme and has been
   575    reduced to reasonable levels while also diminishing the amount of
   576    initialized data and the total size of the library/program.  Most of
   577    the remaining initialized data (106,648 bytes) and some of the
   578    relocations (65 relocations) may be attributed to the optional X11
   579    animate/display/import support.
   580  
   581  Windows Delegate Updates/Additions:
   582  
   583  * None
   584  
   585  Build Changes:
   586  
   587  * The test suite now passes even if no fonts are found.
   588  
   589  * Configure script does better at finding Windows fonts on non-Windows systems.
   590  
   591  * The configure script now supports the option --with-mtmalloc to
   592    enable use of the mtmalloc library as found on Solaris-derived
   593    systems.
   594  
   595  Behavior Changes:
   596  
   597  * AnnotateImage(): No longer implicitly call TranslateText() since
   598    this is not suitable for most use-cases and causes additional
   599    performance impact.  The API user can perform such translations in
   600    advance on the text string using TranslateText() if need be.
   601  
   602  
   603  1.3.31 (November 17, 2018)
   604  ==========================
   605  
   606  Special Issues:
   607  
   608  * Firmware and operating system updates to address the Spectre
   609    vulnerability (and possibly to some extent the Meltdown
   610    vulnerability) have substantially penalized GraphicsMagick's OpenMP
   611    performance.  Performance is reduced even with GCC 7 and 8's
   612    improved optimizers. There does not appear to be anything we can do
   613    about this.
   614  
   615  Security Fixes:
   616  
   617  * GraphicsMagick is now participating in Google's oss-fuzz project due
   618    to the contributions and assistance of Alex Gaynor. Since February 4
   619    2018, 292 issues have been opened by oss-fuzz and 279 of those
   620    issues have been resolved.  The issues list is available at
   621    https://bugs.chromium.org/p/oss-fuzz/issues/list under search term
   622    "graphicsmagick".  Issues are available for anyone to view and
   623    duplicate if they have been in "Verified" status for 30 days, or if
   624    they have been in "New" status for 90 days.  There are too many
   625    fixes to list here.  Please consult the GraphicsMagick ChangeLog
   626    file, Mercurial repository commit log, and the oss-fuzz issues list
   627    for details.
   628  
   629  Bug fixes:
   630  
   631  * See above note about oss-fuzz fixes.
   632  
   633  * CINEON: Fix unexpected hang on a crafted Cineon image.  SourceForge
   634    issue 571.
   635  
   636  * Drawing recursion is limited to 100 and may be tuned via the
   637    MAX_DRAWIMAGE_RECURSION pre-processor definition.
   638  
   639  * Fix reading MIFF files using legacy keyword 'color-profile' for ICC
   640    color profile as was used by ImageMagick 4.2.9.
   641  
   642  * Fix reading/writing files when 'magick' is specified in lower case.
   643    This bug was a regression in 1.3.30.
   644  
   645  
   646  New Features:
   647  
   648  * TIFF: Support Zstd compression in TIFF.  This requires libtiff
   649    4.0.10 or later.
   650  
   651  * TIFF: Support WebP compression in TIFF.  This requires libtiff
   652    4.0.10 or later.
   653  
   654  API Updates:
   655  
   656  * MagickMonitor() is marked as deprecated.  Code should not be using
   657    this function any more.
   658  
   659  Feature improvements:
   660  
   661  * The progress monitor callbacks (registered using MagickMonitor() or
   662    MagickMonitorFormatted()) are serialized via a common semaphore
   663    rather than via critical sections in OpenMP loops.  OpenMP loops are
   664    updated to use OpenMP 'atomic' and 'flush' to update shared loop
   665    variables rather than using a OpenMP 'critical' construct, reducing
   666    contention.  Performance on some targets is observed to have been
   667    improved by this change.
   668  
   669  Windows Delegate Updates/Additions:
   670  
   671  * None
   672  
   673  Build Changes:
   674  
   675  * There was already a 'compare' command installed with the
   676    '--enable-magick-compat' configure option was used but it did not
   677    function.  Now it functions.  There was no `compare` command in
   678    ImageMagick 5.5.2 and this compare command is only roughly similar
   679    to a `compare` command in some subsequent ImageMagick release.
   680  
   681  * Removed Remove Ghostscript library support (--with-gslib) from
   682    configure script.  The 'HasGS' pre-processor defines which were
   683    enabled by this remain in the source code so it is still possible to
   684    use this library if absolutely necessary (e.g. CPPFLAGS=-DHasGS
   685    LIBS=-lgs).
   686  
   687  * No longer explicitly link with the OpenMP library when it will be
   688    supplied already due to CFLAGS.
   689  
   690  Behavior Changes:
   691  
   692  * JPEG: Libjpeg-turbo is allowed 1/5th the memory resource limit
   693    provided for Graphicsmagick via the cinfo->mem->max_memory_to_use
   694    option, which is part of the IJG JPEG API/ABI, but usually not
   695    supported there.  This feature works for libjpeg-turbo 1.5.2 and
   696    later.  Limiting the memory usage is useful since libjpeg-turbo may
   697    otherwise consume arbitrary amounts of memory even before
   698    Graphicsmagick is informed of the image dimensions.
   699  
   700  * JPEG: The maximum number of JPEG progressive scans is limited to 50.
   701    Otherwise some technically valid files could be read for almost
   702    forever.
   703  
   704  
   705  1.3.30 (June 23, 2018)
   706  =========================
   707  
   708  Special Issues:
   709  
   710  * None
   711  
   712  Security Fixes:
   713  
   714  * GraphicsMagick is now participating in Google's oss-fuzz project due
   715    to the contributions and assistance of Alex Gaynor. Since February 4
   716    2018, 238 issues have been opened by oss-fuzz and 230 of those
   717    issues have been resolved.  The issues list is available at
   718    https://bugs.chromium.org/p/oss-fuzz/issues/list under search term
   719    "graphicsmagick".  Issues are available for anyone to view and
   720    duplicate if they have been in "Verified" status for 30 days, or if
   721    they have been in "New" status for 90 days.  There are too many
   722    fixes to list here.  Please consult the GraphicsMagick ChangeLog
   723    file, Mercurial repository commit log, and the oss-fuzz issues list
   724    for details.
   725  
   726  * SVG/Rendering: Fix heap write overflow of PrimitiveInfo and
   727    PointInfo arrays.  This is another manefestation of CVE-2016-2317,
   728    which should finally be fixed correctly due to active
   729    detection/correction of pending overflow rather than using
   730    estimation.
   731  
   732  Bug fixes:
   733  
   734  * Many oss-fuzz fixes are bug fixes.
   735  
   736  * Drawing/Rendering: Many more fixes by Gregory J Wolfe (see the ChangeLog).
   737  
   738  * MIFF: Detect end of file while reading image directory.
   739  
   740  * SVG: Many more fixes by Gregory J Wolfe (see the ChangeLog).
   741  
   742  * The AlphaCompositePixel macro was producing wrong results when the
   743    output alpha value was not 100% opaque. This is a regression
   744    introduced in 1.3.29.
   745  
   746  * TILE: Fix problem with tiling JPEG images because the size request
   747    used by the TILE algorithm was also causing re-scaling in the JPEG
   748    reader.  The problem is solved by stripping the size request before
   749    reading the image.
   750  
   751  New Features:
   752  
   753  * None
   754  
   755  API Updates:
   756  
   757  * The size of PrimitiveInfo (believed to be an internal/private
   758    structure but in a header which is installed, has been increased to
   759    store a 'flags' argument. This is intended to be an internal
   760    interface but but may be detected as an ABI change.
   761  
   762  Feature improvements:
   763  
   764  * None
   765  
   766  Windows Delegate Updates/Additions:
   767  
   768  * None
   769  
   770  Build Changes:
   771  
   772  * The oss-fuzz build script (fuzzing/oss-fuzz-build.sh) now includes
   773    many delegate libraries such as zlib, libpng, libtiff, libjpeg, and
   774    freetype, resulting in more comprehensive testing.  The Q16 build is
   775    now being tested rather than the 'configure' default of Q8.
   776  
   777  Behavior Changes:
   778  
   779  * JPEG: The JPEG reader now allows 3 warnings of any particular type
   780    before giving up on reading and throwing an exception.  This choice
   781    was made after observing files which produce hundreds of warnings
   782    and consume massive amounts of memory before reading the image data
   783    has even started.  It is currently unknown how many files which were
   784    previously accepted will be rejected by default.  The number of
   785    allowed warnings may be adjusted using '-define
   786    jpeg:max-warnings=<value>'.  The default limit will be adjusted
   787    based on reported user experiences and may be adjusted prior to
   788    compilation via the MaxWarningCount definition in coders/jpeg.c.
   789  
   790  
   791  1.3.29 (April 29, 2018)
   792  =========================
   793  
   794  Special Issues:
   795  
   796  * None
   797  
   798  Security Fixes:
   799  
   800  * GraphicsMagick is now participating in Google's oss-fuzz project due
   801    to the contributions and assistance of Alex Gaynor. Since February 4
   802    2018, 180 issues have been opened by oss-fuzz and 173 of those
   803    issues have been resolved.  The issues list is available at
   804    https://bugs.chromium.org/p/oss-fuzz/issues/list under search term
   805    "graphicsmagick".  Issues are available for anyone to view and
   806    duplicate if they have been in "Verified" status for 30 days, or if
   807    they have been in "New" status for 90 days.  There are too many
   808    fixes to list here.  Please consult the GraphicsMagick ChangeLog
   809    file, Mercurial repository commit log, and the oss-fuzz issues list
   810    for details.
   811  
   812  * JNG: Require that the embedded JPEG image have the same dimensions
   813    as the JNG image as provided by JHDR. Avoids a heap write overflow.
   814  
   815  * MNG: Arbitrarily limit the number of loops which may be requested by
   816    the MNG LOOP chunk to 512 loops, and provide the '-define
   817    mng:maximum-loops=value' option in case the user wants to change the
   818    limit.  This fixes a denial of service caused by large LOOP
   819    specifications.
   820  
   821  Bug fixes:
   822  
   823  * Many oss-fuzz fixes are bug fixes.
   824  
   825  * DICOM: Pre/post rescale functions are temporarily disabled (until
   826    the implementation is fixed).
   827  
   828  * JPEG: Fix regression in last release in which reading some JPEG
   829    files produces the error "Improper call to JPEG library in state
   830    201".
   831  
   832  * ICON: Some DIB-based Windows ICON files were reported as corrupt to
   833    an unexpectedly missing opacity mask image.
   834  
   835  * In-memory Blob I/O: Don't implicitly increase the allocation size
   836    due to seek offsets.
   837  
   838  * MNG: Detect and handle failure to allocate global PLTE. Fix divide
   839    by zero.
   840  
   841  * DrawGetStrokeDashArray(): Check for failure to allocate memory.
   842  
   843  * BlobToImage(): Now produces useful exception reports to cover the
   844    cases where 'magick' was not set and the file format could not be
   845    deduced from its header.
   846  
   847  New Features:
   848  
   849  * None
   850  
   851  API Updates:
   852  
   853  * Wand API: Added MagickIsPaletteImage(), MagickIsOpaqueImage(),
   854    MagickIsMonochromeImage(), MagickIsGrayImage(), MagickHasColormap()
   855    based on contributions by Troy Patteson.
   856  
   857  * New structure ImageExtra added and Image 'clip_mask' member is
   858    replaced by 'extra' which points to private ImageExtra allocation.
   859    The ImageGetClipMask() function now provides access to the clip mask
   860    image.
   861  
   862  * New structure DrawInfoExtra and DrawInfo 'clip_path' is replaced by
   863    'extra' which points to private DrawInfoExtra allocation.  The
   864    DrawInfoGetClipPath() function now provides access to the clip path.
   865  
   866  * New core library functions: GetImageCompositeMask(),
   867    CompositeMaskImage(), CompositePathImage(), SetImageCompositeMask(),
   868    ImageGetClipMask(), ImageGetCompositeMask(), DrawInfoGetClipPath(),
   869    DrawInfoGetCompositePath()
   870  
   871  * Deprecated core library functions: RegisterStaticModules(),
   872    UnregisterStaticModules().
   873  
   874  Feature improvements:
   875  
   876  * Static modules (in static library or shared library without
   877    dynamically loadable modules) are now lazy-loaded using the same
   878    external interface as the lazy-loader for dynamic modules.  This
   879    results in more similarity between the builds and reduces the fixed
   880    initialization overhead by only initializing the modules which are
   881    used.
   882  
   883  * SVG: The quality of SVG support has been significantly improved due
   884    to the efforts of Greg Wolfe.
   885  
   886  * FreeType/TTF rendering: Rendering fixes for opacity.
   887  
   888  Windows Delegate Updates/Additions:
   889  
   890  * None
   891  
   892  Build Changes:
   893  
   894  * None
   895  
   896  Behavior Changes:
   897  
   898  * None
   899  
   900  
   901  1.3.28 (January 20, 2018)
   902  =========================
   903  
   904  Special Issues:
   905  
   906  * None
   907  
   908  Security Fixes:
   909  
   910  * BMP: Fix non-terminal loop due to unexpected bit-field mask value
   911    (DOS opportunity).
   912  
   913  * PALM: Fix heap buffer underflow in builds with QuantumDepth=8.
   914  
   915  * SetNexus() Fix heap overwrite under certain conditions due to using
   916    a wrong destination buffer.  This issue impacts all 1.3.X releases.
   917  
   918  * TIFF: Fix heap buffer read overflow in LocaleNCompare() when parsing
   919    NEWS profile.
   920  
   921  Bug fixes:
   922  
   923  * DescribeImage(): Eliminate possible use of null pointer.
   924  
   925  * GIF: Fix memory leak of global colormap in error path.
   926  
   927  * GZ: Writing to gzip files with the extension ".gz" was not working
   928    with Zlib 1.2.8.
   929  
   930  * JNG: Fix buffer read overflow (a tiny fixed overflow of just one byte).
   931  
   932  * JPEG: Promoting certain libjpeg warnings to errors caused much more
   933    problems than expected.  The promotion of warnings to errors is
   934    removed.  Claimed pixel dimensions are validated by file size before
   935    allocating memory for the pixels.
   936  
   937  * IntegralRotateImage(): Assure that reported error in rotate by 270
   938    case does immediately terminate processing.
   939  
   940  * MNG: Fix possible null pointer reference related to DEFI chunk
   941    parsing.  Fix minor heap read overflow (constrained to just one
   942    byte) due to an ordering issue in a limit check.  Fix memory leaks
   943    in error path.
   944  
   945  * WebP: Fix stack buffer overflow in WriteWEBPImage() which occurs
   946    with libwebp 0.5.0 or newer due to a structure type change in the
   947    structure passed to the progress monitor callback.
   948  
   949  * WPG: Memory leaks fixed.
   950  
   951  New Features:
   952  
   953  * None
   954  
   955  API Updates:
   956  
   957  * InterpolateViewColor(): This function now returns MagickPassFail (an
   958    unsigned int) rather than void so that errors can be efficiently
   959    reported.
   960  
   961  * The magick/pixel_cache.h header is updated to add deprecation
   962    attributes such that code using GetPixels(), GetIndexes(), and
   963    GetOnePixel() will produce deprecation warnings for compilers which
   964    support them.  These functions will not be removed in the 1.3.X
   965    release series and when they are removed, pre-processor macros will
   966    be added so a replacement function is used instead.  There is a
   967    long-term objective to eliminate functionally-redundant pixel cache
   968    functions to only the ones with the best properties since this
   969    reduces maintenance and may reduce the depth of the call stack
   970    (improving performance).
   971  
   972  Feature improvements:
   973  
   974  * None
   975  
   976  Windows Delegate Updates/Additions:
   977  
   978  * None
   979  
   980  Build Changes:
   981  
   982  * PerlMagick: Sanitize PACKAGE_VERSION so that Perl is not confused by
   983    any trailing alpha character.
   984  
   985  * Improved symbol renaming due to adding --enable-symbol-prefix.  Some
   986    symbols (for static const strings) were not being included in the
   987    renaming.
   988  
   989  
   990  Behavior Changes:
   991  
   992  * None
   993  
   994  1.3.27 (December 9, 2017)
   995  =========================
   996  
   997  Special Issues:
   998  
   999  * None
  1000  
  1001  Security Fixes:
  1002  
  1003  * CMYK: Fix heap overwrites in raw CMYK writer.  Fix heap overwrites
  1004    in raw CMYK reader (noticed when doing montage).
  1005  
  1006  * GIF: Assure that global colormap is initialized.
  1007  
  1008  * DescribeImage(): Fix possible heap write overflow when describing
  1009    visual image directory. Fix possible heap read overflow while
  1010    accessing heap data, and possible information disclosure while
  1011    describing the IPTC profile.
  1012  
  1013  * DICOM: Fix huge memory allocation based on bogus length value (DOS
  1014    opportunity).
  1015  
  1016  * DrawDashPolygon(): Fix heap out of bounds read in render code.
  1017  
  1018  * GRAY: Fix heap overwrites in raw GRAY reader (noticed when doing
  1019    montage).
  1020  
  1021  * JNG: Fix heap overruns.  Fix assertions.
  1022  
  1023  * JNG: Prevent a crash due to zero-length color_image while reading a
  1024    JNG image. (CVE-2017-11102).  Reject JNG files with unreasonable
  1025    dimensions given the file size (avoid DOS).
  1026  
  1027  * JNX: Fix DOS due to excessive memory allocations with corrupt file.
  1028  
  1029  * JPEG: Do not allocate backing image pixels until a scanline has been
  1030    successfully read.  Avoids DOS opportunity with suitably
  1031    manufactured file.
  1032  
  1033  * MAP: Fix null pointer dereference or segmentation violation.
  1034  
  1035  * MAT: Fix heap write overflow.
  1036  
  1037  * MNG: Reject over-large (65k by 65k) image.  Fix heap overwrites.
  1038  
  1039  * PAM: Fix heap buffer overflow in PAM writer for 1 bit/sample + alpha.
  1040  
  1041  * PICT: Fix excessive memory allocation due to malformed image file.
  1042  
  1043  * PNG: Fix heap buffer overflow in PNG writer when promoting from
  1044    indexed PNG to RGBA.
  1045  
  1046  * PNM: Fix DOS due to excessive memory allocations with corrupt file.
  1047  
  1048  * RGB: Fix heap overwrite in raw RGB writer. Fix heap overwrites in
  1049    raw RGB reader (noticed when doing montage).
  1050  
  1051  * RLE: Fix DOS opportunities due to false claims in image header.  Fix
  1052    heap out of bounds read.
  1053  
  1054  * SFW: Avoid possible heap write overflow.
  1055  
  1056  * SUN: Fix heap read overflow.  Fix DOS due to excessive memory
  1057    allocations with corrupt file.
  1058  
  1059  * SVG: Fix heap write overflow.
  1060  
  1061  * TIFF: Use heuristics to avoid DOS (excessive memory use) due to
  1062    false claims by input file.  It is possible that this may reject
  1063    some valid files.  Fix possible small heap overwrite beyond the
  1064    allocated scanline buffer due to the NumberOfObjectsInArray() macro
  1065    rounding up rather than down.
  1066  
  1067  * UIL: Fix heap overwrite in writer.
  1068  
  1069  * WPG: Fix DOS issues (memory, disk space, CPU time) due to
  1070    insufficient validations.  Fix heap overwrites.
  1071  
  1072  * XBM: Fix DOS issue where code remains stuck in loop and does not
  1073    return.
  1074  
  1075  * XV 332 (PNM): Fix null pointer dereference due to malformed file.
  1076  
  1077  * TracePSClippingPath()/TraceSVGClippingPath(): Fix heap out of bounds
  1078    read.
  1079  
  1080  * Validate path entries in the MAGICK_CODER_MODULE_PATH and
  1081    MAGICK_FILTER_MODULE_PATH environment variables and convert all
  1082    paths to real paths if possible. This avoids possible use of
  1083    relative paths to load modules (a possible security issue), or the
  1084    possibility of adding a directory which was in the path, but
  1085    missing, and may improve efficiency by removing non-existent paths.
  1086  
  1087  Bug fixes:
  1088  
  1089  * AVS: Memory leaks eliminated.
  1090  
  1091  * CINEON: Fix possible use of NULL pointer.
  1092  
  1093  * CMYK: Memory leaks eliminated.
  1094  
  1095  * CUT: Memory leaks eliminated.  Fix possible use of NULL pointer.
  1096  
  1097  * DCM: Fix possible use of NULL pointer.
  1098  
  1099  * DrawImage(): Avoid "negative" strncpy().  This seems to be benign
  1100    with glibc but perhaps not with other implementations.
  1101  
  1102  * DPX: Memory leaks eliminated.
  1103  
  1104  * EMF: Fix possible use of NULL pointer.
  1105  
  1106  * FindMagickModule(): Fix possible use of NULL pointer.
  1107  
  1108  * FITS: Fix memory leak.
  1109  
  1110  * GIF: Fix memory leak.
  1111  
  1112  * HDF: Memory leaks eliminated.
  1113  
  1114  * HISTOGRAM: Fix memory leak.
  1115  
  1116  * JNG: Memory leaks eliminated. Memory use after free and double-free
  1117    issues eliminated.  Error reporting fixes.
  1118  
  1119  * Magick::Options::strokeDashArray(): Fix possible use of NULL pointer.
  1120  
  1121  * MagickXFileBrowserWidget(): Fix possible use of NULL pointer.
  1122  
  1123  * MAT: Memory leaks eliminated.
  1124  
  1125  * MagickMapCloneMap(): Fix possible assertion failure.
  1126  
  1127  * MNG: Memory use after free issues eliminated.  Fix possible use of
  1128    NULL pointer.  Fix memory leaks.
  1129  
  1130  * MontageImageCommand(): Fix memory leaks.
  1131  
  1132  * MPC: Fix memory leak in writer.
  1133  
  1134  * MPEG: Fix memory leaks in writer.
  1135  
  1136  * MTV: Memory leaks eliminated.
  1137  
  1138  * NTRegistryKeyLookup(): Fix possible use of NULL pointer.
  1139  
  1140  * NTGetTypeList(): Fix possible use of NULL pointer.
  1141  
  1142  * PCD: Memory leaks eliminated.
  1143  
  1144  * PCL: Fix null pointer dereference in PCL writer.
  1145  
  1146  * PCX: Memory leaks eliminated.
  1147  
  1148  * PALM: Fix possible use of NULL pointer. Fix memory leak.
  1149  
  1150  * PICT: Memory leaks eliminated.
  1151  
  1152  * PNG: Fix small (one-off) heap read overflow.
  1153  
  1154  * PNM: Fix memory leaks.
  1155  
  1156  * PS: Fix use of null pointer in error path.
  1157  
  1158  * PWP: Fix possible use of null pointer.
  1159  
  1160  * ReplaceImageColormap(): Throw an exception rather than assertion if
  1161    the input image is not colormapped.
  1162  
  1163  * RGB: Fix memory leak.
  1164  
  1165  * SegmentImage(): Fix possible use of NULL pointer.
  1166  
  1167  * SetImageProfile(): Fix possible assertion failure.
  1168  
  1169  * SGI: Check for EOF while reading SGI file header.
  1170  
  1171  * SUN: Fix memory leak.
  1172  
  1173  * TIFF: Fix possible use of NULL pointer.  Fix memory leaks in writer.
  1174  
  1175  * TIM: Fix memory leak.
  1176  
  1177  * TOPOL: Fix possible use of NULL pointer.  Fix memory leaks.
  1178  
  1179  * VIFF: Fix memory leak.
  1180  
  1181  * WEBP: Detect partial write to output file.
  1182  
  1183  * WPG: Fix possible use of null pointer. Fix excessive use of disk
  1184    resources due to insufficient validations.
  1185  
  1186  * WriteImage(): Restore use of GetBlobStatus() to test if an I/O error
  1187    was encountered while writing output file. This assures that I/O
  1188    failure in writers which do not themselves verify writes is assured
  1189    to be reported.
  1190  
  1191  * WMF: Memory use after free issues eliminated.
  1192  
  1193  * YUV: Fix memory leaks.
  1194  
  1195  
  1196  New Features:
  1197  
  1198  * PNG: Implemented eXIf chunk support.
  1199  
  1200  * WEBP: Add support for EXIF and ICC metadata provided that at least
  1201    libwebp 0.5.0 is used.
  1202  
  1203  * Magick++ Image autoOrient(): New Image method to auto-orient an
  1204    image so it looks right-side up by default.
  1205  
  1206  Feature improvements:
  1207  
  1208  * None
  1209  
  1210  Windows Delegate Updates/Additions:
  1211  
  1212  * Libtiff is updated to libtiff 4.0.9.
  1213  
  1214  Build Changes:
  1215  
  1216  * JPEG/PNG: The SETJMP_IS_THREAD_SAFE definition is used to determine
  1217    if setjmp/longjmp are thread safe.  If these interfaces are thread
  1218    safe, then concurrent reads/writes are possible.  This definition is
  1219    false for Solaris but true for Linux.  JPEG and PNG will be fully
  1220    concurrent if this definition is enabled.
  1221  
  1222  Behavior Changes:
  1223  
  1224  * PALM: PALM writer is disabled.
  1225  
  1226  * ThrowLoggedException(): Capture the first exception at
  1227    ErrorException level or greater, or only capture exception if it is
  1228    more severe than an already reported exception.
  1229  
  1230  * DestroyJNG(): This internal function is now declared static and is
  1231    removed from shared library or DLL namespace.
  1232  
  1233  
  1234  1.3.26 (July 4, 2017)
  1235  =====================
  1236  
  1237  Special Issues:
  1238  
  1239  * None
  1240  
  1241  Security Fixes:
  1242  
  1243  * DPX: Fix excessive use of memory (DOS issue) due to file header
  1244    claiming large image dimensions but insufficient backing
  1245    data. (CVE-2017-10799).
  1246  
  1247  * JNG: Fix memory leak when reading invalid JNG image (CVE-2017-8350).
  1248  
  1249  * MAT: Fix excessive use of memory (DOS issue) due to continuing
  1250    processing with insufficient data and claimed large image
  1251    size. Verify each file extent to make sure that it is within range
  1252    of file size. (CVE-2017-10800).
  1253  
  1254  * META: Fix heap overflow while parsing 8BIM chunk (CVE-2016-7800).
  1255  
  1256  * PCX: Fix denial of service issue.
  1257  
  1258  * RLE: Fix abnomally slow operation (denial of service issue) with
  1259    intentionally corrupt colormapped file.
  1260  
  1261  * PICT: Fix possible buffer overflow vulnerability given suitably
  1262    truncated input file.
  1263  
  1264  * PNG: Enforce spec requirement that the dimensions of the JPEG
  1265    embedded in a JDAT chunk must match the JHDR dimensions
  1266    (CVE-2016-9830).
  1267  
  1268  * PNG: Avoid NULL dereference when MAGN chunk processing fails.
  1269  
  1270  * SCT: Fix stack-buffer read overflow (underflow?) while reading SCT
  1271    header.
  1272  
  1273  * SGI: Fix denial of service issues.  Delay large memory allocations
  1274    until file header has fully passed sanity checks.
  1275  
  1276  * TIFF: Fix out of bounds read when reading CMYKA TIFF which claims to
  1277    have only 2 samples per pixel (CVE-2017-6335).
  1278  
  1279  * TIFF: Fix out of bounds read when reading RGB TIFF which claims to
  1280    have only 1 sample per pixel (CVE-2017-10794).
  1281  
  1282  * WPG: Fix heap overflow (CVE-2016-7996).  Fix assertion crash
  1283    (CVE-2016-7997).
  1284  
  1285  Bug fixes:
  1286  
  1287  * DifferenceImage(): Fix Fix all-black difference image if an input
  1288    file is colormapped.
  1289  
  1290  * EXIF orientation was not being properly detected for some files.
  1291  
  1292  * -frame: The `import` command -frame handling was improperly
  1293    implemented and was using already freed data.
  1294  
  1295  * GIF: Fixes for "Excessive LZW string data" problem.
  1296  
  1297  * Magick++: Bug fixes to PathSmoothCurvetoRel::operator() and
  1298    PathSmoothCurvetoRel::operator().
  1299  
  1300  * PAM: Support writing GRAYSCALE PAM format.
  1301  
  1302  * PNG: Fix memory leaks.
  1303  
  1304  * SVG: Fixed a memory leak.  Fixed a possible null pointer dereference.
  1305  
  1306  * TclMagick: Problem that TkMagick could not resolve functions from
  1307    TclMagick under Linux is fixed.
  1308  
  1309  * TclMagick: Fix parser validatation in magickCmd() to avoid crash
  1310    given a syntax error.
  1311  
  1312  * TIFF: Fix for reading old JPEG files (avoids "Improper call to JPEG
  1313    library in state 0. (LibJpeg).").
  1314  
  1315  * TXT: Fixed memory leak.
  1316  
  1317  * XCF: Error checking is improved.
  1318  
  1319  New Features:
  1320  
  1321  * EXIF rotation: Support is added such that the EXIF orientation tag
  1322    is updated when the image is rotated.
  1323  
  1324  * MAT: Now support reading multiple images from Matlab V4 format.
  1325  
  1326  * Magick++: Orientation method now updates orientation in EXIF
  1327    profile, if it exists.
  1328  
  1329  * Magick++: Added Image attribute method which accepts a character
  1330    pointer argument, and will remove the attribute if the value
  1331    argument is NULL.
  1332  
  1333  * -orient: The -orient command line option now also updates the
  1334    orientation in the EXIF profile, if it exists.
  1335  
  1336  * PGX: Support PGX JPEG 2000 format for reading and writing (within
  1337    the bounds of what JasPer supports).
  1338  
  1339  * Wand API: Added MagickAutoOrientImage(),
  1340    MagickGetImageOrientation(), MagickSetImageOrientation(),
  1341    MagickRemoveImageOption(), and MagickClearException().
  1342  
  1343  
  1344  Feature improvements:
  1345  
  1346  * None
  1347  
  1348  Windows Delegate Updates/Additions:
  1349  
  1350  * TIFF: Updated to libtiff 4.0.8.
  1351  
  1352  Build Changes:
  1353  
  1354  * TclMagick: Updated configure to use latest TEA tcl.m4 version 3.10.
  1355    Support for AM_DISTCHECK_CONFIGURE_FLAGS so that 'make distcheck'
  1356    remembers configuration options, and also to uninstall pkgIndex.tcl.
  1357  
  1358  * VisualMagick Configure: A 'quantum' command line argument is added
  1359    to set the default quantum depth in the wizard drop-down list.  This
  1360    This allows setting the quantum depth when the /nowizard argument
  1361    was supplied.
  1362  
  1363  Behavior Changes:
  1364  
  1365  * The installer for the Windows build no longer includes IMDisplay
  1366    (simple display program), ImageMagickDLL, and PerlMagick for
  1367    ActiveState Perl.  These are still available to build from the
  1368    source tree.  All of these depend on proprietary components.
  1369  
  1370  1.3.25 (September 5, 2016)
  1371  ==========================
  1372  
  1373  Special Issues:
  1374  
  1375  * None
  1376  
  1377  Security Fixes:
  1378  
  1379  * EscapeParenthesis(): I was notified by Gustavo Grieco of a heap
  1380    overflow in EscapeParenthesis() used in the text annotation code.
  1381    While not being able to reproduce the issue, the implementation of
  1382    this function is completely redone.  This issue was assigned
  1383    CVE-2016-7447 after the release.
  1384  
  1385  * Utah RLE: Reject truncated/absurd files which caused huge memory
  1386    allocations and/or consumed huge CPU.  Problem was reported by
  1387    Agostino Sarubbo based on testing with AFL.  This issue was assigned
  1388    CVE-2016-7448 after the release.
  1389  
  1390  * SVG/MVG: Fix another case of CVE-2016-2317 (heap buffer overflow) in
  1391    the MVG rendering code (also impacts SVG).  This issue (remaining
  1392    part) was assigned CVE-2016-7446 after the release.
  1393  
  1394  * TIFF: Fix heap buffer read overflow while copying sized TIFF
  1395    attributes.  Problem was reported by Agostino Sarubbo based on
  1396    testing with AFL.  This issue was assigned CVE-2016-7449 after the
  1397    release.
  1398  
  1399  Bug fixes:
  1400  
  1401  * GetToken(): Fix obscure bug (read beyond end of string buffer)
  1402    noticed while parsing a MVG file.  This problem was reported by
  1403    Gustavo Grieco.
  1404  
  1405  * MVG rendering: Fix undesired hard errors when some objects were
  1406    drawn outside of the image bounds.  Requests to draw objects
  1407    entirely outside of the image should be silently ignored.
  1408  
  1409  * MVG/SVG rendering: Fix gradient size sanity checks which were
  1410    causing gradient requests to fail.  Due to a design weakness in that
  1411    gradient images allocate resources rather than being computations at
  1412    point of use, the maximum gradient image size is now hard-limited to
  1413    5000x5000 pixels until the design problem is fixed.  Some SVG icons
  1414    (as small as 8x8 pixels) authored using Inkscape request absurdly
  1415    huge gradients.  Gradient sizes as large as 20,000x20,000 have been
  1416    observed in SVG icon files delivered by packages on an Ubuntu Linux
  1417    system.
  1418  
  1419  * SVG: Fix some memory leaks which occur on parsing error.
  1420  
  1421  New Features:
  1422  
  1423  * None
  1424  
  1425  Feature improvements:
  1426  
  1427  * ElapsedTime(): Use clock_gettime() (when available with default
  1428    linkage) to obtain elapsed time.
  1429  
  1430  * DescribeImage(): Provide 6 digits of seconds precision in in elapsed
  1431    time output.  Previously the resolution was rounded up to a full
  1432    second.
  1433  
  1434  Windows Delegate Updates/Additions:
  1435  
  1436  * webp: Updated bundled libwebp to release 0.5.1.
  1437  
  1438  * libxml: Updated bundled libxml2 to release 2.9.4.
  1439  
  1440  * lcms: Updated bundled lcms2 to release 2.8.
  1441  
  1442  * png: Update bundled libpng to release 1.6.24.
  1443  
  1444  Build Changes:
  1445  
  1446  * OpenMP is properly configured for clang 3.8 using its own '-lomp'
  1447    rather than '-lgomp'.
  1448  
  1449  Behavior Changes:
  1450  
  1451  * SVG: Some SVG files may be rejected due to absurdly large gradient
  1452    requests.
  1453  
  1454  * The 'identify' and 'info' functionality only shows the pixel read
  1455    rate if image was not read in 'ping' mode. Provide 6 digits of
  1456    seconds precision in in elapsed time output.
  1457  
  1458  1.3.24 (May 30, 2016)
  1459  ==========================
  1460  
  1461  .. _`GCC bug 53967` : http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53967
  1462  
  1463  Special Issues:
  1464  
  1465  * A shell exploit (CVE-2016-5118) was discovered associated with a
  1466    filename syntax where file names starting with '|' are intepreted as
  1467    shell commands executed via popen().  Insufficient sanitization in
  1468    the SVG and MVG renderers allows such filenames to be passed through
  1469    from potentially untrusted files.  There might be other ways for
  1470    untrusted inputs to produce such filenames.  Due to this issue,
  1471    support for the feature is removed entirely.
  1472  
  1473  * A shell exploit was discovered associated with the gnuplot delegate
  1474    and which is triggered by the 'gplt' entry in delegates.mgk.  A
  1475    remote exploit is possible if the attacker can cause a provided SVG
  1476    or MVG file to be rendered (or the user opens a provided file).  The
  1477    gnuplot program must be installed in order for the exploit to be
  1478    successful.  It is strongly recommended to remove this entry in all
  1479    delegates.mgk files.
  1480  
  1481  * Due to `GCC bug 53967`_, several key agorithms (e.g. convolution)
  1482    may execute much faster (e.g. 2-3X) for x86-64 and/or when SSE is
  1483    enabled for floating point math (`-mfpmath=sse`) if the GCC option
  1484    `-frename-registers` is used. Default 32-bit builds do not
  1485    experience the problem since they use '387 math.  It is not clear in
  1486    what version of GCC this problem started but it was not noticed by
  1487    the developers until the GCC 4.6 timeframe.  Other compilers do not
  1488    suffer from this bug.  Please lobby the GCC project to fix this
  1489    embarrassing performance bug.
  1490  
  1491  Security Fixes:
  1492  
  1493  * BLOB: Remove support for reading input from a shell command, or
  1494    writing output to a shell command, by prefixing the specified
  1495    filename (containing the command) with a '|'.  This feature provided
  1496    a remote shell execution opportunity.
  1497  
  1498  * DIB: Fixed out of bounds reads.  Added more header validations.
  1499  
  1500  * JNG: File size limits are enforced.
  1501  
  1502  * MAT: Fixed denial of service opportunity.  Fix hang on corrupt deflate stream.
  1503  
  1504  * META: Fixed out of bounds reads and writes.
  1505  
  1506  * MIFF: Fixed thrown assertion.
  1507  
  1508  * MSL: Ignore the file extension on MSL files.  It is necessary to add
  1509    a "msl:" prefix to MSL files to read the as an image.
  1510  
  1511  * MVG: No longer assume that files ending with extension ".mvg" are
  1512    MVG files.  MVG parsing does more validity checking on its input.
  1513    Assure that enough PrimitiveInfo structures are allocated in advance
  1514    to support a given vector path (heap overflow problem).
  1515  
  1516  * PCX: Fixed unreasonable memory allocation due to intentionally
  1517    corrupt file.
  1518  
  1519  * PDB: Fixed a heap buffer overflow and out of bounds read.
  1520  
  1521  * PICT: Fixed an out of bounds write.
  1522  
  1523  * PS: Ghostscript is now always run with -dSAFER for safer execution.
  1524  
  1525  * PSD: Fixed segmentation violations, heap buffer overflows, and out
  1526    of bounds writes.
  1527  
  1528  * RLE: Fixed out of bounds reads and writes.
  1529  
  1530  * ReadImages(): Fixed a possible infinite recursion due to a crafted input file.
  1531  
  1532  * RotateImage(): Fixed thrown assertion.
  1533  
  1534  * SGI: Fixed out of bounds writes.
  1535  
  1536  * SUN: Fixed out of bounds reads and writes.
  1537  
  1538  * SVG: Fixed heap and stack buffer overflows, as well as segmentation
  1539    violations (CVE-2016-2317 and CVE-2016-2318).  Also fixed endless
  1540    loop, unexpectedly large memory allocation, divide by zero, and
  1541    recursion issues.
  1542  
  1543  * TIFF: Fixed an assertion while reading.  Fixed benign heap overflow.
  1544  
  1545  * TMP: Adding a "tmp:" prefix to a filename no longer removes the file
  1546    since this seems dangerous.
  1547  
  1548  * VIFF: Fix excessive memory allocation with intentionally corrupted input file.
  1549  
  1550  * XCF: Fixed a heap buffer overflow.
  1551  
  1552  * XPM: Fixed several heap buffer overflows, and out of bound
  1553    reads/writes.  Also fixed a case of excessive memory allocation.
  1554  
  1555  * delegate.mgk: The default delegate.mgk file has been pared down in
  1556    order to reduce security exposure.
  1557  
  1558  * gnuplot ('gplt' delegate in delegates.mgk): Support for rendering
  1559    gnuplot files is removed since the format is inherently insecure.
  1560  
  1561  * File names: File names starting with a '|' character are no longer
  1562    interpreted as shell commands to be executed as input or output.
  1563  
  1564  
  1565  Bug fixes:
  1566  
  1567  * BMP: Fix reading 24-bit Microsoft BMP which claims to have a
  1568    colormap.
  1569  
  1570  * FILE: `file://` URLs are properly supported now (they never worked
  1571    before).
  1572  
  1573  * JP2: It is now possible to write lossless JPEG 2000 "JP2" format.
  1574  
  1575  * SVG: Support font-size "medium".
  1576  
  1577  New Features:
  1578  
  1579  * Blob I/O C APIs: Added signed versions of short and long Read/Write
  1580    functions.
  1581  
  1582  * FILE: `file://` URLs are properly supported now (they never worked
  1583    before).
  1584  
  1585  * MAT: Matlab V4 is now partially supported.
  1586  
  1587  * Magick++: Added double-precision xResolution() and yResolution()
  1588    methods to support setting the horizontal and vertical resolution
  1589    with double floating point precision.
  1590  
  1591  * Mogrify now supports a -preserve-timestamp option to preserve file
  1592    access and modification timestamps.
  1593  
  1594  Feature improvements:
  1595  
  1596  Windows Delegate Updates/Additions:
  1597  
  1598  * Updated bundled libpng to release 1.6.19.
  1599  
  1600  * Updated bundled libwebp to release 0.4.4.
  1601  
  1602  * Update bundled libxml2 to release 2.9.3.
  1603  
  1604  * Update bundled freetype to release 2.6.2.
  1605  
  1606  Build Changes:
  1607  
  1608  * Added ``--enable-broken-coders`` configure option to enable file
  1609    format support which may be broken or cause security issues.  The
  1610    PSD format is now classified as "broken" (until it is fixed).
  1611  
  1612  Behavior Changes:
  1613  
  1614  * PSD format is not included in the build by default.
  1615  
  1616  * Files ending with ".mvg" and ".msl" are not assumed to be image
  1617    files by default.
  1618  
  1619  * File names starting with '|' are no longer treated as shell
  1620    commands.
  1621  
  1622  * Gnuplot and POV delegate support is removed from the default
  1623    delegate.mgk file.
  1624  
  1625  1.3.23 (November 7, 2015)
  1626  ==========================
  1627  
  1628  Special Issues:
  1629  
  1630  * Due to `GCC bug 53967`_, several key agorithms (e.g. convolution)
  1631    may execute much faster (e.g. 2-3X) for x86-64 and/or when SSE is
  1632    enabled for floating point math (`-mfpmath=sse`) if the GCC option
  1633    `-frename-registers` is used. Default 32-bit builds do not
  1634    experience the problem since they use '387 math.  It is not clear in
  1635    what version of GCC this problem started but it was not noticed by
  1636    the developers until the GCC 4.6 timeframe.  Other compilers do not
  1637    suffer from this bug.  Please lobby the GCC project to fix this
  1638    embarrassing performance bug.
  1639  
  1640  
  1641  Security Fixes:
  1642  
  1643  * ScaleImage(): While not strictly a security issue, requesting to
  1644    scale an image while retaining the original number of rows will lead
  1645    to a program crash or memory corruption due to double-free.
  1646  
  1647  Bug fixes:
  1648  
  1649  * ScaleImage(): Fix problem with new width/height match original
  1650    (regression added by 1.3.22).
  1651  
  1652  * ScaleImage(): Fix double-free when new rows matches original rows
  1653    (regression added by 1.3.22).
  1654  
  1655  * MinGW build fix related to eliminating a sleep() macro which
  1656    conflicts with a MinGW-provided inline sleep() function.
  1657  
  1658  * PNG: Issue a warning instead of an error when attempting to read a
  1659    PNG file containing a zero-length profile.  This allows the file to
  1660    be read.
  1661  
  1662  * identify: Fix problem in that `identify -format "%A"` (to test if
  1663    transparency is supported in image) does not always produce the
  1664    correct results.
  1665  
  1666  New Features:
  1667  
  1668  * None.
  1669  
  1670  Feature improvements:
  1671  
  1672  * None.
  1673  
  1674  Performance Improvements:
  1675  
  1676  * None.
  1677  
  1678  Windows Delegate Updates/Additions:
  1679  
  1680  * None.
  1681  
  1682  Build Changes:
  1683  
  1684  * Configure: Removed CFLAGS and LDFLAGS deduplication code which
  1685    caused problems for user-provided CFLAGS and LDFLAGS which added and
  1686    then removed compiler/linker options.  Specifically, this fixes a
  1687    problem with creating OS X universal builds.
  1688  
  1689  * Configure: Add tests for 'ps2write' and 'eps2write' which are
  1690    available in recent Ghostscript.
  1691  
  1692  Behavior Changes:
  1693  
  1694  * None
  1695  
  1696  
  1697  1.3.22 (October 4, 2015)
  1698  ==========================
  1699  
  1700  .. _`GCC bug 53967` : http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53967
  1701  
  1702  
  1703  Thanks:
  1704  
  1705  * Coverity: We thank Coverity for providing free service for free
  1706    software projects, and thank Jodie Cunningham for getting the
  1707    project set up in Coverity.
  1708  
  1709  Special Issues:
  1710  
  1711  * Due to `GCC bug 53967`_, several key agorithms (e.g. convolution)
  1712    may execute much faster (e.g. 2-3X) for x86-64 and/or when SSE is
  1713    enabled for floating point math (`-mfpmath=sse`) if the GCC option
  1714    `-frename-registers` is used. Default 32-bit builds do not
  1715    experience the problem since they use '387 math.  It is not clear in
  1716    what version of GCC this problem started but it was not noticed by
  1717    the developers until the GCC 4.6 timeframe.  Other compilers do not
  1718    suffer from this bug.  Please lobby the GCC project to fix this
  1719    embarrassing performance bug.
  1720  
  1721  * Magick++: Any libraries or applications using Magick++ should be
  1722    rebuilt in order to use this new release.  Libraries and
  1723    applications will be able to continue to use prior versions of
  1724    Magick++ without being re-built, while benefiting from updated C
  1725    libraries, provided that the system supports library versioning.
  1726  
  1727  Security Fixes:
  1728  
  1729  * General Coverity fixes.  Some might have security consequences.
  1730  
  1731  * Ghostscript options concatenation is more secure against buffer
  1732    overflow.
  1733  
  1734  * Windows: Built-in random number generator is now salted using
  1735    CryptGenRandom().  This improves the robustness of the temporary
  1736    file allocator.
  1737  
  1738  Bug fixes:
  1739  
  1740  * Coverity Fixes: Large amounts of fixes due to Coverity static
  1741    analysis.  See the ChangeLog and Mercurial for details. Coverity now
  1742    reports zero issues.
  1743  
  1744  * General: Fix problems with reading filenames that include a colon.
  1745  
  1746  * General: Fixed performance problem with sub-image path extraction
  1747    when there are many files in the directory.
  1748  
  1749  * General: Add missing options in utility help messages.
  1750  
  1751  * BMP: Reader was wrongly rejecting RLE-compressed files as being too
  1752    small (regression added in 1.3.21 release).
  1753  
  1754  * BMP: Fix inverted alpha channel when writing BGRA8888 format.
  1755  
  1756  * DrawAffineImage(): Fix problem with negative x offset.
  1757  
  1758  * DrawAffineImage(): Fix problem that sometimes output rows are skipped when using OpenMP.
  1759  
  1760  * EXIF: Properly validate GPS_OFFSET.
  1761  
  1762  * -format: %Q now reports JPEG quality estimate if it is available.
  1763  
  1764  * -geometry: Fix handling of area geometries in the form "5000000@".
  1765  
  1766  * MagickGetImageGravity(): Prototype was missing in header files.
  1767  
  1768  * MIFF: Memory leak fixes.
  1769  
  1770  * MIFF: MIFF reader failed to read some MIFF headers properly.
  1771  
  1772  * MIFF: Detect buffer overrun attempt while reading zip compressed data.
  1773  
  1774  * PDF: Set image frame scene ids appropriately.
  1775  
  1776  * PNG: Memory leak fixes.
  1777  
  1778  * PS: Set image frame scene ids appropriately.
  1779  
  1780  * PTIF: Mark reduced frames as SubfileType 0x2 instead of 0x1.
  1781  
  1782  * SetImageProfile(): Avoid crash given NULL profile pointer.
  1783  
  1784  * TIFF: Fix reading Old JPEG and YCbCr sample images from libtiff
  1785    pics-3.8.0.tar.gz image file collection.
  1786  
  1787  * TIFF: Disable matte channel for compression types which don't
  1788    support it.
  1789  
  1790  * XPM: Memory leak fixes.
  1791  
  1792  * XWD: Memory leak fixes.
  1793  
  1794  New Features:
  1795  
  1796  * GRAYA: New subformat for gray coder which supports alpha channel.
  1797    Format specifiers "R", "G", "B", "A", "C", "M", and "Y" may now be
  1798    used to save and restore the associated channel using the same raw
  1799    format as "GRAY".
  1800  
  1801  * Magick++: Image::repage() method added to support resetting 'page'.
  1802  
  1803  * PDF: Added '-define pdf:stop-on-error=true' optoin to cause PDF
  1804    reading to quit immediately upon any error.
  1805  
  1806  * Subframe specification: Now specific PS and PDF pages may be
  1807    selected, including re-ordering.
  1808  
  1809  Feature improvements:
  1810  
  1811  * PALM: Still a work in progress.  Closer to working using netpbm's
  1812    implementation as a reference.
  1813  
  1814  Performance Improvements:
  1815  
  1816  * None.
  1817  
  1818  Windows Delegate Updates/Additions:
  1819  
  1820  * dcraw: Update bundled dcraw to release 9.26.0.
  1821  
  1822  * lcms: Update bundled lcms2 to release 2.7.
  1823  
  1824  * png: Updated bundled libpng to release 1.6.17.
  1825  
  1826  * tiff: Update bundled libtiff to release 4.0.6.
  1827  
  1828  * ttf: Update bundled freetype to release 2.6.
  1829  
  1830  * webp: Updated bundled libwebp to release 0.4.3.
  1831  
  1832  * libxml: Update bundled libxml2 to release 2.9.2.
  1833  
  1834  Build Changes:
  1835  
  1836  * lcms ("Little CMS") v1 is no longer supported.
  1837  
  1838  * VisualMagick: Remember and re-use already given paths.
  1839  
  1840  Behavior Changes:
  1841  
  1842  Magick++: adaptiveThreshold() now accepts a 'double' value and the
  1843  previous version of the method (using 'unsigned int') is deprecated.
  1844  The STL function-object equivalent of the deprecated method is removed
  1845  entirely.
  1846  
  1847  
  1848  1.3.21 (February 28, 2015)
  1849  ==========================
  1850  
  1851  .. _`AddressSanitizer` : https://code.google.com/p/address-sanitizer/
  1852  
  1853  .. _`Valgrind` : http://www.valgrind.org/
  1854  
  1855  .. _`American fuzzy lop` : http://lcamtuf.coredump.cx/afl/
  1856  
  1857  Thanks:
  1858  
  1859    * Gynvael Coldwind and Mateusz Jurczyk of the Google Security Team
  1860      provided test files which allowed us to find and fix security
  1861      problems in the software.
  1862  
  1863    * Hanno Böck provided test files which allowed us to find and fix
  1864      security problems in the software.
  1865  
  1866    * Tobias Ospelt provided test files and advice which allowed us to
  1867      find and fix security problems in the software.
  1868  
  1869    * Michal Zalewski provided test files which allowed us to find and
  1870      fix security problems in the software.
  1871  
  1872    * Jodie Cunningham did lots of fuzzing to find issues and set up the
  1873      project on Coverity for automatic analysis.
  1874  
  1875    * `American fuzzy lop`_ was used to produce and discover many of the
  1876      files which caused problems for the software.
  1877  
  1878    * `AddressSanitizer`_ (ASan) was used to detect and isolate memory
  1879      access issues.
  1880  
  1881    * `Valgrind`_ was used to detect and isolate memory access issues as
  1882      well as memory leaks
  1883  
  1884  Special Issues:
  1885  
  1886    * Due to `GCC bug 53967`_, several key agorithms (e.g. convolution)
  1887      may execute much faster (e.g. 2-3X) for x86-64 and/or when SSE is
  1888      enabled for floating point math (`-mfpmath=sse`) if the GCC option
  1889      `-frename-registers` is used. Default 32-bit builds do not
  1890      experience the problem since they use '387 math.  It is not clear
  1891      in what version of GCC this problem started but it was not noticed
  1892      by the developers until the GCC 4.6 timeframe.  Other compilers do
  1893      not suffer from this bug.  Please lobby the GCC project to fix
  1894      this embarrassing performance bug.
  1895  
  1896    * Magick++: Any libraries or applications using Magick++ should be
  1897      rebuilt in order to use this new release.  Libraries and
  1898      applications will be able to continue to use prior versions of
  1899      Magick++ without being re-built, while benefiting from updated C
  1900      libraries, provided that the system supports library versioning.
  1901  
  1902  Security Fixes:
  1903  
  1904    * Annotate: Some requestable text-substitution attributes caused a
  1905      crash.
  1906  
  1907    * All formats: Image dimensions are checked to assure that they are
  1908      within limits before proceeding to read the image.
  1909  
  1910    * BMP: Fix hang (endless loop) for certain files.
  1911  
  1912    * DCM: Fix crash as well as small heap over-write.
  1913  
  1914    * DPX: Fix crash due to DPX file reporting more elements than it
  1915      has.
  1916  
  1917    * MNG: Validate MHDR chunk length to avoid huge memory allocation
  1918      and DOS.
  1919  
  1920    * PCX: Fix for CVE-2014-8355. Validate file header in order to avoid
  1921      buffer overun later.
  1922  
  1923    * PDB: Detect arithmetic overflows when calculating buffer sizes.
  1924      Fix crash in writer when image width is not even multiple of 16.
  1925      Fix buffer overrun with 2 and 4-bit PDB image files.
  1926  
  1927    * PNM: Validate PGM, PPM, and PAM header MaxValue parameter to avoid
  1928      crash on poorly-formed input.
  1929  
  1930    * PNG: Impose a 10-million limit on dimensions when reading a PNG
  1931      file to avoid denial of service.
  1932  
  1933    * PSD: Avoid problems caused by huge PSD colormap size.
  1934  
  1935    * PSD: Fix small stack over-write if more than 99 layers are written
  1936      to PSD format.
  1937  
  1938    * PSD: Returns immediately if pixel limit was exceeded.
  1939  
  1940    * RLE: URT RLE reader is now more robust with errant files.
  1941  
  1942    * SUN: Header validation is now made fully robust, and arithmetic
  1943      overflows in buffer-size calculations are detected to avoid heap
  1944      overwrite.
  1945  
  1946    * TIFF: Fix crashes for photometrics which may deliver one or three
  1947      samples per pixel (was assuming always three).
  1948  
  1949    * VIFF: Fixes to prevent buffer overflow.  Validate colormap indexes.
  1950  
  1951    * Windows delegates: Fix unexpected argument splitting when invoking
  1952      an external delegate program via delegates.mgk.
  1953  
  1954    * WPG: Fix use of NULL pointers.  Fix buffer overflows.
  1955  
  1956    * XPM: Detect truncated row and quit with error rather than
  1957      over-running a buffer.
  1958  
  1959    * XWD: Improve header validation.  Added to UnstableCoderClass since
  1960      the reader for this format should not be entrusted with
  1961      untrustworthy input.
  1962  
  1963  Bug fixes:
  1964  
  1965    * CIN: Fix problem with text attribute values which are not NULL
  1966      terminated.  Validate sizes claimed by Cineon header.
  1967  
  1968    * Coverity: Fixes for many issues detected by Coverity scan (see
  1969      ChangeLog).
  1970  
  1971    * DPX: Fix problem with text attribute values which are not NULL
  1972      terminated.
  1973  
  1974    * DPX: Fix severe corruption of little-endian 32-bit packed output.
  1975      Corruption was severe enough that it would have been noticed
  1976      immediately.
  1977  
  1978    * Delegates: Fix possible memory leaks when invoking external
  1979      application.
  1980  
  1981    * FITS: Properly validate values provided by file header.
  1982  
  1983    * GIF: Fix use of uninitialized data.
  1984  
  1985    * JBIG: Fix memory leaks.
  1986  
  1987    * JNG: Fix double-free error in error path.
  1988  
  1989    * JPEG: Verify the number of output components before attempting to
  1990      decode the image.
  1991  
  1992    * Magick++: Image resolutionUnits() was not always returning correct
  1993      value.
  1994  
  1995    * Magick++: Locking has not been working properly since the code was
  1996      written in 1998.  Apparently the issue has not been significant
  1997      enough to cause run-time issues.
  1998  
  1999    * ICO: Windows icon reader is now much more robust.
  2000  
  2001    * MIFF: Reader now quits with an error if zip or bzip2 stream is
  2002      corrupted.
  2003  
  2004    * MAT: Fix memory leaks.
  2005  
  2006    * PALM: Reader now reads various input formats (up to version 2)
  2007      correctly whereas it was crashing or otherwise malfunctioning
  2008      before.  More work remains, particularly in the writer.
  2009  
  2010    * PCX: Eliminate memory leaks in error paths.
  2011  
  2012    * PDB: In PDB writer, void possible under-allocation due to
  2013      arthimetic overflow when allocating packets.
  2014  
  2015    * PICT: Fix PICT reader crash with corrupted file.
  2016  
  2017    * PNG: Fix double-free error in error path.
  2018  
  2019    * PNG: Fixed handling of transparency when writing indexed PNG.
  2020  
  2021    * PNG: Avoid reading beyond the end of a tEXt keyword.
  2022  
  2023    * PSD: Fix error when reading PSDs files which have no layers.
  2024  
  2025    * RLA: Fix possible crash due to file header.
  2026  
  2027    * Signal Handling: Signal handling is now more robust and handles
  2028      SIGSEGV and other critical signals.  The sole purpose of the
  2029      default signal handling is to remove any temporary files and quit.
  2030      An informative message is printed for signals other than SIGINT.
  2031  
  2032    * SUN: Sun raster reader was not completely robust. Now it is.
  2033  
  2034    * SWF: Fix pixel cache access errors in 'ping' mode.
  2035  
  2036    * Text annotation: An empty text string is no longer treated as an
  2037      error.
  2038  
  2039    * Text annotation: Fix regression added in 1.3.19 which caused
  2040      spurious drawing errors to be produced while rendering with text
  2041      when all of the text is off the left-hand side of the image.
  2042  
  2043    * TIFF: Fix unreliable reading JBIG compressed files by forcing use
  2044      of strip reader rather than sometimes using scanline reader (which
  2045      libtiff's JBIG codec does not support).
  2046  
  2047    * TIFF: Fix reading or writing planar min-is-white or min-is-black
  2048      images with an associated alpha channel.
  2049  
  2050    * WebP: WebP writer now writes truely lossless output when
  2051      requested.
  2052  
  2053    * identify / GetImageStatistics(): Failed to compute statistics for
  2054      the Black channel of CMYK image files.
  2055  
  2056    * VICAR: Fix problem with continuing to "read" data when there is no
  2057      more data left to read.
  2058  
  2059    * WMF: Fix memory leaks.
  2060  
  2061    * WPG: Fix potential DOS due to long reads during an error
  2062      condition.
  2063  
  2064    * XPM: Avoid strncpy() of overlapping memory.  Fixed memory leaks in
  2065      error paths.  Fixed bad memory access caused by empty file.
  2066  
  2067  New Features:
  2068  
  2069    * compose: Supports composite operator names similar to the major
  2070      \*Magick brand, without losing any compatibility with previous
  2071      naming.
  2072  
  2073    * ICO: Windows ICO reader now supports reading PNG-encoded files.
  2074  
  2075    * Magick++ Geometry: New methods limitPixels() and fillArea() to
  2076      support '@' and '^' geometry qualifiers.  This enhancement breaks
  2077      the ABI due to previous use of inline methods and no place to put
  2078      the new flags.
  2079  
  2080    * Magick++ Image::extent(): New method to place image on sized
  2081      canvas of constant color using gravity.
  2082  
  2083    * Magick++ Image::formatExpression(): New method format a string
  2084      based on a format similar to command-line -format.
  2085  
  2086    * Magick++ Image::resize(): New method to resize image specifying
  2087      geometry, filter, and blur.
  2088  
  2089    * Magick++ STL extentImage: New function object to invoke image
  2090      extent method.
  2091  
  2092    * Magick++ Image::quiet().  New method which blocks (ignores)
  2093      warning exceptions when passed a 'true' argument.
  2094  
  2095    * Resource limits: Added support for image Width and Height limits.
  2096      Default image Width and Height limits are based on the range of a
  2097      32-bit signed integer, even for 64-bit builds which may have
  2098      sufficient numeric range to image an entire galaxy.  Limits may be
  2099      increased as desired.
  2100  
  2101    * TIFF: Use define tiff:ignore-tags to ignore tags in 'corrupted'
  2102      files with unknown and invalid tags.  Use to read TIFF files which
  2103      otherwise can not be read due to errors.
  2104  
  2105    * TIFF: Use '-define tiff:report-warnings=true' to enable that
  2106      warnings reported by libtiff are thrown as warning exceptions so
  2107      that they may be caught or will be reported at the gm
  2108      command-line.
  2109  
  2110    * Windows Exceptions: A handler is registered (due to calling
  2111      InitializeMagick()) to capture Windows Exceptions in a similar
  2112      manner to the existing POSIX signal handler.  If an application is
  2113      using the library and wants to provide its own Windows exception
  2114      handling, then it should make any changes after invoking
  2115      InitializeMagick().
  2116  
  2117  Feature improvements:
  2118  
  2119    * None.
  2120  
  2121  Performance Improvements:
  2122  
  2123    * None.
  2124  
  2125  Windows Delegate Updates/Additions:
  2126  
  2127    * PNG: Update bundled libpng to 1.6.16.  Resolves known security
  2128      issues.
  2129  
  2130    * FreeType: Update bundled Freetype to 2.5.4.  Resolves known
  2131      security issues.
  2132  
  2133    * WebP: Update bundled WebP to 0.4.2 release.
  2134  
  2135    * WebP is auto-linked in Visual Studio.
  2136  
  2137  Build Changes:
  2138  
  2139    * WebP is not included in the build when building with Visual Studio
  2140      6 (1998 vintage compiler!) since it requires more modern C.
  2141  
  2142  Behavior Changes:
  2143  
  2144    * AVI: Support for this format is removed since the implementation
  2145      was worthless.
  2146  
  2147    * TIFF: Now uses YCbCr encoding when JPEG compression is requested
  2148      for an RGB image.
  2149  
  2150  
  2151  1.3.20 (August 16, 2014)
  2152  =========================
  2153  
  2154  Special Issues:
  2155  
  2156    * Due to `GCC bug 53967`_, several key agorithms (e.g. convolution)
  2157      may execute much faster (e.g. 2-3X) for x86-64 and/or when SSE is
  2158      enabled for floating point math (`-mfpmath=sse`) if the GCC option
  2159      `-frename-registers` is used. Default 32-bit builds do not
  2160      experience the problem since they use '387 math.  It is not clear
  2161      in what version of GCC this problem started but it was not noticed
  2162      by the developers until the GCC 4.6 timeframe.  Other compilers do
  2163      not suffer from this bug.  Please lobby the GCC project to fix
  2164      this embarrassing performance bug.
  2165  
  2166  Security Fixes:
  2167  
  2168    * No security issues were reported or fixed.
  2169  
  2170  Bug fixes:
  2171  
  2172    * Compilation: No longer undefine __attribute__ since this may be
  2173      used by system or compiler headers and cause problems.
  2174  
  2175    * BMP: Alpha channel from BMP3 format was inverted.
  2176  
  2177    * PNG: Fix round-trip repeatability issue (due to rounding
  2178      algorithm) with modern versions of libpng.  Prefer the less
  2179      accurate method which does not alter the image.
  2180  
  2181    * PNG: Fix some memory leaks in error-handling paths.
  2182  
  2183    * PNM: Scaling of alpha in sub-ranged pixels is fixed.
  2184  
  2185    * Wand API: Removed development debug fprintf which causes each
  2186      drawing primitive to be printed to stderr.
  2187  
  2188    * PS, PS2, PS3, PDF: Only use resolution from image or -density if
  2189      units were properly specified.  Without units, resolution is
  2190      worthless.
  2191  
  2192    * PS, PS2, PS3, PDF: Use resolution from image if it appears to be
  2193      valid.
  2194  
  2195    * WebP: Fix inverted return status which caused failure to be
  2196      reported instead of success.
  2197  
  2198    * Rotation clipping/shearing errors for short wide images at some
  2199      angles are fixed.
  2200  
  2201    * -geometry: Deal with resize geometry missing width or height
  2202      (e.g. '640x' or 'x480') by substituting the missing value with one
  2203      which preserves the image aspect ratio.  This has been documented
  2204      to be supported since almost the dawn of GraphicsMagick but was
  2205      not actually supported until now.
  2206  
  2207    * -geometry: Support '>' and '<' qualifiers with '@' qualifier to
  2208      specify if image should be resized if larger or lesser than given
  2209      area specification.
  2210  
  2211  New Features:
  2212  
  2213    * Wand API: MagickSetImageGravity() - New function to set image
  2214      gravity.
  2215  
  2216    * Wand API: MagickGetImageGravity() - New function to get image
  2217      gravity.
  2218  
  2219    * Wand API: MagickSetImageMatte() - New function to set the image
  2220      matte channel enable flag.
  2221  
  2222    * Wand API: MagickGetImageMatte() - New function to read the image
  2223      matte channel enable flag.
  2224  
  2225    * Wand API: MagickSetImageGeometry() - New function to set the image
  2226      geometry string.
  2227  
  2228    * Wand API: MagickGetImageGeometry() - New function to get the image
  2229      geometry string.
  2230  
  2231    * Wand API: MagickOperatorImageChannel() - New function to apply an
  2232      operator to an image channel.
  2233  
  2234    * Magick++ API: New Image::thumbnail() method for fast image
  2235      resizing, particularly to make thumbnails.
  2236  
  2237    * Core C API: Added SetLogMethod() to allow an application/library
  2238      to specify a function to be called for logging.
  2239  
  2240    * Clang/LLVM: Provide support for clang/llvm attribute and builtin
  2241      specifiers similar to that provided for GCC.
  2242  
  2243    * OpenMP: OpenMP native locking and thread specific data is
  2244      supported via a configuration option (is not the default).  This
  2245      offers a "pure" OpenMP compilation mode.  No real value for this
  2246      compilation mode has been observed yet but it seems worthy to
  2247      support.
  2248  
  2249    * Coders: Added BrokenCoderClass to mark coders which often
  2250      malfunction or are not very useful in their current condition.
  2251  
  2252    * Composition: Added HardLight composition operator, which is now
  2253      used by PSD and XCF formats, and available via command line,
  2254      Magick++ API, PerlMagick API, and Wand API.
  2255  
  2256    * Composition: Added ScreenCompositePixels composition operator.
  2257  
  2258    * Composition: Added missing Photoshop separable compositing
  2259      operations, Overlay, Exclusion, ColorBurn, ColorDodge, SoftLight,
  2260      LinearBurn, LinearDodge, LinearLight, VividLight, PinLight,
  2261      HardMix.
  2262  
  2263    * +set: Command line utilities now support +set to remove an
  2264      existing image attribute.
  2265  
  2266    * -format: Support additional format specifiers 'g', 'A', 'C', 'D',
  2267      'G', 'H', 'M', 'O', 'P', 'Q', 'T', 'U', 'W', 'X', and '@', similar
  2268      to the major brand.
  2269  
  2270    * -operator: New quantum operators ThresholdBlackNegateQuantumOp and
  2271      ThresholdWhiteNegateQuantumOp. These correspond to -operator
  2272      "Threshold-Black-Negate" and "Threshold-White-Negate".
  2273  
  2274    * TIFF: Now support setting the TIFF "Software" tag for users who do
  2275      not want to admit to using GraphicsMagick.
  2276  
  2277    * WebP: All of the WebP encoder encoder options are now supported
  2278      by -define arguments.
  2279  
  2280  
  2281  Feature improvements:
  2282  
  2283    * Pixel interpolation quality is greatly improved, with minimal
  2284      impact on performance.  Pixel interpolation now also works well
  2285      given an alpha channel.
  2286  
  2287    * WebP: WebP support is now prepared to compile with most WebP
  2288      library versions and supports all features except for those
  2289      pertaining to "RIFF" container support.
  2290  
  2291  Performance Improvements:
  2292  
  2293    * Non-integral image rotation performance has been improved by about
  2294      40%, with lower memory usage as well.
  2295  
  2296    * GradientImage: Update image is_grayscale and is_monochrome flags
  2297      based on gradient color properties.
  2298  
  2299  Windows Delegate Updates/Additions:
  2300  
  2301    * PNG: Libpng 1.6.12 - June 12, 2014.
  2302  
  2303    * JPEG: libjpeg 9a of January 19, 2014.
  2304  
  2305    * FreeType: FreeType 2.5.3 of March 6, 2014.
  2306  
  2307    * WebP: webp 0.4.0 of January 20, 2013.
  2308  
  2309    * zlib: zlib 1.2.8 of April 28, 2013.
  2310  
  2311  Build Changes:
  2312  
  2313    * --without-threads no longer disables use of OpenMP.  Use the
  2314      already existing option --disable-openmp to disable OpenMP.
  2315  
  2316    * Makefiles: Include paths are now exceedingly pedantic to make sure
  2317      that only the required directories are included.
  2318  
  2319    * VisualMagick configure: Improve configure program so that it is
  2320      possible to select QuantumDepth, OpenMP, and 64-bit build via
  2321      configure dialog boxes as well as options on the command line.
  2322      Also automatically detects and deals with similarly named files in
  2323      subdirectories so that WebP support can now build successfully.
  2324  
  2325  Behavior Changes:
  2326  
  2327    * MultiplyCompositePixels: Multiply composition now uses SVG
  2328      interpretation of how alpha should be handled.  No longer does a
  2329      simple multiply of alpha channel.
  2330  
  2331    * Composition: The Difference, Darken, Lighten, and HardLight
  2332      composition operators were modified to support alpha in their
  2333      computations.
  2334  
  2335    * PNG: Using -optimize no longer triggers palette and depth
  2336      optimizations since their implementations have been problematic.
  2337  
  2338  
  2339  1.3.19 (December 31, 2013)
  2340  ==========================
  2341  
  2342  Special Issues:
  2343  
  2344    * Due to `GCC bug 53967`_, several key agorithms (e.g. convolution)
  2345      may execute much faster (e.g. 2-3X) for x86-64 and/or when SSE is
  2346      enabled for floating point math (`-mfpmath=sse`) if the GCC option
  2347      `-frename-registers` is used. Default 32-bit builds do not
  2348      experience the problem since they use '387 math.  It is not clear
  2349      in what version of GCC this problem started but it was not noticed
  2350      by the developers until the GCC 4.6 timeframe.  Other compilers do
  2351      not suffer from this bug.
  2352  
  2353  Security Fixes:
  2354  
  2355    * EPT: Fix crash observed when Ghostscript fails to produce useful
  2356      output.  This was particularly noticeable when Ghostscript was not
  2357      installed.  This crash could be used to cause denial of service.
  2358  
  2359    * PNG: With libpng 1.6.X, avoid a crash while copying a PNG with a
  2360      "known incorrect ICC profile".  This crash could be used to cause
  2361      denial of service.
  2362  
  2363  Bug fixes:
  2364  
  2365    * Build: Fix cross-compilation for MinGW64 on Linux build machine.
  2366  
  2367    * Build: configure FreeType test no longer insists that
  2368      <freetype/freetype.h> can be included.
  2369  
  2370    * CMS profile: Only delete the CMS transform if it is non-null.
  2371      Fixed assertion observed when lcms returned a null profile and
  2372      GraphicsMagick attempted to deallocate it.
  2373  
  2374    * Drawing: Improve error handling logic so that drawing returns
  2375      quickly on pixel access errors rather than plowing on ahead.  This
  2376      avoids problems with SVGs which take seemingly forever to render.
  2377  
  2378    * Drawing via C/C++ APIs: `BevelJoin` no longer causes a MVG parsing
  2379      error.
  2380  
  2381    * EPT: Fix crash observed when Ghostscript fails to produce useful
  2382      output.  This was particularly noticeable when Ghostscript was not
  2383      installed.
  2384  
  2385    * OpenMP: Revert use of omp_set_dynamic() since it caused
  2386      performance issues when using GCC's GOMP implementation and the
  2387      number of threads to use is specified.
  2388  
  2389    * EXIF profile: Support the `SubjectArea` EXIF tag.
  2390  
  2391    * MIFF writer: PseudoClass format was written incorrectly for depth
  2392      greater than 8.
  2393  
  2394    * MIFF writer: RLE compressed format used inverted alpha from the
  2395      other subformats contrary to the MIFF specification.
  2396  
  2397    * MIFF reader: Fixes to be able to read MIFF written by
  2398      ImageMagick 6.X, including DirectClass grayscale images (except
  2399      for RLE compressed).
  2400  
  2401    * Mosaic: Fixed unsigned underflow problem with -mosaic when page
  2402      offset is negative and exceeds image width or height, resulting in
  2403      assertions, out of memory errors, or pixel cache limit errors.
  2404  
  2405    * PDF: Consistently initialize Image page width and height to image
  2406      width and height.  While general to all of GraphicsMagick, this
  2407      change is to assure that the PDF writer computes page dimensioning
  2408      consistently.  PDF page dimensioning was wrong if the image had
  2409      been resized with -geometry "100%".
  2410  
  2411    * PAM: Fix MAXVAL scaling when reading PAM images.  PAM was only
  2412      working correctly for images with 256 or 64k levels.
  2413  
  2414    * PNM: PGM "P2" format writer wrote bad output for 8-bit depth.
  2415  
  2416    * PNG: With libpng 1.6.X, avoid a crash while copying a PNG with a
  2417      "known incorrect ICC profile".
  2418  
  2419    * PNG: Q8 GM build now correctly reads 16-bit PNG files.
  2420  
  2421    * TIFF writer: Try to avoid writing more than 32k strips per image
  2422      by increasing rows-per-strip since some programs fail to read
  2423      images with more than 32k strips per image.
  2424  
  2425    * TIM reader: PSX TIM reports 8-bit depth (rather than 16).
  2426  
  2427    * TTF font rendering: Improve FreeType rendering error logic so that
  2428      rendering returns immediately on pixel access errors rather than
  2429      plowing on ahead.
  2430  
  2431    * TTF font rendering: Support rendering UTF-8 up to 21-bit code
  2432      points.  Was only supporting 16-bit code points.
  2433  
  2434    * Wand API: DrawSetStrokeDashArray() / DrawGetStrokeDashArray(), fix
  2435      failure to work properly due to this code path never being tested.
  2436  
  2437    * Windows Ghostscript: 64-bit GraphicsMagick no longer requires both
  2438      32-bit and 64-bit builds of Ghostscript to be installed in order
  2439      to read Postscript and PDF formats.
  2440  
  2441    * XPM reader: Reported depth now depends on the colormap rather than
  2442      always claiming to be 16-bit.
  2443  
  2444  New Features:
  2445  
  2446    * JPEG: Add support for writing 'XMP' profile.
  2447  
  2448    * PNM: As a simple non-standard extension to the standard PNM and
  2449      PAM formats, support writing and reading 32-bit sample depth.
  2450      Writing such files is only supported by the Q32 build although
  2451      they may be read by any build.
  2452  
  2453    * WebP: Now supports reading and writing Google's WebP format.  This
  2454      feature is not currently supported by the Windows Visual Studio
  2455      build.
  2456  
  2457  Feature improvements:
  2458  
  2459    * Pixel composition based on BlendCompositePixel() is enhanced to
  2460      completely eliminate under-color from the blending if the
  2461      under-pixel is fully transparent.  Also blends based on the
  2462      average opacity of both pixels rather than only the over-pixel.
  2463      This change did not result in any change in the GM test suite
  2464      results but it is possible that there could be some negative
  2465      impact from it.  Please report any issues noticed which are due to
  2466      this change.
  2467  
  2468    * X11 `display`: For DirectClass image, use ThumbnailImage() rather
  2469      than SampleImage() when creating the panner icon to improve the
  2470      quality of the image.
  2471  
  2472  Performance Improvements:
  2473  
  2474    * PNG: `ping` a PNG faster by avoiding reading the image data.
  2475  
  2476  Windows Delegate Updates:
  2477  
  2478    * Updated IJG JPEG library to release 9.
  2479  
  2480    * Updated PNG library to release 1.6.8.
  2481  
  2482    * Updated lcms2 library to release 2.5.
  2483  
  2484    * Updated libxml2 library to release 2.9.1.
  2485  
  2486    * Updated FreeType library to release 2.5.2.
  2487  
  2488  Behavior Changes:
  2489  
  2490    * MIFF: Now writes PseudoClass images correctly when depth is
  2491      greater than 8.  This impacts the reader, which will not be able
  2492      to read previously written incorrect format correctly.  Images
  2493      like this should be very rare.  The solution is to use an older
  2494      GraphicsMagick version to convert such images to a valid storage
  2495      format (with a depth of 8) so that they may be read with this
  2496      version.
  2497  
  2498    * MIFF: Now writes RLE-compressed RGBA images with correct
  2499      alpha. This impacts the reader, which will not be able to read
  2500      previously written incorrect format correctly. Images like this
  2501      should be very rare. A solution is to use an older GraphicsMagick
  2502      version to use a compression algorithm other than RLE so that they
  2503      are read correctly with this version.  Another solution is to
  2504      process problematic images with '-operator Opacity Negate 0' to
  2505      invert the alpha channel.
  2506  
  2507    * TIFF: Returns DirectClass images by default for MINISWHITE and
  2508      MINISBLACK TIFF formats (rather then colormapped).
  2509  
  2510    * Windows: Also search c:\gs\fonts for Ghostscript font files.  This
  2511      search path is normally hard-coded into Ghostscript binaries and
  2512      is a convenient place to put fonts so they may be shared by
  2513      multiple Ghostscript versions.
  2514  
  2515    * XPM: Now limits color resolution to 16-bits, even with Q32 build.
  2516  
  2517  
  2518  1.3.18 (March 10, 2013)
  2519  ==========================
  2520  
  2521  Special Issues:
  2522  
  2523    * Due to `GCC bug 53967`_, several key agorithms (e.g. convolution)
  2524      may execute much faster (e.g. 2-3X) for x86-64 and/or when SSE is
  2525      enabled for floating point math (`-mfpmath=sse`) if the GCC option
  2526      `-frename-registers` is used. Default 32-bit builds do not
  2527      experience the problem since they use '387 math.  It is not clear
  2528      in what version of GCC this problem started but it was not noticed
  2529      by the developers until the GCC 4.6 timeframe.  Other compilers do
  2530      not suffer from this bug.
  2531  
  2532  Security Fixes:
  2533  
  2534    * None.
  2535  
  2536  Bug fixes:
  2537  
  2538    * Fixed bug with format substitutions if input string ends with a
  2539      single '%'.
  2540  
  2541    * BMP: Fixed an old bug with decoding chromaticity primaries.
  2542  
  2543    * PNG: Fixed reading of interlaced images.  Fix reading of sub-8-bit
  2544      palette and grayscale images.  Some PNG sub-formats were written
  2545      incorrectly.  Fix crash in PNG8 writer if image colors happened to
  2546      be non-zero but image was not actually colormapped.
  2547  
  2548    * PNG: Configure script now also searches for libpng versions 16 and
  2549      17.
  2550  
  2551    * TIFF: Fix a crash which was noticed when writing RGBA separated
  2552      (planar) format.
  2553  
  2554    * `--enable-symbol-prefix` was not prefixing all of the C
  2555      symbols. Some core C library functions were not prefixed.  This
  2556      option applies to the Wand library API as well now.
  2557  
  2558    * C API: When input is from a user-provided file descriptor, the
  2559      file position is restored after reading the file header bytes.
  2560      Previously the file position was rewound to the beginning of the
  2561      file.  This allows reading embedded image data from the current
  2562      offset in a file, and allows continuing to use the stream after
  2563      GraphicsMagick has returned the image.
  2564  
  2565    * C API: It is now possible to invoke CloseBlob() multiple times.
  2566  
  2567    * display: Display was supposed to respond to +/-usePixmap, but was
  2568      not. It was responding to +/-use_pixmap.  Now it responds to both.
  2569  
  2570    * Windows/VisualMagick: Fix building GraphicsMagick with Intel ICC
  2571      compiler driven by Visual Studio Professional 2012.
  2572  
  2573    * Windows: Avoid a crash and produce a useful diagnostic if
  2574      Ghostscript is needed but not yet installed.
  2575  
  2576  
  2577  New Features:
  2578  
  2579    * GM utility: New 'batch' command was contributed by Kenneth Xu
  2580      which supports executing any number of other GM utility
  2581      sub-commands in a single invocation in a sort of "batch" script.
  2582      Input may be piped from standard input, from a specified file, or
  2583      from a 'GM >' command prompt.  This utilities front-end allows any
  2584      other program/script to drive 'gm' using a co-process model and
  2585      speeds up execution by eliminating utility start-up/shut-down
  2586      time.
  2587  
  2588    * WIN64 (64-bit Windows): Windows 64-bit is now officially supported.
  2589  
  2590    * convert/mogrify: Now support -auto-orient to automatically rotate
  2591      the image upright for viewing based on its current orientation
  2592      setting.  Also support -orient to support setting the current
  2593      image orientation.  Please note that the orientation property of
  2594      EXIF profiles is not yet updated so the EXIF profile will be wrong
  2595      after using -auto-orient.
  2596  
  2597    * C API: AutoOrientImage(), new function to automatically orient
  2598      the image so that it is upright for normal viewing.
  2599  
  2600    * Wand API: MagickGetImagePage()/MagickSetImagePage(), new functions
  2601      to support getting and setting the image page size and offsets.
  2602  
  2603    * PNG: Added PNG48 and PNG64 support. Added PNG00 support (png
  2604      encoder that inherits its color-type and bit-depth from the input,
  2605      if the input was a PNG datastream).
  2606  
  2607  Feature improvements:
  2608  
  2609    * GraphicsMagick TAP tests may now be run stand-alone using Perl's
  2610      'prove' TAP test driver.
  2611  
  2612  Performance Improvements:
  2613  
  2614    * Detection of glob specifications in file names is more efficient.
  2615  
  2616  Windows Delegate Updates:
  2617  
  2618    * None.
  2619  
  2620  Behavior Changes:
  2621  
  2622    * ltdl: Libltdl is no longer bundled.  Libltdl must be previously
  2623      installed on the system in order to build the modules
  2624      configuration.
  2625  
  2626    * AppendImages() now converts subsequent images to the colorspace of
  2627      the first image, and no longer converts the first image to RGB.
  2628      Instead, it is assumed the user knows what she/he is doing.
  2629  
  2630    * SetImageColorRegion() no longer automatically converts the image
  2631      to RGB.  The user is responsible for assuring that the provided
  2632      color is in the same colorspace as the image.
  2633  
  2634  
  2635  1.3.17 (October 13, 2012)
  2636  ==========================
  2637  
  2638  Security Fixes:
  2639  
  2640    * PNG: Fix for CVE-2012-3438. The Magick_png_malloc function in
  2641      coders/png.c in GraphicsMagick 6.7.8-6 does not use the proper
  2642      variable type for the allocation size, which might allow remote
  2643      attackers to cause a denial of service (crash) via a crafted PNG
  2644      file that triggers incorrect memory allocation.
  2645  
  2646    * Automake (derived): Fix for CVE-2012-3386: The "make distcheck"
  2647      rule in GNU Automake before 1.11.6 and 1.12.x before 1.12.2 grants
  2648      world-writable permissions to the extraction directory, which
  2649      introduces a race condition that allows local users to execute
  2650      arbitrary code via unspecified vectors.
  2651  
  2652  Bug fixes:
  2653  
  2654    * PNG: Reading sub-8-bit palette images is fixed (images looked
  2655      stretched).
  2656  
  2657    * SVG: Fixed bug which allowed MVG and SVG files with long vector
  2658      paths to crash the software.
  2659  
  2660    * SVG: Ignore XML headers rather than rendering them as text.
  2661  
  2662    * MVG/SVG/WMF/-draw: It is now possible to draw a plain ','
  2663      character.
  2664  
  2665    * WMF: Fixed a bug which caused wrong centered-text placement.
  2666  
  2667    * import: Return status was inverted.
  2668  
  2669    * configure: Don't force that liblzma is used just because libtiff
  2670      is used.
  2671  
  2672  New Features:
  2673  
  2674    * The configure script now supports a --enable-quantum-library-names
  2675      option to enable that shared library name includes quantum depth
  2676      to allow shared libraries with different quantum depths to
  2677      co-exist in same directory (only one can be used for development).
  2678  
  2679    * JNX: Support is added for reading the Garmin proprietary Image
  2680      Format.
  2681  
  2682    * BMP: Support an alpha channel in uncompressed 32-bit BMP.
  2683  
  2684  Feature improvements:
  2685  
  2686    * `-lat`: The adaptive threshold algorithm is replaced with a new
  2687      algorithm which scales linearly (rather than quadratically) with
  2688      area size.
  2689  
  2690    * Tests: Test suite is re-written to use TAP-based tests.
  2691  
  2692    * GIF: Reader tries to be better at detecting and reporting
  2693      failures.
  2694  
  2695  Performance Improvements:
  2696  
  2697    * -lat: Adaptive threshold is much faster with large area sizes.
  2698  
  2699  Windows Delegate Updates:
  2700  
  2701    * Dcraw 9.16 is now included in the build (with JPEG and JPEG2000
  2702      support).
  2703  
  2704    * Libxml2 is updated to the 2.9.0 release.
  2705  
  2706    * Libtiff is updated to the 4.0.3 release.
  2707  
  2708    * Lcms2 is updated to the 2.4 release.
  2709  
  2710    * Libpng is updated to the 1.5.13 release.
  2711  
  2712  Behavior Changes:
  2713  
  2714    * Loading modules is only supported for the modules build.
  2715      Previously any build using shared libraries could load modules.
  2716  
  2717    * Bundled libltdl is now configured as 'installable' rather than
  2718      'convenience'.
  2719  
  2720    * -enhance: Only filter based on color channels (ignore opacity).
  2721  
  2722    * BrowseDelegate: Web browser (for viewing help information) now
  2723      defaults to 'xdg-open', but if it is not found, then configure
  2724      will search for firefox, google-chrome, mozilla (in that order).
  2725  
  2726  1.3.16 (June 24, 2012)
  2727  ==========================
  2728  
  2729  Security Fixes:
  2730  
  2731    * Don't translate 'comment' and 'label' attributes if the request is
  2732      made while a file is being read.  Only translate such attributes
  2733      if they come from the command line or API user.
  2734  
  2735  Bug fixes:
  2736  
  2737    * SWT: SWT reader suffered from a number of implementation errors
  2738      which caused it not to work any more.  Works again.
  2739  
  2740    * XBM: Fix memory leak observed when reading file in 'ping' mode.
  2741  
  2742    * Support -trim on images which use a consistent (single color)
  2743      transparent background.  In this case, trim is done based on
  2744      opacity rather than foreground color.
  2745  
  2746    * Include <sys/types.h> in order to assure that 'size_t' and
  2747      'ssize_t' are declared.  This is necessary since
  2748      MagickExtentImage() uses these types as part of its definition.
  2749  
  2750    * `+repage` was not working because parser was insisting that it
  2751      should include an argument.
  2752  
  2753    * -units was scaling existing resolution the wrong way around
  2754      (i.e. multiplying rather than dividing).
  2755  
  2756    * PerlMagick: Fix compilation with Perl 5.16.
  2757  
  2758    * PingBlob(): PingBlob was not working for all cases.  Is now based
  2759      on BlobToImage() for assured reliability.
  2760  
  2761  New Features:
  2762  
  2763    None
  2764  
  2765  Feature improvements:
  2766  
  2767    * MAT: Animated movies inside 4D matrices are loaded now.
  2768  
  2769    * PDF: File base name is used as the document title.
  2770  
  2771    * PNG: Fix issues observed specifically with libpng 1.5.10.
  2772  
  2773  Performance Improvements:
  2774  
  2775    * Pixel iterators should be more efficient now if the image uses a
  2776      file-backed cache.
  2777  
  2778    * Motion blur algorithm does scale well as cores are added so
  2779      include OpenMP support for it by default.
  2780  
  2781  Windows Delegate Updates:
  2782  
  2783    * JPEG: Updated to IJG 8d release.
  2784  
  2785    * PNG: Updated to 1.5.11 release
  2786  
  2787    * TIFF: Updated to 4.0.2 release.
  2788  
  2789    * Zlib: Updated to 1.2.7 release.
  2790  
  2791    * libxml2: Updated to 2.8.0 release.
  2792  
  2793  Behavior Changes:
  2794  
  2795    None
  2796  
  2797  1.3.15 (April 28, 2012)
  2798  ==========================
  2799  
  2800  Security Fixes:
  2801  
  2802    * Libpng in Windows build is updated to 1.5.10 release.  Provides a
  2803      fix for CVE-2011-3048.
  2804  
  2805  Bug fixes:
  2806  
  2807    * PNG - fixed problem with bit depth when the encoder decides to
  2808      write RGBA instead of indexed PNG.
  2809  
  2810    * Fixed some temporary file leaks which were caused by the temporary
  2811      file name being automatically extended to include a scene number,
  2812      and therefore fail to be deleted.
  2813  
  2814  New Features:
  2815  
  2816    * Added '+noise random' and '-operator noise-random' to 'convert'
  2817      and 'mogrify'.  This modulates the existing image data with
  2818      uniformly random noise.
  2819  
  2820    * Added -strip option in composite, convert, mogrify, and montage to
  2821      remove all profiles and text attributes from the image.
  2822  
  2823    * Added -repage option to composite, convert, mogrify, and montage
  2824      subcommands to reset or adjust the current image page offsets
  2825      based on a provided geometry specification.
  2826  
  2827    * New C function StripImage() to remove all profiles and text
  2828      attributes from the image.
  2829  
  2830    * New C function ResetImagePage() to adjust the current image page
  2831      canvas and position based on a relative page specification.
  2832  
  2833    * C functions GenerateDifferentialNoise(), AddNoiseImageChannel(),
  2834      QuantumOperatorRegionImage(), AddNoiseImage() updated to support
  2835      RandomNoise enumeration.
  2836  
  2837    * New C++ Image method strip(), and unary function stripImage() to
  2838      remove all profiles and text attributes from the image.
  2839  
  2840    * XCF format now respects image subimage and subrange members so
  2841      that returned image layers may be selected.
  2842  
  2843    * The INFO coder (e.g. output file "info:-") now respects the
  2844      -format option so that its output may be adjusted identically to
  2845      how -format works for 'identify'.
  2846  
  2847    * TclMagick now supports Random noise.
  2848  
  2849  Feature improvements:
  2850  
  2851    * C function ThumbnailImage() now allows the user to override the
  2852      filter used, but still defaults to using the box filter.
  2853  
  2854  Performance Improvements:
  2855  
  2856    * None
  2857  
  2858  Behavior Changes:
  2859  
  2860    * No longer add a printf-style scene formatting specification to
  2861      filenames which do not have one and no longer automatically
  2862      operate in 'adjoin' mode in such cases.  If multiple numbered
  2863      files are intended to be output, then add +adjoin to the command
  2864      line and use an output filename specification similar to
  2865      "image-%d.jpg".  Output files are now completely specified and
  2866      predictable but this may break some existing usages which
  2867      anticipate the automatic file numbering.
  2868  
  2869  1.3.14 (February 25, 2012)
  2870  ==========================
  2871  
  2872  Security Fixes:
  2873  
  2874    * Windows bundled libpng updated to the 1.5.9 release, which fixes
  2875      the dire CVE-2011-3026 buffer overrun bug.
  2876  
  2877  Bug fixes:
  2878  
  2879    * EMF format : Fixed wrong module mapping which caused EMF reading
  2880      to not work under Windows.
  2881  
  2882    * TGA format: Assume that 32-bit TGA files have an alpha channel,
  2883      even if they are not marked as such.
  2884  
  2885    * XCF format: Fix reading XCF which is comprised of different sized
  2886      layers.
  2887  
  2888    * JPEG & CineonLog: Convert RGB-compatible colorspaces
  2889      (e.g. CineonLog) to RGB by default since that was the case prior
  2890      to release 1.3.13.
  2891  
  2892    * RAW formats: Small memory leak in dcraw module was fixed.
  2893  
  2894    * Resize: ResizeImage() was ignoring its resize filter argument and
  2895      was using the filter setting from the Image structure instead.
  2896  
  2897    * The mirror virtual pixel method was broken.
  2898  
  2899  New Features:
  2900  
  2901    * Open64 Compiler Suite: Version 5.0 is fully supported.
  2902  
  2903    * Wand API: Added MagickExtentImage().
  2904  
  2905    * MEF RAW: Mamiya Photo RAW "MEF" format is now supported.
  2906  
  2907  Feature improvements:
  2908  
  2909    * DPX format: Original file endianness is preserved by default.
  2910  
  2911    * PNG library: Updated libpng to 1.5.9 release.
  2912  
  2913    * TIFF library: Updated libtiff to 4.0.1 release.
  2914  
  2915    * Zlib library: Updated to zlib 1.2.6 release.
  2916  
  2917  Performance Improvements:
  2918  
  2919    * Despeckle algorithm (-despeckle) is many times faster.
  2920  
  2921  Behavior Changes:
  2922  
  2923    * DPX format: Original file endianness is preserved by default.
  2924  
  2925  1.3.13 (December 24, 2011)
  2926  ==========================
  2927  
  2928  Security Fixes:
  2929  
  2930    None
  2931  
  2932  Bug fixes:
  2933  
  2934    * In I/O blob, don't rewind already open file handle passed to
  2935      OpenBlob() since we don't know the intended state of this file
  2936      handle, and because it prevents appending to an existing file.
  2937  
  2938    * In AppendImageProfile(), don't leak profile buffer while appending
  2939      a chunk to an existing profile.
  2940  
  2941    * Fix deadlock in ClonePixelCache() which was caused by using the
  2942      same semaphore pointer in the source and destination images.
  2943  
  2944    * Removed bogus SyncBlob() code which sometimes caused a crash and
  2945      was not useful.
  2946  
  2947    * Fixed crash or hang which occured when the user entered CONTROL-C
  2948      while threaded code was being executed.
  2949  
  2950    * Fix core dump in AcquireOneCacheViewPixelInlined() when the image
  2951      is in CMYK space.
  2952  
  2953    * In MontageImages (montage), fix crash observed with "-geometry
  2954      x+0+0".
  2955  
  2956    * The TIFF reader was crashing for images which use the
  2957      TIFFTAG_OPIIMAGEID tag.
  2958  
  2959    * AppendImages() (-append) was failing when only one image was
  2960      provided.
  2961  
  2962    * The `animate`, `display`, and `identify` commands now report any
  2963      error only once, and then proceed to the next file name rather
  2964      than quitting.
  2965  
  2966    * Don't change the locale settings in InitializeMagick() since this
  2967      may cause problems for international users.  API users are still
  2968      responsible for assuring that locale settings don't break floating
  2969      point parsing and output (i.e. floating point decimal needs to be
  2970      '.' rather than ',').
  2971  
  2972    * RPM build is fixed (PerlMagick build was broken).
  2973  
  2974    * RPM build installs documentation to expected places on Red Hat
  2975      type systems.
  2976  
  2977    * Fixes for usage with OpenSolaris.
  2978  
  2979    * DESTDIR is supported by PerlMagick build.
  2980  
  2981    * The matte channel was not being properly enabled or respected for
  2982      TXT images.
  2983  
  2984    * InitializeMagick() and DestroyMagick() are now fully thread safe.
  2985  
  2986    * When a shear angle was zero, the shear request was being
  2987      ignored entirely.
  2988  
  2989    * In DispatchImage(), the `K` channel was always output as black for
  2990      "CMYK" specification unless the image matte flag was True.
  2991  
  2992    * MATLAB fixes.
  2993  
  2994    * PNG fixes.
  2995  
  2996    * PCL fixes for printing bi-level image on Konica-Minolta printers.
  2997  
  2998    * EPT error handling fixes.
  2999  
  3000    * JPEG reader was sometimes truncating large IPTC profiles.
  3001  
  3002    * JPEG writer now handles errors properly rather than allowing
  3003      libjpeg to exit the program (or hanging if driven by Magick++).
  3004  
  3005    * JPEG reader now treats an unhandled EXP marker as a warning rather
  3006      than a hard error.
  3007  
  3008    * File open errors are now reliably reported.
  3009  
  3010    * Improved rendering precision when using the drawing APIs.
  3011  
  3012    * For the Magick++ Image backgroundColor(), borderColor(), and
  3013      matteColor() methods, preserve the opacity part of the
  3014      user-specified color.
  3015  
  3016  New Features:
  3017  
  3018    * Add support for drawing text using a bitmap font.
  3019  
  3020    * benchmark command supports a -stepthreads option to execute the
  3021      specified command with an increasing number of threads to measure
  3022      how an algorithm benefits from threading.  This mode includes a
  3023      column to show the speedup compared with one thread, and the
  3024      Karp-Flatt metric
  3025  
  3026    * Added support for invoking "gs-cmyk" and "gs-cmyka" entries in
  3027      delegates.mgk when ColorSeparationType or ColorSeparationMatteType
  3028      is requested.  These cause Ghostscript to always output CMYK PAM
  3029      format (even if the input file was not in CMYK format).
  3030  
  3031    * EXIF profiles are preserved when writing JPEG files.
  3032  
  3033    * The -mosaic command now respects the composition option specified
  3034      by -compose as well as the image background color specified by
  3035      -background.
  3036  
  3037    * The TXT coder now supports multiple image frames.
  3038  
  3039    * For image normalization (-normalize), add support for
  3040      histogram-threshold setting to specify the percentage of the
  3041      histogram to discard when computing image normalization parameters
  3042      (default is 0.1%).  For example `-set histogram-threshold 0.01
  3043      -normalize`.
  3044  
  3045    * Added an `INFO` coder which produces textual image description
  3046      output similar to `identify` but may be used with convert like "gm
  3047      convert myfile info:-".
  3048  
  3049    * Support application of the PDF crop box via '-define
  3050      pdf:use-cropbox=true'.
  3051  
  3052    * For PCL printer output, define pcl:fit-to-page in order for the
  3053      printer to scale the image to fit the page.
  3054  
  3055    * Added order dither 5x5, 6x6, and 7x7 circular dither patterns to
  3056      create a halftone effect.
  3057  
  3058    * PNM subformats are now reported as the specific subformat rather
  3059      than just "PNM".
  3060  
  3061    * NetPBM's PAM format is now supported.
  3062  
  3063    * MacPaint image format reader is added.
  3064  
  3065    * Added TIFF LZMA compressor support.
  3066  
  3067    * Added TIFF support for a tiff:group-three-options define to allow
  3068      power-users to set the value of the GROUP3OPTIONS tag.
  3069  
  3070    * New core C API function SetImageColorRegion() to set the constant
  3071      pixel color for a specified region of the image.
  3072  
  3073    * New Wand C API function MagickWriteImagesFile() to append images
  3074      to a provided file handle.
  3075  
  3076    * New Wand C API function MagickSetImageSavedType() to allow
  3077      specifying the storage type used when saving the file (rather than
  3078      changing the current image characteristics).
  3079  
  3080    * In Wand C API, the functions NewPixelWand(), NewDrawingWand(), and
  3081      NewMagickWand() invoke InitializeMagick() automatically in case
  3082      user forgets to do so.
  3083  
  3084    * New Wand C API function MagickSetFormat() to allow setting the
  3085      file or blob format before it has been read.
  3086  
  3087    * New Wand C API function MagickSetDepth() to set the depth used
  3088      when reading from an image format which requires that the depth be
  3089      specified in advance.
  3090  
  3091  Feature improvements:
  3092  
  3093    * Now compiles properly with libpng 1.4.X and 1.5.X.
  3094  
  3095    * Lcms 2.X is supported.
  3096  
  3097  Performance Improvements:
  3098  
  3099    * TGA read performance improved.
  3100  
  3101    * PNM read/write performance improved.
  3102  
  3103    * Convolution (-convolve, -sharpen, -guassian, etc.) is faster.
  3104  
  3105    * Adaptive threshold image (-lat) is faster.
  3106  
  3107    * Image trimming (-trim) is faster.
  3108  
  3109  Behavior Changes:
  3110  
  3111    * For DPX format and packed 10 bits, datums are now represented in
  3112      the same (reversed) order for all RGB and YCbCr formats.
  3113      Previously YCbCr 4:4:4 formats were not swapping the word datums
  3114      because the only real-world files encountered did not swap the
  3115      word datums.
  3116  
  3117    * The -colors, -map, and -monochrome options now take effect
  3118      immediately rather than at the end of all other processing.
  3119  
  3120    * Removed non-standard multi-frame extension for SGI format.
  3121  
  3122    * Windows install footprint is more consistent between DLL and
  3123      static builds.
  3124  
  3125    * LZMA compressed tarball is in 'xz' format rather than deprecated
  3126      'lzma' format.
  3127  
  3128  1.3.12 (March 8, 2010)
  3129  ==========================
  3130  
  3131  Security Fixes:
  3132  
  3133    * Updated libpng Windows sources to 1.2.43 in order to resolve
  3134      CVE-2010-0205 as it pertains to the GraphicsMagick Windows build.
  3135  
  3136  Bug fixes:
  3137  
  3138    * Filter mode (write to stdout) was completely broken.
  3139  
  3140    * Should now compile with libpng 1.4.
  3141  
  3142    * Windows PerlMagick build identified itself as the wrong version.
  3143  
  3144  New Features:
  3145  
  3146    * None
  3147  
  3148  Feature improvements:
  3149  
  3150    * None
  3151  
  3152  Performance Improvements:
  3153  
  3154    * None
  3155  
  3156  Behavior Changes:
  3157  
  3158    * DCX output format is only written on request.  Previously the PCX
  3159      coder would automatically switch to DCX format if multiple frames
  3160      would be written.
  3161  
  3162  1.3.11 (February 21, 2010)
  3163  ==========================
  3164  
  3165  Security Fixes:
  3166  
  3167    * Fixed array underflow on systems using signed char which could
  3168      result in a program crash due to extended characters in filenames
  3169      or in certain file formats.
  3170  
  3171  Bug fixes:
  3172  
  3173    * Fixed array underflow on systems using signed char which could
  3174      result in a program crash due to extended characters in filenames
  3175      or in certain file formats.
  3176  
  3177  New Features:
  3178  
  3179    * Added a -thumbnail command to 'convert' and 'mogrify'.  This is a
  3180      faster way to scale down the image when speed is a primary
  3181      concern.
  3182  
  3183    * Added a -extent command to 'convert' and 'mogrify' which
  3184      composites the image on top of a backing canvas image of solid
  3185      color.
  3186  
  3187    * Added support for -compose to the 'convert' and 'mogrify', which
  3188      were documented to support it (but did not).
  3189  
  3190  Feature improvements:
  3191  
  3192    * None
  3193  
  3194  Performance Improvements:
  3195  
  3196    * Requests for 'Over' and 'Atop' composition are converted to a
  3197      request for the (faster) 'Copy' composition when both images are
  3198      opaque.
  3199  
  3200  Behavior Changes:
  3201  
  3202    * None
  3203  
  3204  1.3.10 (February 10, 2010)
  3205  ==========================
  3206  
  3207  Security Fixes:
  3208  
  3209    * None
  3210  
  3211  Bug fixes:
  3212  
  3213    * +adjoin was not working correctly for the case when only one image
  3214      frame is present.  With +adjoin and writing one frame to
  3215      "foo%d.jpg" it was outputting "foo%d.jpg" rather than "foo0.jpg".
  3216  
  3217    * When drawing paths, memory allocation for the points was much
  3218      larger than it needed to be (patch by Vladimir Lukianov).
  3219  
  3220  New Features:
  3221  
  3222    * None
  3223  
  3224  Feature improvements:
  3225  
  3226    * None
  3227  
  3228  Performance Improvements:
  3229  
  3230    * None
  3231  
  3232  Behavior Changes:
  3233  
  3234    * To reiterate the change which first appeared in 1.3.9, there is no
  3235      longer an implicit +adjoin if the output file name happens to
  3236      contain a %d sequence, or there are multiple frames and the output
  3237      file format only supports storing one frame.  Specify +adjoin if
  3238      scene number substition is desired in the output file names.
  3239  
  3240  1.3.9 (February 4, 2010)
  3241  ========================
  3242  
  3243  Security Fixes:
  3244  
  3245    * None
  3246  
  3247  Bug fixes:
  3248  
  3249    * Fix "double free" error when using gm import -frame.
  3250  
  3251    * XPM does not support RGBA color syntax, so return RGB instead.
  3252  
  3253    * The display '-update' option was only working in conjunction with
  3254      the '-delay' option with a delay setting of 2 or greater.
  3255  
  3256    * For formats which support multiple frames, output with +adjoin to
  3257      filenames containing a scene specification (e.g. foo%02d.tiff) was
  3258      resulting in wrong output file names.
  3259  
  3260    * -convolve was crashing rather than reporting an error.
  3261  
  3262    * Fixed crash if the number of OpenMP threads was reduced from the
  3263      original value via '-limit threads' or omp_set_num_threads().
  3264  
  3265    * -blur was not blurring the opacity channel for solid-color images.
  3266  
  3267    * When installing HTML documentation, many files were included which
  3268      are not part of the formatted documentation.
  3269  
  3270    * Several deleted global string constants are restored with
  3271      deprecated status in order to assure that symbols are not removed
  3272      from the ABI.
  3273  
  3274  New Features:
  3275  
  3276    * None
  3277  
  3278  Feature improvements:
  3279  
  3280    * None
  3281  
  3282  Performance Improvements:
  3283  
  3284    * None
  3285  
  3286  Behavior Changes:
  3287  
  3288    * There is no longer an implicit 'adjoin' if an output filename
  3289      contains an apparent scene specification (e.g. foo%02d.tiff) and
  3290      multiple files are not needed to save the image..  It is necessary
  3291      to use +adjoin.  For example ``gm convert foo.pdf +adjoin
  3292      %02d.tiff``.
  3293  
  3294    * -flatten now applies the image background color under the first
  3295      image in the list if it is not already opaque.
  3296  
  3297  1.3.8 (January 21, 2010)
  3298  ========================
  3299  
  3300  Security Fixes:
  3301  
  3302    * Fix for CVE-2009-1882 "Integer overflow in the XMakeImage
  3303      function".
  3304  
  3305    * Fix lockup due to hanging in loop while parsing malformed
  3306      sub-image specification (SourceForge issue 2886560).
  3307  
  3308    * Libltdl: Updated libtool to 2.2.6b in order to fix security issue.
  3309      Resolves CVE-2009-3736 as it pertains to GraphicsMagick.
  3310  
  3311  Bug fixes:
  3312  
  3313    * -convolve, -recolor: Validate that user-provided matrix is square
  3314      when parsing -convolve and -recolor commands in order to avoid a
  3315      core dump.
  3316  
  3317    * CALS: Reading images taller than the image width resulted in a
  3318      failure.
  3319  
  3320    * ConstituteImage(), DispatchImage(): 'A' and 'T' should indicate
  3321      transparency and 'O' should indicate opacity.  Behavior was
  3322      inconsistent.  In some cases 'O' meant transparency while in other
  3323      cases it meant opacity. Also, in a few cases, matte was not
  3324      getting enabled in the image as it should.
  3325  
  3326    * DCRAW: Module name was not registered so modules based builds were
  3327      not supporting formats provided via 'dcraw'.
  3328  
  3329    * GetOptimalKernelWidth1D(), GetOptimalKernelWidth2D(): In the Q32
  3330      build, convolution kernel size was estimated incorrectly for large
  3331      sigmas on 32-bit systems due to arithmetic overflow.  This could
  3332      cause wrong results for -convolve, -blur, -sharpen, and other
  3333      algorithms which use these functions.
  3334  
  3335    * Image Size: Fixed the ability to pass the image size via the
  3336      filename specification like "myfile.jpg[640x480]" rather than
  3337      needing to use -size.
  3338  
  3339    * IPTC: Blob data needed to be padded to an even size.  Size is now
  3340      correctly reported.
  3341  
  3342    * IPTC: Returned IPTC string values were one character too short.
  3343  
  3344    * Large Files: Large pixel cache files were not working under GNU
  3345      Linux.
  3346  
  3347    * JP2: Fixed some value scaling problems.
  3348  
  3349    * JP2: Fix possible crash at exit when Jasper is used by a modules
  3350      build.
  3351  
  3352    * MPC: is_monochrome and is_grayscale flags were not managed
  3353      properly for the MPC coder.
  3354  
  3355    * PCL: Page was not always being ejected.
  3356  
  3357    * PNG: The png8 encoder would fail when trying to write a 1-color
  3358      image.
  3359  
  3360    * PSD: PSD parser was confused by 0x0 pixel layers, resulting in
  3361      image data corruption of all following layers.
  3362  
  3363    * -rotate, -shear: Some internally-reported errors were potentially
  3364      being lost.
  3365  
  3366    * Subrange/stdin: Commands now support reading an image from stdin
  3367      in conjunction with a subrange specification (e.g. "-[1]").
  3368  
  3369    * Magick++ STL ShadeImage: Implementation was completely botched.
  3370  
  3371  New Features:
  3372  
  3373    * CALS Type 1 files may now be written (Work contributed by John
  3374      Sergeant).  CALS support is dependent on the TIFF library.
  3375  
  3376    * GROUP4RAW encoder supports reading/writing RAW Group4 data.
  3377  
  3378    * JP2: JPEG 2000 may now be written in arbitrary bit depths ranging
  3379      from 2 to 16 rather than just 8 or 16.
  3380  
  3381    * JPEG: IJG JPEG library version 7 is now supported.
  3382  
  3383    * JPEG: Added jpeg:block-smoothing and jpeg:fancy-upsampling defines
  3384      to control these JPEG library options.
  3385  
  3386    * JPEG: Detect and apply colorspaces appropriately for ITU FAX JPEG.
  3387  
  3388    * Resource Limits: There is now a "threads" resource limit which
  3389      allows specifying the number of OpenMP threads which may be used,
  3390      similar to the OMP_NUM_THREADS environment variable.
  3391  
  3392    * TIFF: Allow CIELAB TIFF to be read.
  3393  
  3394    * MagickGetImageAttribute()/MagickSetImageAttribute(): New Wand
  3395      methods to support getting and setting an image attribute.
  3396      Contributed by Mikko Koppanen.
  3397  
  3398    * ClonePixelWand(): New Wand method to deep-copy an existing pixel
  3399      wand.
  3400  
  3401    * ClonePixelWands(): New Wand method to deep-copy an array of
  3402      existing pixel wands.
  3403  
  3404    * MagickCdlImage(): New Wand method to apply the ASC CDL to an
  3405      image.
  3406  
  3407    * MagickGetImageBoundingBox(): New Wand method to return the crop
  3408      bounding box required to remove any solid-color border from the
  3409      image.
  3410  
  3411    * MagickGetImageFuzz(), MagickSetImageFuzz(): New Wand methods to
  3412      get and set the color comparison fuzz factor.
  3413  
  3414    * MagickHaldClutImage(): New Wand method to apply a Hald CLUT to an
  3415      image.
  3416  
  3417    * MagickSetResolution(): New Wand method to set the wand resolution.
  3418  
  3419    * MagickSetResolutionUnits(): New Wand method to set the wand
  3420      resolution units.
  3421  
  3422    * Magick++: Allow Magick++ library to built as a DLL under MinGW and
  3423      Cygwin.  This requires a modern GCC in order for C++ exceptions to
  3424      work.
  3425  
  3426  Feature improvements:
  3427  
  3428    * Cygwin: Cygwin 1.7 is now supported.
  3429  
  3430    * JPEG compression settings are preserved (if possible) when
  3431      inserting JPEG blobs into formats which use JPEG.
  3432  
  3433    * PDF: If the original file used JPEG compression, then use JPEG
  3434      compression with original settings (if possible).
  3435  
  3436    * TIFF: Update Windows build to use libtiff 3.9.2.
  3437  
  3438    * X11 Display: Apply a checkerboard pattern underneath transparent
  3439      images which use more than simple binary transparency.
  3440  
  3441  Performance Improvements:
  3442  
  3443    * Gamma: Performance is improved for Q8 and Q16 builds.  Also
  3444      preserve full precision in Q32 build.
  3445  
  3446    * String data is dealt with a bit more efficiently (fewer
  3447      allocations, less memory, and less CPU).
  3448  
  3449  Behavior Changes:
  3450  
  3451    * InitializeMagick() MUST be invoked prior to using any Magick API
  3452      function.  Failure to do so will likely lead to an immediate
  3453      application crash.  This is due to initialization and runtime
  3454      changes intended to improve thread safety and efficiency.
  3455      Previously it was only strongly recommended to invoke
  3456      InitializeMagick().
  3457  
  3458    * ConstituteImage(), DispatchImage(): 'A' and 'T' should indicate
  3459      transparency and 'O' should indicate opacity.  Behavior was
  3460      inconsistent.  In some cases 'O' meant transparency while in other
  3461      cases it meant opacity. Also, in a few cases, matte was not
  3462      getting enabled in the image as it should.
  3463  
  3464    * colors.mgk: Is now empty to default and is optional.  Previous
  3465      content is now compiled into the library in an efficient way, but
  3466      existing values may be modified, or new values added by adding
  3467      entries to color.mgk.
  3468  
  3469    * DisableSlowOpenMP is now the default.  Use --enable-openmp-slow to
  3470      enable OpenMP for algorithms which sometimes run slower rather
  3471      than faster.
  3472  
  3473    * magic.mgk: This configuration file is no longer used since this
  3474      data is now compiled into the library in an efficient way.
  3475  
  3476    * modules.mgk: Is now empty to default and is optional.  Previous
  3477      content is now compiled into the library in an efficient way, but
  3478      existing values may be modified, or new values added by adding
  3479      entries to modules.mgk.
  3480  
  3481    * Third party executables not included in the Visual Studio build
  3482      are no longer bundled in the GraphicsMagick installer.  This means
  3483      that hp2xx.exe, mpeg2dec.exe, and mpeg2enc.exe are no longer
  3484      distributed.
  3485  
  3486  1.3.7 (September 17, 2009)
  3487  ==========================
  3488  
  3489  Security Fixes:
  3490  
  3491    * PCX: Detect improper rows, columns, or depth.  Fixes CVE-2008-1097
  3492      "Memory corruption in ImageMagick's PCX coder".
  3493  
  3494    * DrawDashPolygon: Avoid a crash which sometimes occured with tiny
  3495      polygons.
  3496  
  3497  Bug fixes:
  3498  
  3499    * JPEG: Profile chunks need to be concatenated in order to build
  3500      the whole profile.  This was not working so embedded profiles
  3501      larger than 32K or maybe 64K were being corrupted.  This bug was
  3502      introduced in GraphicsMagick 1.2.
  3503  
  3504    * Meta: Fix memory leaks.
  3505  
  3506    * Meta: Work better with with IPTC record 2 blocks and deal better
  3507      with IPTC embedded in an 8BIM profile.  Fixes by John Sergeant.
  3508  
  3509    * MPC: Fix crash when reading MPC and the input image is modified.
  3510  
  3511    * PNG: Ensure that the opacity channel is properly initialized.
  3512  
  3513    * -profile: Lowercase arguments were sometimes not working as
  3514      expected.
  3515  
  3516    * Topol: Topol reader actually works now and is included in test
  3517      suite.
  3518  
  3519    * TIFF: Read and write JPEG-compressed grayscale TIFF correctly.
  3520  
  3521    * VisualMagick configure now works properly when output paths are
  3522      specified.
  3523  
  3524    * WMF: Eliminate memory leaks.
  3525  
  3526  New Features:
  3527  
  3528    * MagickWand: New method MagickSetCompressionQuality() to allow
  3529      setting the compression quality.
  3530  
  3531    * MagickWand: New method CloneDrawingWand() to deep-copy a drawing
  3532      wand.
  3533  
  3534    * MagickWand: New method DrawGetException() to retrieve information
  3535      regarding the last drawing wand exception (if any).
  3536  
  3537    * MagickWand: New method DrawClearException() to clear a drawing wand
  3538      exception.
  3539  
  3540    * Magick++: New Image method cdl() to apply the ASC CDL.
  3541  
  3542    * Magick++: New Image method colorMatrix() to apply a color matrix
  3543      to the image channels.
  3544  
  3545    * Magick++: New Image method haldClut() to apply a color lookup
  3546      table (Hald CLUT) to the image.
  3547  
  3548    * MSL/Conjure: Added a new 'profile' command which applies, adds, or
  3549      removes one or more IPTC, ICC or generic profiles from a file.
  3550      Work contributed by John Sergeant.
  3551  
  3552    * Added a 'time' subcommand to provide Unix-style 'time' output when
  3553      a 'time' capability is missing, or the reporting format is
  3554      inconsistent.  For example 'gm time convert ...'.
  3555  
  3556  Feature improvements:
  3557  
  3558    * ColorMatrixImage(): Add opaque opacity channel when needed.
  3559  
  3560    * PDF & PS: Use '-type palette' prior to input file name to cause
  3561      Ghostscript to return a dithered colormapped image.
  3562  
  3563    * PNG: Now compiles with libpng-1.4.0beta74 and later.
  3564  
  3565    * TIFF: Libtiff in Windows build is upgraded to 3.9.1.  This allows
  3566      GraphicsMagick to read and write 16 and 24 bit float TIFF files.
  3567  
  3568    * Windows code to find Ghostscript is rewritten from scratch.
  3569  
  3570  Performance Improvements:
  3571  
  3572    * Drawing of points, lines, and polygons (and complex shapes based
  3573      on these) is now accelerated using OpenMP with excellent speed-up.
  3574  
  3575    * ICC color transforms now see linear speedup from OpenMP.
  3576  
  3577    * Rotate: For rotations of 90 or 270 degrees, tile sizes are
  3578      selected more appropriately.
  3579  
  3580  Behavior Changes:
  3581  
  3582    * No longer clear the exception structure at the start of
  3583      ReadImage() and other similar functions since this sometimes masks
  3584      errors.  The API user is expected to make sure that the exception
  3585      structure is clean prior to invoking a function.
  3586  
  3587    * SVG: Writer is now disabled since it usually does not work properly.
  3588  
  3589  1.3.6 (July 25, 2009)
  3590  =====================
  3591  
  3592  Security Fixes:
  3593  
  3594    * None.
  3595  
  3596  Bug fixes:
  3597  
  3598    * Composition was failing when the change image overlaps off the
  3599      left side of the canvas.
  3600  
  3601    * EPT, PDF, PS: PDF bounding box is sometimes incorrect or not
  3602      globally applicable so don't specify bounding box when reading PDF
  3603      files.
  3604  
  3605    * OpenMP: Fix (benign) multi-thread cross-contentions (detected by
  3606      valgrind's Helgrind).
  3607  
  3608    * TIFF: Fix problem with reading one bit per sample RGB images.
  3609  
  3610    * TIFF: Writer was using rows-per-strip of 8 when writing
  3611      JPEG-compressed TIFF.  This does not work for vertical
  3612      subsampling, and some TIFF readers insist on 16.  The
  3613      rows-per-strip is now required to be a multiple of 16.
  3614  
  3615    * TIFF: In some cases, the TIFF reader and writer were accessing
  3616      planar TIFF in row-order rather than plane-order, which resulted
  3617      in sever buffering problems in libtiff, and failure when
  3618      compression was used.
  3619  
  3620    * -write now works usefully as documented.
  3621  
  3622    * Temporary file name generator was not random enough, resulting in
  3623      some file name collisions for GraphicsMagick processes started at
  3624      the same time.
  3625  
  3626    * PerlMagick: Fixed Ping on a BLOB.
  3627  
  3628    * GetImageDepth was leaking memory.
  3629  
  3630    * Convert/mogrify -mask option was leaking memory.
  3631  
  3632    * Mogrify -output-directory option was leaking memory.
  3633  
  3634    * DPX: Fixed memory leak encountered when subsampling to 4:2:2.
  3635  
  3636    * DPX: Values read received insuficient scaling, which round-tripped
  3637      correctly, but rounded-down excessively if any image processing
  3638      was applied.
  3639  
  3640  New Features:
  3641  
  3642    * Added HRS reader for slow scan TV (contributed by Fojtik Jaroslav).
  3643  
  3644    * Pthreads (POSIX threads) API may now be used under the WIN32 API.
  3645  
  3646    * New access confirmation facility (MagickConfirmAccess) to allow
  3647      the API user to monitor and/or block access to files and URLs.
  3648      This allows the API user to implement a security policy based on
  3649      actual accesses.
  3650  
  3651    * New color matrix function (ColorMatrixImage) to apply a color
  3652      matrix similar to Adobe Flash Flash.filters.colorMatrixFilter(),
  3653      and Windows GDI+ ColorMatrix class, (order up to 5x5) to the image
  3654      pixels.  This is accessible via the -recolor command option.
  3655  
  3656    * Added an IDENTITY coder to return a Hald identity CLUT image of
  3657      specified order (e.g. "identity:8").
  3658  
  3659    * Added a Hald CLUT capability as described at
  3660      http://www.quelsolaar.com/technology/clut.html.  This allows a
  3661      color transformation to be easily created and replicated on any
  3662      number of images.  The algorithm is accessed by the -hald-clut
  3663      option of 'convert' and 'mogrify'.  Original algorithm by Eskil
  3664      Steenberg and adapted for GraphicsMagick by Clément Follet, with
  3665      additional work by Bob Friesenhahn.
  3666  
  3667    * Added support for the ASC CDL transform.  Available as -asc-cdl
  3668      via the 'convert' and 'mogrify' subcommands.  Original
  3669      implementation by Clément Follet but considerably re-worked by Bob
  3670      Friesenhahn.  Implementation passes the +/- 1 count accuracy
  3671      requirement required by the ASC CDL SOP tests.
  3672  
  3673    * Added support for reading CALS Type 1 format (contributed by John
  3674      Sergeant).  CALS is a standard raster format used by the US
  3675      Department of Defense for storing blueprint images.
  3676  
  3677    * Added a random number generation system based on George
  3678      Marsaglia's multiply-with-carry generator.  Somewhat slower than
  3679      rand() but produces better random numbers with a period >2^60.
  3680      This is a much better random number generator than the C library
  3681      rand() and the algorithm is integrated in a way which maximizes
  3682      multi-thread performance.
  3683  
  3684    * The 'compare' command now supports a -maximum-error option to
  3685      specify the maximum image error so that it may be used to support
  3686      boolean logic in automated test scripts.
  3687  
  3688    * For OpenMP-builds, the '-list resource' output now indicates the
  3689      number of threads which will be used.
  3690  
  3691  Feature improvements:
  3692  
  3693    * Image resize now avoids adding "halos" around objects when
  3694      resizing an image which contains transparency (patch contributed by
  3695      Pavel Merdin).
  3696  
  3697    * DICOM: The DICOM reader is completely re-written and is much more
  3698      functional now.  A few features (e.g. RLE compression) are still
  3699      missing.  This work is contributed by John Sergeant.
  3700  
  3701    * EXIF: Unprintable characters in EXIF attribute strings are now
  3702      returned using three-digit octal notation.  Unknown tags are
  3703      identified via their four-character hex value.
  3704  
  3705    * PCL: PCL writer is rewritten to fix many bugs, add support for
  3706      compression, add support for 8 bit PseudoClass images, and
  3707      dramatically improve usability (work contributed by John Sergeant).
  3708  
  3709    * TIFF: Allow the user to force the returned image to be TrueColor
  3710      type for min-is-white and min-is-black TIFF files.
  3711  
  3712    * TIFF: User can now specify the predictor using syntax like
  3713      '-define tiff:predictor=2'.
  3714  
  3715    * TIFF: User can now specify the rows-per-strip value when using
  3716      JPEG compression.
  3717  
  3718    * TXT: The TXT reader is now capable of reading image files written
  3719      by the TXT writer, as well continuing to render ASCII text into an
  3720      image (work contributed by Fojtik Jaroslav).
  3721  
  3722    * Utilities @file.txt syntax for including a list of files to use as
  3723      an argument now really works as expected.  This may be used to
  3724      inject any other text into the command line as well.  As a result,
  3725      the 'mogrify' utility may be invoked on thousands of files at once
  3726      while obtaining the list of files to process from a text file.
  3727  
  3728    * The 'mogrify' utility now caches argument images so that they are
  3729      loaded only once when mogrify is used to process multiple image
  3730      files.
  3731  
  3732  Performance Improvements:
  3733  
  3734    * -median and -noise now see reliable linear speedup as threads are
  3735      added.
  3736  
  3737  Behavior Changes:
  3738  
  3739    * PerlMagick is configured but no longer built by default.
  3740  
  3741    * Use '-interlace Line' to produce an interlaced GIF, PNG, or
  3742      progressive JPEG.
  3743  
  3744  1.3.5 (January 26, 2009)
  3745  =========================
  3746  
  3747  Security Fixes:
  3748  
  3749    * BMP and DIB formats were throwing an assertion for negative height
  3750      values.  This caused the process to crash.
  3751  
  3752  Bug fixes:
  3753  
  3754    * Don't install Magick++ headers if C++ is disabled.
  3755  
  3756    * Linux RPM SPEC file needs to always install the loadable module
  3757      .la files or else the modules won't load.
  3758  
  3759    * Windows runtime DLLs were for the wrong compiler version,
  3760      resulting in failure to execute if the correct runtime DLLs are
  3761      not available.
  3762  
  3763  New Features:
  3764  
  3765    * None
  3766  
  3767  Feature improvements:
  3768  
  3769    * FITS: Parsing is more robust.
  3770  
  3771  Performance Improvements:
  3772  
  3773    * None
  3774  
  3775  1.3.4 (January 13, 2009)
  3776  =========================
  3777  
  3778  Security Fixes:
  3779  
  3780    * None.
  3781  
  3782  Bug fixes:
  3783  
  3784    * Now runs under Windows Vista (as a 32-bit application).
  3785  
  3786    * Fix for colorspace transform math overflow in Q32 build.
  3787  
  3788  New Features:
  3789  
  3790    * Windows build supports OpenMP and requires Windows 2000 or later
  3791      (source code still supports Windows '98).
  3792  
  3793    * Support large files under Windows.
  3794  
  3795    * Support reading/writing 16 and 24 bit float TIFF files.
  3796  
  3797    * Support reading/writing 64 bit integer TIFF files.
  3798  
  3799    * Added "Log", "Max", "Min", and "Pow" options to -operator.
  3800  
  3801  Feature improvements:
  3802  
  3803    * Debug logging now properly prints 64-bit offset values.
  3804  
  3805  Performance Improvements:
  3806  
  3807    * Improve resource estimation for Microsoft Windows systems.
  3808  
  3809  1.3.3 (December 9, 2008)
  3810  ========================
  3811  
  3812  Security Fixes:
  3813  
  3814    * None.
  3815  
  3816  Bug fixes:
  3817  
  3818    * 'identify' was throwing an assertion when used on colormapped
  3819      files (this bug was introduced by 1.3.2).
  3820  
  3821    * With the -segment option, eliminate trashing the image colors when
  3822      used on huge images.
  3823  
  3824    * 'identify -format "%c"' now reports the entire comment regardless
  3825      of size.
  3826  
  3827    * Argument to -convolve is no longer arbitrarily truncated so huge
  3828      convolution kernels may now be specified from the command line.
  3829  
  3830  Performance Improvements:
  3831  
  3832    * Image segmentation (-segment) is now accelerated using OpenMP and
  3833      uses several other tactics to improve execution performance.
  3834  
  3835    * 'identify "*"' now successfully works in a 32-bit application when
  3836      used in a directory containing a million files.
  3837  
  3838    * 'identify' now executes quickly when used on TIFF files.
  3839  
  3840  1.3.2 (November 29, 2008)
  3841  =========================
  3842  
  3843  Security Fixes:
  3844  
  3845    * None.
  3846  
  3847  Bug fixes:
  3848  
  3849    * -roll was failing for colormapped images.
  3850  
  3851    * VID: Memory leak fix.
  3852  
  3853    * PREVIEW: Solarize parameter was wrong.
  3854  
  3855    * Delegates previously using 'spawn' needed an ampersand so that
  3856      starting the child process does not hang the GUI.
  3857  
  3858  Feature improvements:
  3859  
  3860    * +profile now supports an exclusion syntax.  For example ``+profile
  3861      '!icm,*'`` removes all of the profiles except for the ICM profile.
  3862      The new syntax also allows multiple profiles to be listed at once.
  3863  
  3864  Performance Improvements:
  3865  
  3866    * AdaptiveThreshold, Blur, Convolve, and MotionBlur no longer
  3867      process the opacity channel unless the image has one.
  3868  
  3869  1.3.1 (November 17, 2008)
  3870  =========================
  3871  
  3872  Security Fixes:
  3873  
  3874    * None.
  3875  
  3876  Bug fixes:
  3877  
  3878    * RPM build, Fixes to successfully build binary RPMs for Red Hat
  3879      Linux 4.
  3880  
  3881    * MSL/conjure, Fix bug with attributes becoming appended to
  3882      themselves.  Fix memory leaks.
  3883  
  3884  Feature improvements:
  3885  
  3886    * New --disable-openmp-slow configure option for disabling use of
  3887      OpenMP for algorithms which may run slower on operating systems
  3888      with crummy thread libraries.
  3889  
  3890    * JPEG, Allow user to specify DCT encoding method via
  3891      jpeg:dct-method define.  Also allow control over whether huffman
  3892      encoding is used via jpeg:optimize-coding define.
  3893  
  3894  Performance Improvements:
  3895  
  3896    * OpenMP (parallel processing) improvements for these functions:
  3897  
  3898      - Rotate by 90 and 270 degrees (-rotate)
  3899  
  3900  1.3 (November 9, 2008)
  3901  ======================
  3902  
  3903  Security fixes:
  3904  
  3905    * AVI reader: Re-worked to be more robust against crash or DOS.
  3906  
  3907    * AVS reader: Re-worked to be more robust against crash or DOS.
  3908  
  3909    * DCM reader: Re-worked to be more robust against crash or DOS.
  3910  
  3911    * EPT reader: Re-worked to be more robust against crash or DOS.
  3912  
  3913    * FITS reader: Re-worked to be more robust against crash or DOS.
  3914  
  3915    * MTV reader: Re-worked to be more robust against crash or DOS.
  3916  
  3917    * PALM reader: Re-worked to be more robust against crash or DOS.
  3918  
  3919    * RLA reader: Re-worked to be more robust against crash or DOS.
  3920  
  3921    * TGA reader: Re-worked to be more robust against crash or DOS.
  3922  
  3923    * Avoid possible crash in GetImageCharacteristics() when substituting
  3924      text in comment read from file.
  3925  
  3926    * Cineon reader: Fixed crash with broken file from Sami Liedes.
  3927  
  3928    * Palm reader: Fixed crash with broken files from Sami Liedes.
  3929  
  3930    * PICT reader: Fixed crash with broken files from Sami Liedes.
  3931  
  3932    * DPX reader: Validate file data better to avoid improper operation with
  3933      intentionally (or accidentally) defective files.
  3934  
  3935    * XCF reader: Fixed crash with broken files from Sami Liedes.
  3936  
  3937  Bug fixes:
  3938  
  3939    * Libbz2 is now detected for MinGW.
  3940  
  3941    * Install documentation under /usr/local/share/doc/GraphicsMagick by
  3942      default, according to GNU conventions.
  3943  
  3944    * In PerlMagick, Dissolve composition was not working right.
  3945  
  3946    * FITS: Ensure that written format conforms to specification.
  3947  
  3948    * TIFF:
  3949  
  3950      - Don't accidentially convert CMYK images to RGB.
  3951  
  3952      - Eliminated a memory leak in the codec support detection code.
  3953  
  3954    * JPEG: Removed over-write of image->client_data.
  3955  
  3956    * PDF: Try to properly deal with reading rotated PDFs.
  3957  
  3958    * PNG: Fixed crash when writing PNG images with transparency and either
  3959      optimize is requested, or the image is colormapped.
  3960  
  3961    * Configure: Fixed the --enable-magick-compat configure option, which
  3962      had stopped working.
  3963  
  3964    * Configure: Fixed --without-magick-plus-plus so that it works again.  This
  3965      stopped working in the 1.2 release cycle.
  3966  
  3967    * Configure: Fixed MagickLibVersion text string generation so that it
  3968      is now correct when a component of the release number exceeds '9'.
  3969      Now components can safely count up to '99' before there is a problem.
  3970  
  3971  Performance Improvements:
  3972  
  3973    * OpenMP (parallel processing) improvements for these functions:
  3974  
  3975      - Affine transform (-affine -transform)
  3976      - Average images (-average)
  3977      - Add noise (+noise)
  3978      - Black threshold (-black-threshold)
  3979      - Blur (-blur)
  3980      - Border (-border)
  3981      - Channel import, export, and depth-setting (-channel, -depth)
  3982      - Clip path
  3983      - Coalesce (-coalesce)
  3984      - Colorize (-colorize)
  3985      - Colorspace transformation (-colorspace)
  3986      - Compare images ('compare' command)
  3987      - Composition ('composite' command)
  3988      - Convolution (-convolve, -edge, -emboss, -gaussian, -sharpen)
  3989      - Contrast adjust (-contrast)
  3990      - Crop (-crop)
  3991      - CycleColormap (-cycle)
  3992      - Depth setting (-depth, -operator depth)
  3993      - Despeckle (-despeckle)
  3994      - Enhance (-enhance)
  3995      - Equalize (-equalize)
  3996      - Flatten (-flatten)
  3997      - Flip (-flip)
  3998      - Flop (-flop)
  3999      - Frame (-frame)
  4000      - Gamma adjust (-gamma, -operator gamma)
  4001      - Gradient
  4002      - Implode (-implode)
  4003      - Levels adjust image (-level)
  4004      - Local adaptive threshold (-lat)
  4005      - Median filter (-median)
  4006      - Minify image (-minify)
  4007      - Modulate image (-modulate)
  4008      - Morph image (-morph)
  4009      - Mosiac (-mosaic)
  4010      - Motion blur (-motion-blur)
  4011      - Negate image (-negate)
  4012      - Noise filter (-noise)
  4013      - Normalize image (-normalize)
  4014      - Oil Paint (-paint)
  4015      - Opaque (-opaque)
  4016      - Ordered dither (-ordered-dither)
  4017      - Operators (-operator)
  4018      - Profile adjust (ICC) (-profile)
  4019      - Random threshold (-random-threshold)
  4020      - Resize image (-resize)
  4021      - Raise image (-raise)
  4022      - Roll image (-roll)
  4023      - Rotate image (-rotate)
  4024      - Shade image (-shade)
  4025      - Shear image (-shear)
  4026      - Shave (-shave)
  4027      - Solarize image (-solarize)
  4028      - Spread image (-spread)
  4029      - Statistics computation (identify -verbose)
  4030      - Swirl (-swirl)
  4031      - Threshold channel (-threshold, -operator threshold)
  4032      - Threshold image (-threshold)
  4033      - Transparent (-transparent)
  4034      - Trim image (-trim)
  4035      - UnsharpMaskImage (-unsharp)
  4036      - Wave (-wave)
  4037      - White threshold (-white-threshold)
  4038  
  4039    * Improved coder management performance.
  4040  
  4041    * XCF (GIMP) reader is much faster.
  4042  
  4043  New Features:
  4044  
  4045    * Use MAGICK_CODER_STABILITY environment variable to enable a subset
  4046      of the coders based on their stability classification.
  4047  
  4048    * Use MAGICK_IO_FSYNC environment variable to cause written file to
  4049      be synchronized to disk to avoid possible data loss on power fail.
  4050  
  4051    * Added 'compare' command to statistically or visually compare two
  4052      image files.
  4053  
  4054    * Added new channel operators (-operator):
  4055  
  4056      - Assign
  4057      - Gamma
  4058      - Depth
  4059      - Negate
  4060      - Noise-Gaussian
  4061      - Noise-Impulse
  4062      - Noise-Laplacian
  4063      - Noise-Multiplicative
  4064      - Noise-Poisson
  4065      - Noise-Uniform
  4066      - Threshold
  4067      - ThresholdBlack
  4068      - ThresholdWhite
  4069  
  4070    * New composition operators (-compose):
  4071  
  4072      - CopyBlack
  4073      - CopyCyan
  4074      - CopyMagenta
  4075      - CopyYellow
  4076      - Divide
  4077  
  4078    * Added -motion-blur to motion blur the image.
  4079  
  4080    * Mogrify and convert now support -black-threshold and -white-threshold.
  4081  
  4082    * MAT: Now supports reading compressed files.
  4083  
  4084    * FITS: Now supports 8, 16, 32 bit integer, float, and double images
  4085      and writes correct FITS format.
  4086  
  4087    * DCRAW: Coder proxy module allows reading digital camera files as if
  4088      they were natively supported.
  4089  
  4090    * New C API functions:
  4091  
  4092      - AddNoiseImageChannel(), add noise to an image channel.
  4093      - BlurImageChannel(), blur an image channel.
  4094      - GaussianBlurImageChannel(), gaussian blur an image channel.
  4095      - ImportImageChannelsMasked(), import selected image channels.
  4096      - SharpenImageChannel(), sharpen an image channel.
  4097      - UnsharpMaskImageChannel(), unsharpmask an image channel.
  4098      - New cache view interfaces to correct shortcomings of original
  4099        ones.  New interfaces are AcquireCacheViewPixels(),
  4100        AcquireOneCacheViewPixel(), AcquireCacheViewIndexes(),
  4101        GetCacheViewPixels(), SetCacheViewPixels(), and
  4102        SyncCacheViewPixels(). The deprecated functions are
  4103        AcquireCacheView(), GetCacheView(), SetCacheView(), and
  4104        SyncCacheView().
  4105      - GetCacheViewRegion() reports region bounded by a cache view.
  4106      - GetCacheViewArea() reports area bounded by a cache view.
  4107      - ExportViewPixelArea() exports a cache view as formatted pixels.
  4108      - ImportViewPixelArea imports formatted pixels into a cache view.
  4109  
  4110    * Removed C API functions:
  4111  
  4112      - ReadStream()
  4113      - WriteStream()
  4114  
  4115    * Magick++ C++ API improvements
  4116  
  4117      - Color class no longer considers transparent black to be an invalid
  4118        color.
  4119      - New Image methods addNoiseChannel(), blurChannel(),
  4120        gaussianBlurChannel(), motionBlur(), randomThresholdChannel(),
  4121        randomThresholdChannel(), sharpenChannel(), unsharpmaskChannel().
  4122  
  4123  Feature improvements:
  4124  
  4125    * -ordered-dither and -random-threshold may now be used to individually
  4126      dither any named channel.
  4127    * Mogrify and convert now support -minify to halve the image size.
  4128    * Mogrify and convert now support -magnify to double the image size.
  4129  
  4130  1.2 (April 29, 2008)
  4131  ====================
  4132  
  4133  Security fixes:
  4134  
  4135    * Fixes for CERT security alert TA04-217A described at
  4136      "http://www.us-cert.gov/cas/techalerts/TA04-217A.html".
  4137    * AVI, BMP, & DIB security fixes.
  4138    * PSD security fixes.
  4139    * P7 format security fix.
  4140    * Fix EXIF IFD stack overflow vulnerability.
  4141    * SGI security fix for RLE encoding (CVE-2006-4144)
  4142    * XCF security fix (CVE-2006-3743)
  4143    * PALM heap overflow fix (CVE-2006-5456)
  4144    * DCM security fix (CVE-2006-5456)
  4145    * Fix for shell command injection in delegate code via file names)
  4146      (CVE-2005-4601).  Delegate execution is much more secure now.
  4147    * Don't use filenames as printf specifications (CVE-2006-0082).
  4148    * Fix integer overflow in DCM coder (CVE-2007-1797).
  4149    * XWD integer overflow fix (CVE-2007-1797).
  4150    * Implementation has replaced usage of strcpy, strcat, and strncat
  4151      with the more security conscious strlcat and strlcpy.
  4152    * DCM, DIB, XCF, XBM, and XWD security fix for integer overflow
  4153      vulnerability (IDefense 09.19.07).
  4154    * Do not access X11 or invoke convenience or stealth delegate programs
  4155      based on the file extension. In particular, these file extensions are
  4156      rejected for consideration as a format specifier: 'autotrace',
  4157      'browse', 'dcraw', 'edit', 'gs-color', 'gs-color+alpha', 'gs-gray',
  4158      'gs-mono', 'launch', 'mpeg-encode', 'print', 'scan', 'show', 'win',
  4159      'xc', and 'x'.
  4160  
  4161  Bug fixes:
  4162  
  4163    * The configure script now searches for a web browser in the order
  4164      mozilla, firefox, and finally netscape.
  4165    * When the user specifies the -units option, the current image
  4166      resolution values are now re-scaled to match the new units.
  4167    * Properly determine Ghostscript font location for Ghostscript 8.0 and later.
  4168    * GraphicsMagick now successfully builds and passes all tests under
  4169      Digital Unix 5.1, using the vendor compiler.
  4170    * Ghostscript sometimes displays an error message and fails, yet it
  4171      returns a success error code to GraphicsMagick. Verify that
  4172      Ghostscript has updated the output file before attempting to use it.
  4173    * Fixed a configure script syntax error when testing for trio.
  4174    * When requesting a list of formats, all of the modules in the module
  4175      search path are considered. Previously only the modules in the same
  4176      directory as the LOGO module were listed.
  4177    * Ensure that an image clip mask is respected by the negate algorithm.
  4178    * The BMP writer was sometimes writing incorrect BMP v4 files.
  4179    * Support reading and writing large PCX files.
  4180    * The Red Hat source RPM was failing to install the -config scripts
  4181      with execute permissions.
  4182    * Fixed a bug which could cause possible truncation while cloning the
  4183      image cache.
  4184    * Ensure that MIFF files indicate the compression which was actually used.
  4185    * Properly handle errors from libtiff so that corrupted images are not
  4186      output.
  4187    * Fix for stripped-TIFF reader. Discard extra samples beyond alpha in
  4188      scanline TIFFs.
  4189    * Endian option now controls TIFF byte-order rather than bit-order.
  4190    * TIFF writer can now write to pipes and other non-seekable output
  4191      destinations.
  4192    * JBIG writer was writing empty files for some libjbig releases.
  4193    * Improved handling of corrupt GIF files.
  4194    * Handle large SUN format images.
  4195    * Properly compute image depth for 16-bit SGI image files.
  4196    * For the gmdisplay program, ensure that only RGB data is sent to Windows.
  4197    * Many memory leak fixes.
  4198    * PDF writer is fixed so that Ghoscript 8.5 doesn't warn about the output.
  4199    * PDF writer now writes proper output with CCITT compression.
  4200    * Properly use fseeko() and ftello() if they are available.
  4201    * Fixed a infinite loop bug in the XWD reader.
  4202    * Fix minor memory leak in ProfileImage().
  4203    * Fixed -level command parsing when a percent symbol is supplied within the
  4204      argument rather than at the end.
  4205    * Fix pixel scaling problem caused by floating point
  4206      rounding error (noticed under AIX).
  4207    * Fixed a memory leak in the GIF coder in the error return path.
  4208    * Fix for SourceForge bug id 1353744 "MagickGetQuantumDepth doesn't work".
  4209    * Fix for SourceForge bug id 1315109 "segfault in InitializeMagick(NULL)".
  4210    * Fix for SourceForge bug id 1391421 "problem doing resize on 273x1 JPEG".
  4211    * Fix for SourceForge bug id 1510075 "Failed to write PDF with JPEG compression".
  4212    * Fix for SourceForge bug id 1572357 "GetOnePixel definition appears incorrect".
  4213    * Fix for SourceForge bug id 1576616 Fix includedir variable in pkg-config files".
  4214    * Fix for SourceForge bug id 1173713 "segfault in ModifyCache".
  4215    * Fix for SourceForge bug id 1431805 "clip art wpg files cause access violation
  4216      in graphics magick".
  4217    * Fix for SourceForge bug id 1743141 "Affine matrix option parsing".
  4218    * Fix for SourceForge bug id 1625477 "Memory leak reading layered PSD Image".
  4219    * Fix for SourceForge bug id 1878992 "literal square brackets in file
  4220      name cause large delay and bug id 1783209 "converting runs slowly
  4221      when subimage is specified".
  4222    * Fix for SourceForge bug id 1883527 "compression of tiff-file has no effect".
  4223    * Successfully read files in the form "file[123]".
  4224    * Fix reading 12-bit grayscale JPEG.
  4225    * Set image depth appropriately when importing image from X11 display.
  4226    * Fix map resource tracking.
  4227    * Fix reading recent variants of ImageMagick's MIFF format.
  4228    * Output bilevel TIFF meeting the TIFF Class F specification.
  4229  
  4230  New Utilities:
  4231  
  4232    * A 'benchmark' subcommand is now available to benchmark the
  4233      performance of any other arbitrary subcommand (e.g. 'convert').
  4234  
  4235  Feature improvements:
  4236  
  4237    * LZW compression is now enabled by default.
  4238    * Support industry-standard subsampling notation like "4:2:2".
  4239    * If gm is executed under a traditional alternate name (e.g.
  4240      convert), it will invoke the appropriate sub-command. This allows
  4241      use of hard links, symbolic links, or just copying 'gm' to the
  4242      desired sub-command name in order to achieve 100% ImageMagick 5.5.2
  4243      utility compatibility.
  4244    * Provide the --enable-magick-compat option when configuring to install
  4245      ImageMagick utilities compatibility links.
  4246    * Identify -verbose output includes normalized (0.0-1.0) statistics.
  4247    * Identify and convert now print "pixels per second" rates to help
  4248      evaluate performance.
  4249    * Added the identify +ping option to force reading the complete file.
  4250    * The display program now supports the +progress option to disable any
  4251      visual progress indication (and hourglass cursor) while loading images.
  4252    * Support writing grayscale TGA files.
  4253    * Provide explicit support for Rec 601 and Rec 709 grayscale spaces.
  4254    * Include some support for a log RGB space based on the 2.048 density
  4255      range as defined for the Cineon Digital Film System.
  4256    * Added utilities command-line support for industry standard subsampling
  4257      notation like 4:4:4 and 4:2:2.
  4258    * Use MAGICK_IOBUF_SIZE to tune the size of the I/O buffer.
  4259    * Use -type Bilevel, Grayscale, TrueColor, or TrueColorMatte to
  4260      influence the type of image that Ghostscript returns.
  4261    * Use '-define tiff:fill-order={msb2lsb|lsb2msb}' to control TIFF bit
  4262      fill order.
  4263    * The -version option now dumps a feature list as well as the build
  4264      options.
  4265    * The -endian option now supports the option 'native'.
  4266    * A -monitor is added to enable progress monitoring for the command line
  4267      utilities.
  4268    * Use the -output-directory option to 'mogrify' to send output files to
  4269      the specified directory.
  4270    * Use the -create-directories option in conjunction with
  4271      -output-directory and 'mogrify' to create any necessary subdirectories.
  4272    * A Pixels resource limit is added.  Use '-limit Pixels value' to limit
  4273      the maximum number of pixels in an image to 'value'.
  4274    * The already supported option '-type Optimize' is now honored by
  4275      formats that need to choose a subformat based on the properties of
  4276      the image. Grueling tests of many/all pixels are not performed
  4277      unless '-type Optimize' is supplied.
  4278    * Added a a -set option to the composite, convert, display, mogrify,
  4279      import commands in order to allow setting an image attribute.
  4280    * Display utility no longer defaults to reading from standard input if
  4281      stdin is not a tty.
  4282    * May now be configured to use the umem memory allocation library
  4283      available in Solaris 9, Update 3 and later, or from the portable umem
  4284      project.
  4285  
  4286  Coder additions/improvements:
  4287  
  4288    * Replaced existing DPX "support" with all-new DPX support conforming
  4289      to the SMPTE 268M-2003 standard.
  4290    * Cineon reader completely rewritten.
  4291    * TIFF coder is completely re-written. Now supports reading and
  4292      writing RGB, CMYK, and grayscale, scanline-oriented TIFF images
  4293      with arbitrary (1 to 32 bits) depth. Includes support for tiled
  4294      TIFF, floating point TIFF, LogLuv TIFF, BigTIFF, arbitrary depths,
  4295      and associated alpha.
  4296    * TIFF coder now supports retrieving and saving XMP profiles.
  4297    * MATLAB support is much improved and supports writing as well.
  4298    * WPG reader now supports CTM translations.
  4299    * ART format now supports writing.
  4300    * Support 32-bit raw RGB images.
  4301    * Support 32-bit raw CMYK images.
  4302    * Support 32-bit raw gray images.
  4303    * JP2 coder reads images in YCbCr colorspace and retrieves an embedded
  4304      ICC ICM color profile if present.
  4305  
  4306  API enhancements:
  4307  
  4308    * Added ExportImageChannel() and ImportImageChannel() APIs to support
  4309      exporting and importing pixel regions with an arbitary range of (1
  4310      to 32) bits per quantum.
  4311    * Added image leveling methods for Magick++.
  4312    * Generalized GetImageAttribute() support for retrieving wildcarded
  4313      attributes so that an identify -format specification like
  4314      ``"%[dpx:*]"`` works as expected.
  4315    * Incorporated changes changes necessary so that GraphicsMagick can
  4316      work with the Ch C/C++ interpreter from SoftIntegration at
  4317      http://www.softintegration.com/.
  4318    * Added MagickAllocFunctions() to allow the API user to replace the
  4319      underlying memory allocator functions.
  4320    * Added MagickMalloc() and deprecated AcquireMemory().
  4321    * Added MagickCloneMemory() and deprecated CloneMemory().
  4322    * Added MagickMallocArray() to safely allocate N items of size S.
  4323    * Added MagickRealloc() and deprecated ReacquireMemory().
  4324    * Added MagickFree() and deprecated LiberateMemory().
  4325  
  4326  Performance improvments:
  4327  
  4328    * The DispatchImage() and ConstituteImage() functions incorporate
  4329      special case code for BGR, BGRO, BGRP, RGB, RGBO, and I formats (8
  4330      bit only) in order to improve performance dramatically.
  4331    * When writing very large JPEG images, don't enable Huffman compression
  4332      since doing so requires libjpeg to buffer the entire image in memory.
  4333    * When using the 'identify' -verbose option, -verbose must be specified
  4334      twice in order to obtain the color count.  This makes normal use of
  4335      -verbose much faster.
  4336    * Significantly improved read/write speed for bilevel and gray images.
  4337    * TIFF I/O is considerably faster.
  4338    * Postscript writer is 10-15X faster.
  4339    * PNM formats writer is 10-100X faster.
  4340    * Rotate by 90 or 270 degrees is 2-9X faster.
  4341  
  4342  Windows-specific improvements/changes:
  4343  
  4344    * For the MinGW and Cygwin builds, the Magick++ library is forced to
  4345      build as a static library since otherwise C++ exceptions don't work.
  4346    * MinGW cross-build is available from a Linux or FreeBSD host.
  4347    * Determine location of Ghostscript fonts only once in order to improve
  4348      performance.
  4349    * Updated bzip2 to 1.0.4.
  4350    * Updated Jasper library to version 1.900.1.
  4351    * Updated jbigkit to 1.6
  4352    * Updated lcms to 1.17
  4353    * Updated libpng to 1.2.27.
  4354    * Updated libtiff to 3.8.2
  4355    * Updated zlib to 1.2.3.
  4356    * Libtiff supports LZW compression.
  4357    * X11 is no longer part of the default build and will not be included
  4358      in the distributed install packages (but can still be built).
  4359    * Find latest Ghostscript which idenfies itself as "GPL Ghostscript".
  4360    * Use GlobalMemoryStatusEx(), if available, to determine how much
  4361      physical memory is available. Important for large-memory machines.
  4362    * Fixed NTreaddir() so that it does not write beyond its buffer.
  4363    * Fixed opendir() emulation function so it can't overwrite the stack.
  4364    * FlashPIX library sources are no longer distributed in the Windows
  4365      source package and building FlashPIX is disabled by default.
  4366      FlashPIX may still be built by adding the library (separately
  4367      distributed).
  4368    * Fix bitmap handle leak in CropImageToHBITMAP() and ImageToHBITMAP().
  4369  
  4370  1.1 (Released April 4, 2004)
  4371  ============================
  4372  
  4373  Bug fixes:
  4374  
  4375    * Semaphore fix which is necessary for proper multi-threaded operation.
  4376    * Configure script fix to ensure that -lfpx is not supplied to the C
  4377      compiler during subsequent tests since this fails on some systems.
  4378    * Fix for East and West gravity computations.
  4379    * System error reports (errno) associated with an exception are now
  4380      correctly obtained from the context existing when the exception was
  4381      thrown rather than the context of the reporting function.
  4382    * JNG encoder fix. Files were being written with incorrect
  4383      alpha_sample_value in the header. These can be repaired by reading
  4384      them into GM 1.1 and rewriting them.
  4385    * XPM fix to module registration.
  4386    * PSD fix for index calculation when QuantumDepth>8.
  4387    * Validate that geometry specifications only include allowed
  4388      characters.
  4389    * SGI fix to save compression type while writing.
  4390    * EXIF attributes were not being retrieved when requested.
  4391    * Fix for bug when reading an image via a user-provided file
  4392      descriptor.
  4393    * The reported image magick string is now always that of the original
  4394      input file (it was sometimes being reported as the format produced by
  4395      an intermediate delegate program).
  4396    * Fixes to color profiling of CMYK images.
  4397    * Memory leak fixed in DrawClipPath().
  4398    * Arc drawing is fixed.
  4399    * Command-line parsing bug under Linux due to Linux's sscanfs
  4400      inability to parse strings like "0x1" as "%fx%f" is fixed.
  4401    * Scaling of 5 and 6-bit colors was slightly incorrect in BMP, AVI,
  4402      DIB, and TIM datastreams.
  4403    * GM utility now reports an error rather than silently returning if
  4404      an unsupported sub-command is provided.
  4405    * TIFF coder was writing 16-bit per sample RGB images incorrectly on
  4406      little-endian CPUs.
  4407  
  4408  Performance improvements:
  4409  
  4410    * Texture tiling is now 7X faster.
  4411    * Color profile processing speed improvements for colormapped images.
  4412  
  4413  Utilities enhancements:
  4414  
  4415    * For Unix, 'gm version' now includes a dump of the configure and
  4416      build parameters.
  4417    * Logging of thrown exceptions is now supported. Use '-debug
  4418      exception'. This is useful to learn when and where errors are
  4419      reported.
  4420    * The -define option is added in order to support supplying
  4421      additional options to coders without needing to add additional
  4422      command line options or structure members.
  4423    * The output of 'gm identify -verbose' now provides a nice dump
  4424      of EXIF data.
  4425    * The -sampling-factor option now accepts as many HxV pairs as
  4426      there are JPEG components.  Omitted ones default to 1x1.
  4427    * The convert and montage commands now support an -operator command to
  4428      perform arithmetic and bitwise operations on specified image channels.
  4429  
  4430  Coder additions/improvements
  4431  
  4432    * The META coder supports wide characters for the IPTC and 8BIM
  4433      formats.
  4434    * The XTRN coder now supports wide characters.
  4435    * An "IMAGE" coder is provided which provides access to a large
  4436      number of images (derived from XFig) suitable for use as patterns,
  4437      or as test images.
  4438    * The "PATTERN" coder now returns an image pattern tiled to size
  4439      (equivalent results to TILE:IMAGE:pattern). This is for ImageMagick
  4440      compatibility.
  4441    * The CINEON coder now supports reading and writing images in CINEON
  4442      "CIN" linear gray and RGB formats. The read support is still very
  4443      weak, but it works for common images.
  4444    * The JPEG coder now estimates the original JPEG quality and sampling
  4445      factors and will reuse these options when writing JPEG if the image
  4446      is of the same type and the option "-define JPEG:preserve-settings"
  4447      is supplied.
  4448    * The JPEG-2000 coder now supports all Jasper library arguments using
  4449      command line syntax similar to '-define jp2:rate=0.5'.
  4450    * Reading and writting compressed SVG (SVGZ) is now supported.
  4451    * The TXT coder now observes depth when writing.
  4452    * The TIFF coder now outputs colormapped images with 1, 2, 4, and 8
  4453      bits per sample in order to provide much smaller file sizes for
  4454      images with very few colors.
  4455    * Many TIFF coder enhancements. Now reads colormapped and grayscale
  4456      images at arbitrary (even odd) bits-per-sample sizes. Now properly
  4457      supports an opacity channel (at any bits-per-sample value) for
  4458      grayscale images. Bilevel grayscale images are treated similar to any
  4459      other grayscale image unless CCITT FAX3/FAX4 compression is
  4460      requested. Now allows the user to specify an arbitrary
  4461      bits-per-sample value for grayscale images (even odd values) using
  4462      "-define tiff:bits-per-sample=value". Now automatically stores the
  4463      image as TrueColor RGB pixels if the image compression is set to JPEG.
  4464      TIFF files are now written in using the TIFF library's default endian
  4465      order rather than always big endian.
  4466    * The WPG coder now renders embedded WMFs.
  4467    * The PS3 coder is completely re-written to work much better and
  4468      support more features (see ChangeLog).
  4469  
  4470  Code structure enhancements:
  4471  
  4472    * Error handling has been improved and validated through testing.
  4473      Some errors were being lost, unnecessarily ignored, or reported as
  4474      something else entirely.
  4475    * The number of error text messages to be maintained has been reduced
  4476      by consolidating similar messages.
  4477    * The memory allocator functions have been replaced with similar
  4478      macros in order to eliminate warnings with GCC 3.3, avoid
  4479      accidentally casting away const, and allow memory debuggers to
  4480      report memory allocations and frees against the correct functions.
  4481      The previously-used functions remain in the library for the purpose
  4482      of compatibility.
  4483    * <magick/xwindow.h> no longer depends on magick_config.h defines.
  4484    * The text string localization code has been replaced with a simpler
  4485      version written by Bill Radcliffe.
  4486    * Added key,value "map" APIs (somewhat similar to C++'s <map>) for
  4487      internal use.
  4488  
  4489  API enhancements:
  4490  
  4491    * Incorporated John Cristy's Wand API's in a new GraphicsMagickWand
  4492      library.
  4493    * API definition is no longer dependent on types which vary in size
  4494      (e.g. size_t) depending on large file compilation options.  This means
  4495      that applications may now be compiled without any special large file
  4496      options and still work properly with the library.
  4497    * Thrown exceptions (ExceptionInfo structure) now include source
  4498      file, source line, function name, and current system error number.
  4499    * The GetMagickInfoArray() function is added to replace use of
  4500      GetMagickInfo() for code which needs to access the coder list. This
  4501      is necessary since invoking GetMagickInfo() may re-order the coder
  4502      list, causing problems for code which traverses the list. Using
  4503      GetMagickInfo() to access individual list elements is safe.
  4504    * Added the CopyException function to support copying exception info
  4505      from one structure to another.
  4506    * Added the ReplaceImageInList function to replace an image in an
  4507      image list.
  4508    * Added the DrawPeekGraphicContext function to access the current
  4509      DrawInfo structure in the drawing context stack. Use of this
  4510      function is not recommended since it voilates proper programming
  4511      practices. It is added to support the Wand API's.
  4512    * GetImageDepth() now returns an integral value between 1 and
  4513      QuantumDepth and is no longer limited to the values 8, 16, and 32.
  4514    * SetImageDepth() supports setting the image modulus depth to any
  4515      integral value between 1 and QuantumDepth. This effects the effective
  4516      numeric precision, not the storage depth, since the quantum storage
  4517      type is still a Quantum.
  4518    * GetImageChannelDepth() supports retrieving the modulus depth for a
  4519      specified channel.
  4520    * SetImageChannelDepth() supports setting the modulus depth for a
  4521      specified channel.
  4522    * ProfileImage is updated to handle alpha channels and grayscale
  4523      images.
  4524    * Added GetImageProfile() to retrieve a CMS profile from an image.
  4525    * Added SetImageProfile() to attach a CMS profile to an image without
  4526      adjusting the image pixels.
  4527    * Added DeleteImageProfile() to remove a CMS profile from an image.
  4528    * ConstituteImage() and DispatchImage() now support 'T' (transparency),
  4529      'O' (opacity), and 'P' (pad) options.
  4530    * CompositeImage() now supports CopyCyanCompositeOp,
  4531      CopyMagentaCompositeOp, CopyYellowCompositeOp, and
  4532      CopyBlackCompositeOp, composition operators.
  4533    * GetColorHistogram() obtains a color histogram for the image.
  4534    * QuantumOperatorImage() and QuantumOperatorRegionImage() support
  4535      arithmetic and bitwise operations on specified image channels.
  4536    * The semaphore.h header is no longer installed or included in the
  4537      API headers since these functions are private interfaces.
  4538    * Configure using --enable-symbol-prefix or define
  4539      PREFIX_MAGICK_SYMBOLS to use the C preprocessor to prefix all library
  4540      symbols with "Gm". This prevents library symbol conflicts with other
  4541      libraries.
  4542  
  4543  PerlMagick fixes:
  4544  
  4545    * Adjusted a number of function option names so that they match the
  4546      documentation.
  4547    * Memory leak fixed.
  4548    * Reading files (e.g. GIF) via a file descriptor is fixed.
  4549  
  4550  Build improvements:
  4551  
  4552    * The TRIO library may be used to provide a replacement for vsnprintf
  4553      if the C library doesn't provide it.  This improves security on old
  4554      systems.
  4555    * Configure only configures for C & C++ languages.
  4556    * Configure now does a better job of figuring out how to build a
  4557      thread-safe library across multiple operating systems.
  4558    * Configure incorporates a new mmap() test which tests the
  4559      functionality which is needed so that mmap() is not unnecessarily
  4560      rejected on a number of systems. This improves performance for large
  4561      files on those systems.
  4562    * Configure/build fixes for IBM's AIX operating system.
  4563  
  4564  Windows-specific improvements:
  4565  
  4566    * The static install package now uses the "uninstalled"
  4567      configuration so that it does not depend on the Windows registry in
  4568      order to run. This allows files from the static install package to
  4569      be copied to another computer without running an installer.
  4570    * The executable search path is extended at run-time to include the
  4571      directory where the CORE DLLs reside in order to ensure that they
  4572      are found.
  4573    * Adding the -t option to VisualMagick configure enables building
  4574      all of the coders into one library in order to save build time and
  4575      simplify linkage.
  4576    * The XTRN coder now supports wide characters.
  4577    * LCMS library updated to version 1.10.
  4578    * GMDisplay displays a checkerboard pattern behind transparent images.
  4579    * Support is provided for issuing log messages to the Windows standard
  4580      logging system.
  4581    * Project files are now provided for use with Borland C++ Builder 6.0.
  4582    * Updated LCMS version to 1.12.
  4583    * Updated FreeType version to 2.1.5.
  4584    * Updated JBIG-KIT to version 1.5.
  4585    * Updated libpng to version 1.2.5.
  4586    * Updated libwmf to version 0.2.8.2.
  4587    * Updates zlib to version 1.2.1.
  4588    * ActivePerl 5.8.1 Build 807 now supported.
  4589    * GraphicsMagick now compiles using Visual Studio .NET 2003.
  4590  
  4591  ---------------------------------------------------------------------------
  4592  
  4593  1.0 (Released in May, 2003)
  4594  ===========================
  4595  
  4596  GraphicsMagick support services:
  4597  
  4598    * Master web site at "http://www.GraphicsMagick.org/".
  4599    * Mailing lists, bug tracking, and forums available via
  4600      "https://sourceforge.net/projects/graphicsmagick/".
  4601    * Mercurial Web via "http://hg.code.sf.net/p/graphicsmagick/code/".
  4602    * Mercurial mirror via SourceForge (find instructions at
  4603      "http://www.graphicsmagick.org/Hg.html").
  4604    * FTP via "ftp://ftp.graphicsmagick.org/pub/GraphicsMagick".
  4605  
  4606  Project maintenance improvements:
  4607  
  4608    * ChangeLog conforms to the GNU standard and all CVS commits include
  4609      useful log messages.
  4610    * CVS commit messages posted to graphicsmagick-commit mail list.
  4611    * CVS commit messages contain CVSWeb URL references.
  4612  
  4613  Footprint changes from ImageMagick:
  4614  
  4615    * Library -lMagick renamed to -lGraphicsMagick.
  4616    * Library -lMagick++ renamed to -lGraphicsMagick++.
  4617    * Utilities consolidated into a single 'gm' utility (e.g. use 'gm
  4618      convert').
  4619    * Script Magick-config renamed to GraphicsMagick-config.
  4620    * Script Magick++-config renamed to GraphicsMagick++-config.
  4621    * Headers installed under ${PREFIX}/include/GraphicsMagick.
  4622    * PerlMagick namespace renamed from "Image::Magick" to "Graphics::Magick".
  4623    * Pkgconfig files GraphicsMagick.pc and GraphicsMagick++.pc are
  4624      installed in $libdir/pkgconfig to assist pkg-config users.
  4625    * Coder modules installed to lib/GraphicsMagick-1.0/modules-Q8/coders.
  4626    * Filter modules installed to lib/GraphicsMagick-1.0/modules-Q8/filters.
  4627  
  4628  Many performance enhancements:
  4629  
  4630    * Default QuantumDepth is 8 since this is adequate for most purposes
  4631      and more efficient than 16.
  4632    * The Magick++ demo (compiled with QuantumDepth=8 and -O2) runs about
  4633      1.8X faster under SPARC/Solaris than the same demo with ImageMagick
  4634      5.5.4.
  4635    * Colorspace transformations are much faster.
  4636    * Grayscale/monochrome image handling is much faster.
  4637    * PseudoClass image handling is faster.
  4638    * Text annotations using FreeType are much faster.
  4639    * Image file I/O is much faster.
  4640    * RLE-compressed MIFF reading much faster.
  4641  
  4642  Code structure enhancements:
  4643  
  4644    * All utility support functions moved to magick/command.c in order to
  4645      significantly reduce link dependencies, allowing statically-linked
  4646      programs to be smaller.
  4647    * Use of MogrifyImage() eliminated except for by utilities.
  4648    * Re-builds due to changes to <magick/image.h> reduced by splitting the
  4649      header into multiple headers.
  4650    * ISO C '99 typedefs (gm_int16_t, gm_uint16_t, gm_int32_t, gm_uint32_t,
  4651      gm_int64_t, gm_uint64_t) are available for use.
  4652  
  4653  Feature enhancements:
  4654  
  4655    * Module loader always enabled for shared builds to allow extension.
  4656    * Loading of arbitrary filter modules (via -process option) supported
  4657      under Unix as well as Windows.
  4658    * SVG coder allows specifying size and initial background color.
  4659    * JPEG-2000 coder (JP2) updated to work with Jasper 1.7.
  4660    * HWB and HSL image colorspace translation support.
  4661    * JNG/MNG/PNG format support tracks ImageMagick version.
  4662    * BMP encoder can write 16-color indexed BMPs now as well as 2-color
  4663      BMPs (not restricted to monochrome).
  4664    * TIFF decoder now includes optimized support for tiled and stripped
  4665      TIFF.
  4666    * The -random-threshold option (RandomThresholdImage()) is added to
  4667      threshold an image to bilevel using random thresholding.
  4668  
  4669  Major bug fixes:
  4670  
  4671    * 100% successful test completion at all quantum depths (8/16/32).
  4672    * A temporary file management subsystem is added to ensure that all
  4673      temporary files are removed before program exit. Temporary files are
  4674      created and used in a secure fashion to avoid the possibility that a
  4675      "trojan" temporary file (e.g. a symbolic link, or a file containing
  4676      unsafe content) is created before a delegate has the chance to write
  4677      to it. The environment variable MAGICK_TMPDIR allows the user to
  4678      specify where temporary files are created without altering where
  4679      other programs create their temporary files. Temporary filenames are
  4680      created in 8+3 format to hopefully be more acceptable to ralcgm.
  4681    * When dithering is disabled, don't dither when converting to a
  4682      PseudoClass, grayscale, or monochrome image. Disabling dithering
  4683      may cause these translations to be much faster.
  4684    * PICON format works with BLOBs.
  4685    * No longer removes input file when pinging a FlashPIX file.
  4686    * Arc drawing and texture fill fixes from ImageMagick.
  4687    * Sample, scale and affine fixes from ImageMagick.
  4688    * MIFF colormaps are now scaled properly while reading.
  4689    * CMYK translation works for QuantumDepth=32.
  4690    * ConstituteImage now works properly for grayscale images.
  4691    * Built-in tilde expansion and filename globbing now works properly.
  4692    * InitializeMagick now registers signal handlers to ensure that
  4693      resources are released before program exit.  This helps avoid
  4694      temporary file leaks due to the user using "CONTROL-C".
  4695    * The installed <magick/magick_config.h> header now only contains
  4696      the few definitions required by the API headers.  This should
  4697      significantly reduce or eliminate conflicts with other package
  4698      headers.
  4699  
  4700  Windows platform enhancements:
  4701  
  4702    * Configure updated for Visual C++ 7.0.
  4703    * OLE object (ImageMagickObject) re-written to work with Visual C++ 7.0
  4704    * New function, CropImageToHBITMAP(), to return a region of the image
  4705      as a Windows HBITMAP.
  4706    * Use vsnprintf to format strings under Windows (safer).
  4707  
  4708  ---------------------------------------------------------------------------
  4709  
  4710  On November 19, 2002, GraphicsMagick was created as a fork of
  4711  ImageMagick, several days before the ImageMagick 5.5.2 release.
  4712  
  4713  The objectives of GraphicsMagick are to:
  4714  
  4715    * Use an open development model.
  4716    * Encourage new developers to join the project.
  4717    * Avoid unnecessary source code "churn".
  4718    * Establish and preserve a stable API.
  4719    * Use efficient coding practices which result in fast code.
  4720    * Improve memory efficiency.
  4721    * Use a release process which assures a working product.
  4722    * Maintain an accurate ChangeLog.
  4723  
  4724  
  4725  ---------------------------------------------------------------------------
  4726  
  4727  .. |copy|   unicode:: U+000A9 .. COPYRIGHT SIGN
  4728  
  4729  Copyright |copy| GraphicsMagick Group 2002 - 2018