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

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