summaryrefslogtreecommitdiff
path: root/doc/releases/v4.5.0.rst
blob: 74dc0487c13681b6040f50a5992dab5aebbb156c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
Changes in TIFF v4.5.0
======================

.. table:: References
    :widths: auto

    ======================  ==========================================
    Current Version         v4.5.0 (:tag:`v4.5.0`)
    Previous Version        :doc:`v4.4.0 <v4.4.0>`
    Master Download Site    `<https://download.osgeo.org/libtiff/>`_
    Master HTTP Site #1     `<http://www.simplesystems.org/libtiff/>`_
    Master HTTP Site #2     `<https://libtiff.gitlab.io/libtiff/>`_
    Master HTTP Site #3     `<http://libtiff.maptools.org/>`_
    ======================  ==========================================

This document provides a summary of significant changes made to the
software between the *previous* and *current* versions (see
above). A fully-detailed change summary is provided by the :file:`ChangeLog` file
included in the release package and by the Git commit history:

Major changes
-------------

* Whole code base reformatting of .c/.h files using new .clang-format format
* Documentation changed from static HTML and man pages to Restructured Text
  (rst). HTML and man pages are now build artifacts.

Software configuration changes
------------------------------

* SONAME version bumped to 6 due to changes in symbol versioning.
* autoconf/cmake: detect (not yet released) libjpeg-turbo 2.2 to take into
  its capability of handling both 8-bit JPEG and 12-bit JPEG in a single build.
* autoconf/cmake: detect sphinx-build to build HTML and man pages
* CMakeLists.txt: fix warning with -Wdev
* CMake: correctly set default value of 'lzma' option when liblzma is detected
  (:issue:`482`)
* CMake: Moved linking of CMath::CMath into CMath_LIBRARY check.
* Fix CMake build to be compatible with FetchContent.
* cmake: Correct duplicate definition of _CRT_SECURE_NO_WARNINGS (:issue:`443`)
* cmake: Fixes for Visual Studio 2022.
* Adds Requires.private generation so that pkg-config can correctly find
  the dependencies of libtiff.
* Fix dependency on libm on Android
* cmake: libtiffxx is static on win32
* Fix build in tif_lzw.c
* CMake: Add options for disabling tools, tests, contrib and docs.

Library changes
---------------

New/improved functionalities:

* Addition of an open option concept with the new functions
  :c:func:`TIFFOpenExt`, :c:func:`TIFFOpenWExt`, :c:func:`TIFFFdOpenExt`,
  :c:func:`TIFFClientOpenExt`, :c:func:`TIFFOpenOptionsAlloc`, 
  :c:func:`TIFFOpenOptionsFree`
* Leveraging above mentioned open option concept, addition of a new capability
  to limit the size of a single dynamic memory allocation done
  by the library with :c:func:`TIFFOpenOptionsSetMaxSingleMemAlloc`
* Leveraging above mentioned open option concept, addition of a new capability
  to specify per-TIFF handle re-entrant error and warning callbacks
  with :c:func:`TIFFOpenOptionsSetErrorHandlerExtR` and
  :c:func:`TIFFOpenOptionsSetWarningHandlerExtR`

Bug fixes:

* TIFFWriteRawStrip(): restore capabilities to append data in the current strip
  (:issue:`489`)
* _TIFFReadEncodedTileAndAllocBuffer(): avoid excessive memory allocation on
  broken files (:issue:`479`)
* TIFFReadRGBATileExt(): fix (unsigned) integer overflow on strips/tiles > 2 GB
  (oss-fuzz #53137)
* Replace sprintf calls with snprintf to fix warnings on macOS 13 SDK
* Added warning messages for FIELD_IGNORE tags for writing and for
  TIFF_SETGET_UNDEFINED for reading added. (:issue:`438`)
* tif_dirinfo.c: fix TIFFTAG_CLIPPATH tag declaration (:issue:`439`)
* tif_dirinfo.c: fix TIFFTAG_COMPRESSION and _BITSPERSAMPLE tag declaration
  (:issue:`364`)
* Revised handling of TIFFTAG_INKNAMES and related TIFFTAG_NUMBEROFINKS value
  (:issue:`149`, :issue:`150`, :issue:`152`, :issue:`168`, :issue:`250`,
  :issue:`269`,:issue:`398`, :issue:`456`)
* TIFFAdvanceDirectory(): fix unsigned-integer-overflow in mapped case
  (oss-fuzz #52309)
* Improved/fixes IFD-Loop Handling (:issue:`455`)
* Update getimage to support large raster images.
* Presetting of default tag values extended (e.g. PlanarConfig). (:issue:`449`)
* Deal with RichTIFFIPTC tag written with LONG type (:issue:`225`)
* TIFFSetValue(): Writing IFD8 & LONG8 tags to ClassicTIFF corrected
  (:issue:`442`)
* tif_jpeg.c: allow to pass -DEXPECTED_JPEG_LIB_VERSION=number to do optional
  compile-time version check
* TIFFReadFromUserBuffer(): fix clearing of TIFF_CODERSETUP flag that could
  cause issues with reading JPEG compressed files
* _TIFFCheckFieldIsValidForCodec(): return FALSE when passed a codec-specific
  tag and the codec is not configured (:issue:`433`)
* Add basic 16 bit cielab support.
* WEBP codec: avoid temporary buffer and memcpy() on whole tile/strip decoding
* tif_predict.c: make horAcc8() work with icc (ICC) 2021.6.0 20220226 -O2

Tools changes
-------------

New/improved functionality:

* :program:`tiffinfo`: Updated to parse through SubIFDs and show their tags.

Bug fixes:

* :program:`tiffcrop`: add check if (bps != 1) in writeSingleSection()
  (:issue:`169`)
* :program:`tiffcrop`: Fix too many 'mode' options on command line
  (:issue:`470` and :issue:`450`)
* :program:`tiffcrop`: Fix memory allocation to require a larger buffer
  (:issue:`271`, :issue:`381`, :issue:`386`, :issue:`388`, :issue:`389`,
  :issue:`435`)
* :program:`tiffcrop`: disable incompatibility of -Z, -X, -Y, -z options with
  any PAGE_MODE_x option (:issue:`411`, :issue:`413`)
* :program:`tiffcrop`: -S option mutually exclusive (:issue:`349`,
  :issue:`414`, :issue:`422`, :issue:`423`, :issue:`424`)
* :program:`tiffcrop`: fix floating-point exception (:issue:`415`,
  :issue:`427`, :issue:`428`)
* :program:`tiff2pdf`: Don't try to seek into stdout (:issue:`441`)

Contributed software changes
----------------------------

None