<!DOCTYPE html>

<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />

    <title>Changes in TIFF v4.2.0 &#8212; LibTIFF 4.7.1 documentation</title>
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b849a4e9" />
    <link rel="stylesheet" type="text/css" href="../_static/sphinxdoc.css?v=0a676766" />
    <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=3b5d5a7b"></script>
    <script src="../_static/doctools.js?v=888ff710"></script>
    <script src="../_static/sphinx_highlight.js?v=4825356b"></script>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="Changes in TIFF v4.1.0" href="v4.1.0.html" />
    <link rel="prev" title="Changes in TIFF v4.3.0" href="v4.3.0.html" /> 
  </head><body>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="v4.1.0.html" title="Changes in TIFF v4.1.0"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="v4.3.0.html" title="Changes in TIFF v4.3.0"
             accesskey="P">previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="../index.html">LibTIFF 4.7.1 documentation</a> &#187;</li>
          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Release history</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">Changes in TIFF v4.2.0</a></li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <section id="changes-in-tiff-v4-2-0">
<h1>Changes in TIFF v4.2.0<a class="headerlink" href="#changes-in-tiff-v4-2-0" title="Permalink to this heading">¶</a></h1>
<table class="docutils align-default" id="id1">
<caption><span class="caption-text">References</span><a class="headerlink" href="#id1" title="Permalink to this table">¶</a></caption>
<tbody>
<tr class="row-odd"><td><p>Current Version</p></td>
<td><p>v4.2.0 (<a class="reference external" href="https://gitlab.com/libtiff/libtiff/-/tags/v4.2.0">tag v4.2.0</a>)</p></td>
</tr>
<tr class="row-even"><td><p>Previous Version</p></td>
<td><p><a class="reference internal" href="v4.1.0.html"><span class="doc">v4.1.0</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>Master Download Site</p></td>
<td><p><a class="reference external" href="https://download.osgeo.org/libtiff/">https://download.osgeo.org/libtiff/</a></p></td>
</tr>
<tr class="row-even"><td><p>Master HTTP Site #1</p></td>
<td><p><a class="reference external" href="http://www.simplesystems.org/libtiff/">http://www.simplesystems.org/libtiff/</a></p></td>
</tr>
<tr class="row-odd"><td><p>Master HTTP Site #2</p></td>
<td><p><a class="reference external" href="https://libtiff.gitlab.io/libtiff/">https://libtiff.gitlab.io/libtiff/</a></p></td>
</tr>
<tr class="row-even"><td><p>Master HTTP Site #3</p></td>
<td><p><a class="reference external" href="http://libtiff.maptools.org/">http://libtiff.maptools.org/</a></p></td>
</tr>
</tbody>
</table>
<p>This document provides a summary of significant changes made to the
software between the <em>previous</em> and <em>current</em> versions (see
above). A fully-detailed change summary is provided by the <code class="file docutils literal notranslate"><span class="pre">ChangeLog</span></code> file
included in the release package and by the Git commit history:</p>
<section id="major-changes">
<h2>Major changes<a class="headerlink" href="#major-changes" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Optional support for using libdeflate is added.</p></li>
<li><p>Many of the tools now support a memory usage limit.</p></li>
</ul>
</section>
<section id="software-configuration-changes">
<h2>Software configuration changes<a class="headerlink" href="#software-configuration-changes" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>The Microsoft Windows 'nmake' build is resuscitated and provides
a default <code class="docutils literal notranslate"><span class="pre">HAVE_STRTOLL</span></code> setting in 'nmake.opt' which is suitable for
MSVC++ 14.0 (&quot;Visual Studio 2015&quot;) and later but may be disabled in
order to compile with earlier compiler versions.</p></li>
<li><p>mingw-w64 cmake build fixes to not add libm</p></li>
</ul>
</section>
<section id="library-changes">
<h2>Library changes<a class="headerlink" href="#library-changes" title="Permalink to this heading">¶</a></h2>
<ul>
<li><p>A great many issues discovered by fuzzers (via oss-fuzz and other reports) have been addressed.</p></li>
<li><p>EXIF 2.32 and GPS tags and functionality have been upgraded:</p>
<blockquote>
<div><ul class="simple">
<li><p>Existing EXIF field definition of tags are upgraded to EXIF version 2.3.2</p></li>
<li><p>EXIF-GPS structure, tags and access functions are added as special <code class="docutils literal notranslate"><span class="pre">CustomDirectory</span></code> (like it was done for EXIF).</p></li>
<li><p>Reading error for FileSource and SceneType tags corrected.</p></li>
</ul>
</div></blockquote>
</li>
<li><p>Make <code class="docutils literal notranslate"><span class="pre">TIFFTAG_CFAPATTERN</span></code> variable count.</p></li>
<li><p>Cmake configuration fixes for big-endian targets.</p></li>
<li><p>Added support for optional building against libdeflate for
faster Zip/Deflate compression/decompression.</p>
<p>We now have 2 kinds of builds with the Zip/Deflate codec:</p>
<blockquote>
<div><ul class="simple">
<li><p>zlib only</p></li>
<li><p>zlib + libdeflate</p></li>
</ul>
</div></blockquote>
<p>Speed improvements in the 35%-50% range can be expected when libdeflate is used.
Compression level up to 12 is now supported (capped to 9 when zlib is used).
Still requires zlib for situations where libdeflate cannot be used (that
is for scanline access, since libdeflate has no streaming mode)</p>
<p>Pseudo-tag <code class="docutils literal notranslate"><span class="pre">TIFFTAG_DEFLATE_SUBCODEC=DEFLATE_SUBCODEC_ZLIB/DEFLATE_SUBCODEC_LIBDEFLATE</span></code>
is added to control which subcodec (zlib or libdeflate) should be used (it defaults
of course to libdeflate, when it is available).
This is mostly aimed at being used on the writing side, to be able to reproduce
output of previous libtiff versions at a binary level, in situations where this would
be really needed. Or as a safety belt in case there would be unforeseen issues
with using libdeflate.
It can be used to know when libdeflate is available at runtime (<code class="docutils literal notranslate"><span class="pre">DEFLATE_SUBCODEC_LIBDEFLATE</span></code>
will be the default value in that situation).</p>
<p>Of course, deflate codestreams produced by libdeflate can be read by zlib, and vice-versa.</p>
</li>
</ul>
</section>
<section id="tools-changes">
<h2>Tools changes<a class="headerlink" href="#tools-changes" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>A great many issues discovered by fuzzers (via oss-fuzz and other reports) have been addressed.</p></li>
<li><p><strong class="program">ppm2tiff</strong>: support any bps value from 1 to 16.</p></li>
<li><p><strong class="program">tiff2ps</strong>, <strong class="program">tiff2rgba</strong>:  A default memory limit is now enforced (256MiB) and a <code class="docutils literal notranslate"><span class="pre">-M</span></code> option is added to allow the user to adjust the limit.</p></li>
<li><p><strong class="program">tiff2pdf</strong>, <strong class="program">tiffcp</strong>: A default memory limit is now enforced (256MiB) and a <code class="docutils literal notranslate"><span class="pre">-m</span></code> option is added to allow the user to adjust the limit.</p></li>
<li><p><strong class="program">tiffcrop</strong>: A default memory limit is now enforced (256MiB) and a <code class="docutils literal notranslate"><span class="pre">-k</span></code> option is added to allow the user to adjust the limit.</p></li>
<li><p><strong class="program">tiff2pdf</strong>: fix &quot;raw&quot; copy of Deflate streams.</p></li>
<li><p><strong class="program">tiff2pdf.c</strong>: properly calculate datasize when saving to JPEG YCbCr</p></li>
<li><p><strong class="program">tiffcp</strong>: disable strip chopping when trying to convert to JBIG compression</p></li>
</ul>
</section>
<section id="contributed-software-changes">
<h2>Contributed software changes<a class="headerlink" href="#contributed-software-changes" title="Permalink to this heading">¶</a></h2>
<p>None</p>
</section>
</section>


            <div class="clearer"></div>
          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <div>
    <h3><a href="../index.html">Table of Contents</a></h3>
    <ul>
<li><a class="reference internal" href="#">Changes in TIFF v4.2.0</a><ul>
<li><a class="reference internal" href="#major-changes">Major changes</a></li>
<li><a class="reference internal" href="#software-configuration-changes">Software configuration changes</a></li>
<li><a class="reference internal" href="#library-changes">Library changes</a></li>
<li><a class="reference internal" href="#tools-changes">Tools changes</a></li>
<li><a class="reference internal" href="#contributed-software-changes">Contributed software changes</a></li>
</ul>
</li>
</ul>

  </div>
  <div>
    <h4>Previous topic</h4>
    <p class="topless"><a href="v4.3.0.html"
                          title="previous chapter">Changes in TIFF v4.3.0</a></p>
  </div>
  <div>
    <h4>Next topic</h4>
    <p class="topless"><a href="v4.1.0.html"
                          title="next chapter">Changes in TIFF v4.1.0</a></p>
  </div>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/releases/v4.2.0.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
      <input type="submit" value="Go" />
    </form>
    </div>
</div>
<script>document.getElementById('searchbox').style.display = "block"</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="v4.1.0.html" title="Changes in TIFF v4.1.0"
             >next</a> |</li>
        <li class="right" >
          <a href="v4.3.0.html" title="Changes in TIFF v4.3.0"
             >previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="../index.html">LibTIFF 4.7.1 documentation</a> &#187;</li>
          <li class="nav-item nav-item-1"><a href="index.html" >Release history</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">Changes in TIFF v4.2.0</a></li> 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
    &#169; Copyright 1988-2025, LibTIFF contributors.
      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.1.2.
    </div>
  </body>
</html>