<!-- SPDX-License-Identifier: BSD-3-Clause -->
<!-- Copyright (c) Contributors to the OpenEXR Project -->

# OpenEXR Release Notes

* [Version 3.2.1](#version-321-september-27-2023) September 27, 2023
* [Version 3.2.0](#version-320-august-30-2023) August 30, 2023
* [Version 3.1.11](#version-3111-august-13-2023) August 13, 2023
* [Version 3.1.10](#version-3110-august-2-2023) August 2, 2023
* [Version 3.1.9](#version-319-june-25-2023) June 25, 2023
* [Version 3.1.8](#version-318-june-2-2023) June 2, 2023
* [Version 3.1.7](#version-317-march-28-2023) March 28, 2023
* [Version 3.1.6](#version-316-march-9-2023) March 9, 2023
* [Version 3.1.5](#version-315-april-11-2022) April 11, 2022
* [Version 3.1.4](#version-314-january-26-2022) January 27, 2022
* [Version 3.1.3](#version-313-october-27-2021) October 27, 2021
* [Version 3.1.2](#version-312-october-4-2021) October 4, 2021
* [Version 3.1.1](#version-311-august-2-2021) August 2, 2021
* [Version 3.1.0](#version-310-july-22-2021) July 22, 2021
* [Version 3.0.5](#version-305-july-1-2021) July 1, 2021
* [Version 3.0.4](#version-304-june-3-2021) June 3, 2021
* [Version 3.0.3](#version-303-may-18-2021) May 18, 2021
* [Version 3.0.2](#version-302-may-17-2021) May 17, 2021
* [Version 3.0.1](#version-301-april-1-2021) April 1, 2021
* [Version 3.0.1-beta](#version-301-beta-march-28-2021) March 28, 2021
* [Version 3.0.0-beta](#version-300-beta-march-16-2021) March 16, 2021
* [Version 2.5.8](#version-258-march-18-2022) March 18, 2022
* [Version 2.5.7](#version-257-june-16-2021) June 16, 2021
* [Version 2.5.6](#version-256-may-17-2021) May 17, 2021
* [Version 2.5.5](#version-255-february-12-2021) February 12, 2021
* [Version 2.5.4](#version-254-december-31-2020) December 31, 2020
* [Version 2.5.3](#version-253-august-12-2020) August 12, 2020
* [Version 2.5.2](#version-252-june-15-2020) June 15, 2020
* [Version 2.5.1](#version-251-may-11-2020) May 11, 2020
* [Version 2.5.0](#version-250-may-6-2020) May 6, 2020
* [Version 2.4.3](#version-243-may-17-2021) May 17, 2021
* [Version 2.4.2](#version-242-june-15-2020) June 15, 2020
* [Version 2.4.1](#version-241-february-11-2020) February 11, 2020
* [Version 2.4.0](#version-240-september-19-2019) September 19, 2019
* [Version 2.3.0](#version-230-august-13-2018) August 13, 2018
* [Version 2.2.2](#version-222-april-30-2020) April 30, 2020
* [Version 2.2.1](#version-221-november-30-2017) November 30, 2017
* [Version 2.2.0](#version-220-august-10-2014) August 10, 2014
* [Version 2.1.0](#version-210-november-25-2013) November 25, 2013
* [Version 2.0.1](#version-201-july-11-2013) July 11, 2013
* [Version 2.0.0](#version-200-april-9-2013) April 9, 2013
* [Version 1.7.1](#version-171-july-31-2012) July 31, 2012
* [Version 1.7.0](#version-170-july-23-2010) July 23, 2010
* [Version 1.6.1](#version-161-october-22-2007) October 22, 2007
* [Version 1.6.0](#version-160-august-3,2007) August 3, 2007
* [Version 1.5.0](#version-150-december-15-2006) December 15, 2006
* [Version 1.4.0a](#version-140a-august-9-2006) August 9, 2006
* [Version 1.4.0](#version-140-august-2,2006) August 2, 2006
* [Version 1.3.1](#version-131-june-14-2006) June 14, 2006
* [Version 1.3.0](#version-130-june-8,2006) June 8, 2006
* [Version 1.2.2](#version-122-march-15-2005) March 15, 2005
* [Version 1.2.1](#version-121-june-6,2004) June 6, 2004
* [Version 1.2.0](#version-120-may-11-2004) May 11, 2004
* [Version 1.1.1](#version-111-march-27-2004) March 27, 2004
* [Version 1.1.0](#version-110-february-6-2004) February 6, 2004
* [Version 1.0.7](#version-107-january-7-2004) January 7, 2004
* [Version 1.0.6](#version-106)
* [Version 1.0.5](#version-105-april-3-2003) April 3, 2003
* [Version 1.0.4](#version-104)
* [Version 1.0.3](#version-103)
* [Version 1.0.2](#version-102)
* [Version 1.0.1](#version-101)
* [Version 1.0](#version-10)

## Version 3.2.1 (September 27, 2023)

Patch release with miscellaneous build fixes:

* Fix for linking statically against an external ``libdeflate``
* Fix a compile error with ``OPENEXR_VERSION_HEX``
* Fix various compiler warnings
* Pkg-config generation is now on by default for all systems, including Windows

### Merged Pull Requests

* [1568](https://github.com/AcademySoftwareFoundation/openexr/pull/1568)
Fix Imf/Iex/IlmThread namespaces in python bindings and website code
* [1565](https://github.com/AcademySoftwareFoundation/openexr/pull/1565)
Update openexr_deps.bzl
* [1562](https://github.com/AcademySoftwareFoundation/openexr/pull/1562)
Bazel: Improve module
* [1561](https://github.com/AcademySoftwareFoundation/openexr/pull/1561)
Clean up handling of libdeflate when linking static
* [1560](https://github.com/AcademySoftwareFoundation/openexr/pull/1560)
Omit OPENEXR_IMAGES_TAG from test image url if empty
* [1557](https://github.com/AcademySoftwareFoundation/openexr/pull/1557)
Set build-shared:OFF for Static build
* [1541](https://github.com/AcademySoftwareFoundation/openexr/pull/1541)
OPENEXR_INSTALL_PKG_CONFIG is on by default, even on Windows
* [1540](https://github.com/AcademySoftwareFoundation/openexr/pull/1540)
Default value for chromaticities attribute constructor in exrstdattr
* [1539](https://github.com/AcademySoftwareFoundation/openexr/pull/1539)
Fix OPENEXR_VERSION_HEX
* [1536](https://github.com/AcademySoftwareFoundation/openexr/pull/1536)
Python wheel setup gets version from OpenEXR.pc/Imath.pc
* [1534](https://github.com/AcademySoftwareFoundation/openexr/pull/1534)
Fix warnings from cross-compiling with x86_64-w64-mingw32-gcc-posix
* [1533](https://github.com/AcademySoftwareFoundation/openexr/pull/1533)
Fix warnings in multipartExamples.cpp
* [1532](https://github.com/AcademySoftwareFoundation/openexr/pull/1532)
Don't trigger ci/bazel/ossfuzz builds on pushes/PRs to src/wrappers
* [1531](https://github.com/AcademySoftwareFoundation/openexr/pull/1531)
Propagate OPENEXR_INSTALL_PKG_CONFIG to internal Imath
* [1530](https://github.com/AcademySoftwareFoundation/openexr/pull/1530)
Set minimal permissions for workflow python-wheels.yml
* [1528](https://github.com/AcademySoftwareFoundation/openexr/pull/1528)
Remove check for _MSC_VER in internal_cpuid.h

## Version 3.2.0 (August 30, 2023)

Minor release with several additions, changes and improvements:

* Zip compression via ``libdeflate``

  As of OpenEXR release v3.2, OpenEXR depends on
  [libdeflate](https://github.com/ebiggers/libdeflate) for
  DEFLATE-based compression. Previous OpenEXR releases relied on
  [zlib](https://www.zlib.net). Builds of OpenEXR can choose either an
  ``libdeflate`` installation, or CMake can auto-fetch the source and
  build it internally. The internal build is linked statically, so no
  extra shared object is produced.

  See [website/install.rst](website/install.rst) for more details.

* New camdkit/camdkit-enabled standard attributes

  These changes bring to OpenEXR new standard optional attributes that
  were discussed in the [SMPTE Rapid Industry Solutions On-Set Virtual
  Production
  Initiative)](https://www.smpte.org/blog/update-on-smptes-rapid-industry-solutions-ris-on-set-virtual-production-osvp-initiative). Additionally,
  some useful attributes from the SMPTE ACES Container File Layout
  standard, SMPTE ST 2065-4:2023, have been included as well. The new
  attributes are:

  Support automated editorial workflow:

  - ``reelName``
  - ``imageCounter``
  - ``ascFramingDecisionList``

  Support forensics:

  - ``cameraMake``
  - ``cameraModel``
  - ``cameraSerialNumber``
  - ``cameraFirmware``
  - ``cameraUuid``
  - ``cameraLabel``
  - ``lensMake``
  - ``lensModel``
  - ``lensSerialNumber``
  - ``lensFirmware``
  - ``cameraColorBalance``

  Support pickup shots:

  - ``shutterAngle``
  - ``cameraCCTSetting``
  - ``cameraTintSetting``

  Support metadata-driven match move:

  - ``sensorCenterOffset``
  - ``sensorOverallDimensions``
  - ``sensorPhotositePitch``
  - ``sensorAcquisitionRectangle``
  - ``nominalFocalLength``
  - ``effectiveFocalLength``
  - ``pinholeFocalLength``
  - ``entrancePupilOffset``
  - ``tStop`` (complementing existing aperture)

  Also, ``renderingTransform`` and ``lookTransform`` have been deprecated.

  See
  [website/StandardAttributes.rst](website/StandardAttributes.rst)
  and [PR
  #1383](https://github.com/AcademySoftwareFoundation/openexr/pull/1383)
  for more details.

* Updated SO versioning policy

  This change adopts a policy of appending the ``MAJOR.MINOR.PATCH``
  software release name to the ``SONAME`` to form the real name of the
  shared library.

  See [website/install.rst](website/install.rst) and [PR
  #1498](https://github.com/AcademySoftwareFoundation/openexr/pull/1498)
  for more details.

* Python bindings & PyPI wheel

  Support for the [OpenEXR python
  bindings](https://pypi.org/project/OpenEXR) have been formally
  adopted by the OpenEXR project.

* Miscellaneous improvements:

  - "docs" renamed to "website" ([PR
    #1504](https://github.com/AcademySoftwareFoundation/openexr/pull/1504))

  - Additional deep & multipart code examples ([PR
    #1493](https://github.com/AcademySoftwareFoundation/openexr/pull/1493)
    and [PR
    #1502](https://github.com/AcademySoftwareFoundation/openexr/pull/1502))

  - Many small build/test fixes

  - bin tools man pages

  - Expanded test coverage

Specific OSS-fuzz issues addressed:

* OSS-fuzz [46459](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46459)
Out-of-memory in ``openexr_exrcheck_fuzzer``
* OSS-fuzz [46432](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46432)
Heap-buffer-overflow in ``generic_unpack``
* OSS-fuzz [46413](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46413)
Integer-overflow in ``reconstruct_chunk_table``
* OSS-fuzz [45718](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=45718)
Heap-double-free in ``Imf_3_1::RgbaInputFile::~RgbaInputFile``
* OSS-fuzz [45716](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=45716)
Abrt in ``Imf_3_1::RgbaInputFile::~RgbaInputFile``
* OSS-fuzz [43771](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43771)
Direct-leak in ``Imf_3_1::RgbaInputFile::RgbaInputFile``

### Merged Pull Requests

* [1527](https://github.com/AcademySoftwareFoundation/openexr/pull/1527)
`OpenEXRConfig.h.in` uses version extracted from `openexr_version.h`
* [1525](https://github.com/AcademySoftwareFoundation/openexr/pull/1525)
Add bzlmod support
* [1523](https://github.com/AcademySoftwareFoundation/openexr/pull/1523)
Add `DEPENDENCIES Imath::Imath` for OpenEXRCore (#1523)
* [1522](https://github.com/AcademySoftwareFoundation/openexr/pull/1522)
Rename cifuzz workflow to OSS-Fuzz, and filter out unnecessary triggers
* [1520](https://github.com/AcademySoftwareFoundation/openexr/pull/1520)
fix memory leaks in exrmultipart
* [1519](https://github.com/AcademySoftwareFoundation/openexr/pull/1519)
Remove .bazelrc file
* [1518](https://github.com/AcademySoftwareFoundation/openexr/pull/1518)
Bazel support: Simplify use of libdeflate dependency
* [1517](https://github.com/AcademySoftwareFoundation/openexr/pull/1517)
Streamline Python wheel workflow, and add tests and a CMake setup for bindings
* [1516](https://github.com/AcademySoftwareFoundation/openexr/pull/1516)
Bazel support: Remove Bazel specific example and use same examples as CMake build
* [1513](https://github.com/AcademySoftwareFoundation/openexr/pull/1513)
Separate Actions workflow for the website
* [1511](https://github.com/AcademySoftwareFoundation/openexr/pull/1511)
Website "Attributes" page now describes all attributes
* [1510](https://github.com/AcademySoftwareFoundation/openexr/pull/1510)
Deprecate renderingTransform and lookModTransform
* [1509](https://github.com/AcademySoftwareFoundation/openexr/pull/1509)
Initialize regs[] to 0 in check_for_x86_simd
* [1507](https://github.com/AcademySoftwareFoundation/openexr/pull/1507)
Fix CPUID detection with ``-march=x86-64-v3``
* [1505](https://github.com/AcademySoftwareFoundation/openexr/pull/1505)
Add missing copyright/license specifiers
* [1504](https://github.com/AcademySoftwareFoundation/openexr/pull/1504)
Rename "docs" to "website"
* [1503](https://github.com/AcademySoftwareFoundation/openexr/pull/1503)
Reorganize ``share/util`` and remove unnecessary files
* [1502](https://github.com/AcademySoftwareFoundation/openexr/pull/1502)
multipart code examples
* [1501](https://github.com/AcademySoftwareFoundation/openexr/pull/1501)
Add website example source files to the CMake build for validation
* [1500](https://github.com/AcademySoftwareFoundation/openexr/pull/1500)
Add 2023 Virtual Town Hall to news
* [1498](https://github.com/AcademySoftwareFoundation/openexr/pull/1498)
Update and simplify SO versioning policy
* [1496](https://github.com/AcademySoftwareFoundation/openexr/pull/1496)
Bazel update
* [1495](https://github.com/AcademySoftwareFoundation/openexr/pull/1495)
Rename ``IMATH_REPO/TAG`` to ``OPENEXR_IMATH_REPO/TAG`` and update install docs
* [1494](https://github.com/AcademySoftwareFoundation/openexr/pull/1494)
Reorder attributes in doc to match order in header
* [1493](https://github.com/AcademySoftwareFoundation/openexr/pull/1493)
adds deep examples, fixes the deep examples in docs
* [1490](https://github.com/AcademySoftwareFoundation/openexr/pull/1490)
Readdress #1456: disallow NaNs in ``testOptimizedInterleavePatterns``
* [1489](https://github.com/AcademySoftwareFoundation/openexr/pull/1489)
Add ``sensorCenterOffset``, ``sensorOverallDimensions``, ``sensorPhotositePitch``
* [1488](https://github.com/AcademySoftwareFoundation/openexr/pull/1488)
Revert pre-computed values
* [1487](https://github.com/AcademySoftwareFoundation/openexr/pull/1487)
Python wheels
* [1486](https://github.com/AcademySoftwareFoundation/openexr/pull/1486)
Replace ``ILMBASE_THREADING_ENABLED`` with ``ILMTHREAD_THREADING_ENABLED``
* [1484](https://github.com/AcademySoftwareFoundation/openexr/pull/1484)
Fix handling for corrupt number of DC components
* [1483](https://github.com/AcademySoftwareFoundation/openexr/pull/1483)
Add ``ImfMisc.h`` and ``ImfCompressor.h`` as installed headers
* [1482](https://github.com/AcademySoftwareFoundation/openexr/pull/1482)
Add ``OPENEXR_MISSING_ARM_VLD1`` workaround to ``internal_dwa_simd.h``
* [1475](https://github.com/AcademySoftwareFoundation/openexr/pull/1475)
Update CI with vfx2023 Linux jobs.
* [1473](https://github.com/AcademySoftwareFoundation/openexr/pull/1473)
consolidate project configurations to one place
* [1472](https://github.com/AcademySoftwareFoundation/openexr/pull/1472)
Fix range check in dwa compressor
* [1471](https://github.com/AcademySoftwareFoundation/openexr/pull/1471)
Add detailed instructions for making both patch and major/minor release
* [1468](https://github.com/AcademySoftwareFoundation/openexr/pull/1468)
Remove old zlib reference
* [1464](https://github.com/AcademySoftwareFoundation/openexr/pull/1464)
v3.1.9/v3.1.8 notes and news
* [1453](https://github.com/AcademySoftwareFoundation/openexr/pull/1453)
CIFuzz skips PRs that only modify markdown
* [1428](https://github.com/AcademySoftwareFoundation/openexr/pull/1428)
Add simple abi checker util
* [1427](https://github.com/AcademySoftwareFoundation/openexr/pull/1427)
Fix handling of builddir and cxxwarns in ``clang_coverage.sh``
* [1426](https://github.com/AcademySoftwareFoundation/openexr/pull/1426)
Prevent re-download of images if already in place
* [1425](https://github.com/AcademySoftwareFoundation/openexr/pull/1425)
prepare for new version of libdeflate with thread-safe alloc functions
* [1424](https://github.com/AcademySoftwareFoundation/openexr/pull/1424)
Start working on improving test coverage
* [1422](https://github.com/AcademySoftwareFoundation/openexr/pull/1422)
Fix reference to the number of supported compression types
* [1421](https://github.com/AcademySoftwareFoundation/openexr/pull/1421)
after other merges, need to fix include
* [1420](https://github.com/AcademySoftwareFoundation/openexr/pull/1420)
Document DWAA/DWAB compression in Technical Introduction
* [1417](https://github.com/AcademySoftwareFoundation/openexr/pull/1417)
ci: set minimal permissions on GitHub workflows
* [1411](https://github.com/AcademySoftwareFoundation/openexr/pull/1411)
Shift MacOS versions in flight
* [1410](https://github.com/AcademySoftwareFoundation/openexr/pull/1410)
Revert fix of spelling mistakes in PR messages
* [1403](https://github.com/AcademySoftwareFoundation/openexr/pull/1403)
ensure we are passing through valid function pointers
* [1399](https://github.com/AcademySoftwareFoundation/openexr/pull/1399)
Fix version h
* [1398](https://github.com/AcademySoftwareFoundation/openexr/pull/1398)
More robust ``openexr_version.h`` handling
* [1396](https://github.com/AcademySoftwareFoundation/openexr/pull/1396)
Fix spelling mistakes
* [1395](https://github.com/AcademySoftwareFoundation/openexr/pull/1395)
Bazel support update
* [1394](https://github.com/AcademySoftwareFoundation/openexr/pull/1394)
Remove unused private member ``variable`` _maxScanLineSize (ABI break)
* [1388](https://github.com/AcademySoftwareFoundation/openexr/pull/1388)
Updated Mac and Windows jobs for VFX platform 2023.
* [1387](https://github.com/AcademySoftwareFoundation/openexr/pull/1387)
Switch to embedding libdeflate into EXRCore
* [1386](https://github.com/AcademySoftwareFoundation/openexr/pull/1386)
Govern library version by ``OpenEXRVersion.h``
* [1383](https://github.com/AcademySoftwareFoundation/openexr/pull/1383)
Add selected SMPTE camdkit or camdkit-enabling standard optional attributes
* [1381](https://github.com/AcademySoftwareFoundation/openexr/pull/1381)
Deprecate ``exrbuild.cpp``
* [1380](https://github.com/AcademySoftwareFoundation/openexr/pull/1380)
Tool manpages, doc page, and standardized ``--help`` messages
* [1379](https://github.com/AcademySoftwareFoundation/openexr/pull/1379)
Reorder attribute definitions in ``ImfStandardAttributes.h`` by functional group
* [1375](https://github.com/AcademySoftwareFoundation/openexr/pull/1375)
notes and news for v3.1.7
* [1372](https://github.com/AcademySoftwareFoundation/openexr/pull/1372)
Test Images page for website
* [1364](https://github.com/AcademySoftwareFoundation/openexr/pull/1364)
Extend Iex test coverage
* [1363](https://github.com/AcademySoftwareFoundation/openexr/pull/1363)
Fix ``run_gcov.sh`` to use proper ``_build/_coverage`` dirs
* [1357](https://github.com/AcademySoftwareFoundation/openexr/pull/1357)
Fix coverage analysis for .c files
* [1352](https://github.com/AcademySoftwareFoundation/openexr/pull/1352)
Add 3.1.6 to release notes and news
* [1351](https://github.com/AcademySoftwareFoundation/openexr/pull/1351)
Add tests for bin programs
* [1350](https://github.com/AcademySoftwareFoundation/openexr/pull/1350)
Bazel Support: Switch to Imath 3.1.7
* [1310](https://github.com/AcademySoftwareFoundation/openexr/pull/1310)
Switch to Imath 3.1.6 for Bazel build
* [1288](https://github.com/AcademySoftwareFoundation/openexr/pull/1288)
Update bazel build
* [1258](https://github.com/AcademySoftwareFoundation/openexr/pull/1258)
Bazel support: Bump OpenEXR version to 3.2
* [1257](https://github.com/AcademySoftwareFoundation/openexr/pull/1257)
Refactor ``ImfCheckFile`` and oss-fuzz tests
* [1256](https://github.com/AcademySoftwareFoundation/openexr/pull/1256)
Fix Bazel Imath version defines
* [1243](https://github.com/AcademySoftwareFoundation/openexr/pull/1243)
Update GitHub checkout action from V2 to V3
* [1241](https://github.com/AcademySoftwareFoundation/openexr/pull/1241)
Bump version to 3.2.0 on the main branch
* [1240](https://github.com/AcademySoftwareFoundation/openexr/pull/1240)
prevent double-free of ``RgbaInputFile::_inputPart``
* [1228](https://github.com/AcademySoftwareFoundation/openexr/pull/1228)
Fix build script so auto-build of imath uses the new branch name
* [1226](https://github.com/AcademySoftwareFoundation/openexr/pull/1226)
Merge release notes and SECURITY.md from RB-3.1
* [1221](https://github.com/AcademySoftwareFoundation/openexr/pull/1221)
fix memory leak in ``RgbaInputFile`` constructor
* [1201](https://github.com/AcademySoftwareFoundation/openexr/pull/1201)
Extend multipart ``RgbaInputFile`` API
* [1198](https://github.com/AcademySoftwareFoundation/openexr/pull/1198)
Fix version number of Imath for Bazel build
* [1194](https://github.com/AcademySoftwareFoundation/openexr/pull/1194)
RgbaInputFile: Multipart support
* [1171](https://github.com/AcademySoftwareFoundation/openexr/pull/1171)
Merge v3.1.2 release notes to master
* [1139](https://github.com/AcademySoftwareFoundation/openexr/pull/1139)
Bazel update
* [1127](https://github.com/AcademySoftwareFoundation/openexr/pull/1127)
Bazel build: Update Imath version to 3.1.2
* [1103](https://github.com/AcademySoftwareFoundation/openexr/pull/1103)
Update Imath to 3.1.1 and bazelisk to 1.10.1
* [1096](https://github.com/AcademySoftwareFoundation/openexr/pull/1096)
Update Imath to 3.1.0 for Bazel build
* [1093](https://github.com/AcademySoftwareFoundation/openexr/pull/1093)
Use Bazel standard convention for repository names
* [1091](https://github.com/AcademySoftwareFoundation/openexr/pull/1091)
Analysis CI updates
* [1089](https://github.com/AcademySoftwareFoundation/openexr/pull/1089)
Release notes for v3.1.0
* [1085](https://github.com/AcademySoftwareFoundation/openexr/pull/1085)
Cherry-pick v3.0.5 release notes into master
* [1083](https://github.com/AcademySoftwareFoundation/openexr/pull/1083)
Do Bazel CI builds also for pull requests
* [1079](https://github.com/AcademySoftwareFoundation/openexr/pull/1079)
Bazel build: Update Imath to version 3.0.5
* [1078](https://github.com/AcademySoftwareFoundation/openexr/pull/1078)
Bazel build: Fix download hash for Imath
* [1071](https://github.com/AcademySoftwareFoundation/openexr/pull/1071)
Do not do a Bazel Build on old OpenEXR branches
* [1070](https://github.com/AcademySoftwareFoundation/openexr/pull/1070)
Fix bazel build: Add missing headers to exrenvmap
* [1068](https://github.com/AcademySoftwareFoundation/openexr/pull/1068)
Bazel build: Add some OpenEXR tools
* [1067](https://github.com/AcademySoftwareFoundation/openexr/pull/1067)
Sort source files in CMake targets
* [1060](https://github.com/AcademySoftwareFoundation/openexr/pull/1060)
Improve Bazel Build
* [1058](https://github.com/AcademySoftwareFoundation/openexr/pull/1058)
Add ``validate_openexr_libs.sh`` to validate .so symlinks

## Version 3.1.11 (August 13, 2023)

Patch release that fixes a build failure with ``-march=x86-64-v3``

### Merged Pull Requests

* [1509](https://github.com/AcademySoftwareFoundation/openexr/pull/1509)
Initialize ``regs[]`` to 0 in ``check_for_x86_simd``
* [1507](https://github.com/AcademySoftwareFoundation/openexr/pull/1507)
Fix CPUID detection with ``-march=x86-64-v3``

## Version 3.1.10 (August 2, 2023)

Patch release that addresses miscellaneous build issues, test
failures, and performance regressions, as well as:

* OSS-fuzz [59457](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=59457)
 Heap-buffer-overflow in ``LossyDctDecoder_execute``

### Merged Pull Requests

* [1490](https://github.com/AcademySoftwareFoundation/openexr/pull/1490) Readdress #1456: disallow NaNs in ``testOptimizedInterleavePatterns``
* [1488](https://github.com/AcademySoftwareFoundation/openexr/pull/1488) Revert pre-computed values
* [1484](https://github.com/AcademySoftwareFoundation/openexr/pull/1484) Fix handling for corrupt number of DC components
* [1482](https://github.com/AcademySoftwareFoundation/openexr/pull/1482) Add ``OPENEXR_MISSING_ARM_VLD1`` workaround to ``internal_dwa_simd.h``
* [1480](https://github.com/AcademySoftwareFoundation/openexr/pull/1480) Fix Huffman performance regression on Linux/clang
* [1472](https://github.com/AcademySoftwareFoundation/openexr/pull/1472) Fix range check in dwa compressor
* [1470](https://github.com/AcademySoftwareFoundation/openexr/pull/1470) Fix build with i386 and musl libc
* [1469](https://github.com/AcademySoftwareFoundation/openexr/pull/1469) Fix the code contains unhandled character
* [1467](https://github.com/AcademySoftwareFoundation/openexr/pull/1467) Fix cpu detection of sse2 on non-64 x86
* [1466](https://github.com/AcademySoftwareFoundation/openexr/pull/1466) Fix the code contains unhandled character
* [1463](https://github.com/AcademySoftwareFoundation/openexr/pull/1463) Fix gcc-11 warnings: signed/unsigned integer comparison, unused variables
* [1462](https://github.com/AcademySoftwareFoundation/openexr/pull/1462) Fix macOS and Windows build failures when threading is disabled
* [1447](https://github.com/AcademySoftwareFoundation/openexr/pull/1447) Fix build error on win_arm64

## Version 3.1.9 (June 25, 2023)

Patch release that addresses miscelleneous build, doc, test issues, in
particular:

- Build fix for older macOS versions

Also:

* OSS-fuzz [59382](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=59382)
  Heap-buffer-overflow in ``internal_huf_decompress``

### Merged Pull Requests

* [1461](https::/github.com/AcademySoftwareFoundation/openexr/pull/1461)
  don't use NaNs/infs in testOptimizedInterleavePatterns
* [1457](https::/github.com/AcademySoftwareFoundation/openexr/pull/1457)
  Bazel support: Switch back to VS2019 due to a toolchain issue in Bazel
* [1454](https::/github.com/AcademySoftwareFoundation/openexr/pull/1454)
  Add ``OPENEXR_IMF_INTERNAL_NAMESPACE`` for ``WidenFilename``
* [1452](https::/github.com/AcademySoftwareFoundation/openexr/pull/1452)
  Use ``security@openexr.com`` for consistency
* [1448](https::/github.com/AcademySoftwareFoundation/openexr/pull/1448)
  compression.cpp: fix isnan
* [1443](https::/github.com/AcademySoftwareFoundation/openexr/pull/1443)
  Bazel bump imath
* [1439](https::/github.com/AcademySoftwareFoundation/openexr/pull/1439)
  Fix scenario where malformed dwa file could read past end of buffer
* [1416](https::/github.com/AcademySoftwareFoundation/openexr/pull/1416)
  IlmThread: fix defines for older macOS: do not prefix with ``__``

## Version 3.1.8 (June 2, 2023)

Patch release that addresses miscellaneous build issues, for macOS in
particular, but also includes:

* Support for DWA compression in OpenEXRCore
* Fix for threadpool deadlocks during shutdown on Windows

This release also addresses:

* OSS-fuzz [59070](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=59070) Stack-buffer-overflow in DwaCompressor_readChannelRules

### Merged Pull Requests

* [1429](https::/github.com/AcademySoftwareFoundation/openexr/pull/1429)
fix out of bounds check with a full channel name vs. byte count
* [1414](https::/github.com/AcademySoftwareFoundation/openexr/pull/1414)
Add #include <cmath> for isnan
* [1409](https::/github.com/AcademySoftwareFoundation/openexr/pull/1409)
Use posix compat code for old macOS without libdispatch
* [1408](https::/github.com/AcademySoftwareFoundation/openexr/pull/1408)
internal_xdr.h: fix endian logic for Apple
* [1406](https::/github.com/AcademySoftwareFoundation/openexr/pull/1406)
internal_structs.h: __STDC_FORMAT_MACROS should be defined prior to inttypes.h
* [1402](https::/github.com/AcademySoftwareFoundation/openexr/pull/1402)
Add dwa support to core
* [1389](https::/github.com/AcademySoftwareFoundation/openexr/pull/1389)
fix typo
* [1382](https::/github.com/AcademySoftwareFoundation/openexr/pull/1382)
Update macOS installation instructions
* [1378](https::/github.com/AcademySoftwareFoundation/openexr/pull/1378)
Fix typo in README.md
* [1377](https::/github.com/AcademySoftwareFoundation/openexr/pull/1377)
Only install exrinfo when OPENEXR_INSTALL_TOOLS is on
* [1291](https::/github.com/AcademySoftwareFoundation/openexr/pull/1291)
Change setNumThreads to wait for thread start

## Version 3.1.7 (March 28, 2023)

Patch release that fixes a regression on ARMv7, and fixes a build
issue with zlib.

### Merged Pull Requests

* [1368](https://github.com/AcademySoftwareFoundation/openexr/pull/1368)
Fix ARMv7 build for DwaCompressor, too.
* [1366](https://github.com/AcademySoftwareFoundation/openexr/pull/1366)
Fix ARMv7 build by making recent ZIP NEON optimizations be ARMv8 (aarch64) only
* [1361](https://github.com/AcademySoftwareFoundation/openexr/pull/1361)
Fix the zlib build error that was reported in #1360.
* [1358](https://github.com/AcademySoftwareFoundation/openexr/pull/1358)
Detect missing vst1q_f32_x2 and provide replacement if necessary
* [1355](https://github.com/AcademySoftwareFoundation/openexr/pull/1355)
Fix typo in release notes
* [1354](https://github.com/AcademySoftwareFoundation/openexr/pull/1354)
Test for AVX in unpack.c

## Version 3.1.6 (March 9, 2023)

Patch release that address various bug/build issues and optimizations:

* NEON optimizations for ZIP reading
* Enable fast Huffman & Huffman zig-zag transform for Arm Neon
* Support relative and absolute libdir/includedir in pkg-config generation
* Fix for reading memory mapped files with DWA compression
* Enable SSE4 support on Windows
* Fast huf decoder
* CMake config for generating docs is now BUILD_DOC

Also, this release includes a major update and reorganization of the repo
documentation and website.

In addition, numerous typos and misspellings in comments and doxygen
content have been fixed via
[``codespell``](https://github.com/codespell-project/codespell).

Specific OSS-fuzz issues address:

* OSS-fuzz [52730](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52730) Heap-buffer-overflow in fasthuf_initialize
* OSS-fuzz [49698](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49698) Heap-buffer-overflow in fasthuf_decode
* OSS-fuzz [47517](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47517) Integer-overflow in reconstruct_chunk_table
* OSS-fuzz [47503](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47503) Heap-buffer-overflow in uncompress_b44_impl
* OSS-fuzz [47483](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47483) Heap-buffer-overflow in generic_unpack

### Merged Pull Requests

* [1348](https://github.com/AcademySoftwareFoundation/openexr/pull/1348)
NEON optimizations for ZIP reading (reconstruct and interleave)
* [1347](https://github.com/AcademySoftwareFoundation/openexr/pull/1347)
Reduce memory in ``testDeepScanLineBasic``
* [1346](https://github.com/AcademySoftwareFoundation/openexr/pull/1346)
Add pointers to installing doxygen/sphinx to the build instructions
* [1345](https://github.com/AcademySoftwareFoundation/openexr/pull/1345)
Add execution of the examples to test suite
* [1344](https://github.com/AcademySoftwareFoundation/openexr/pull/1344)
Sphinx warnings by default now cause doc build to fail
* [1343](https://github.com/AcademySoftwareFoundation/openexr/pull/1343)
Removew tmpDir.h from OpenEXRUtilTest/OpenEXRFuzzTest CMakeLists.txt
* [1341](https://github.com/AcademySoftwareFoundation/openexr/pull/1341)
Update PortingGuide.rst
* [1340](https://github.com/AcademySoftwareFoundation/openexr/pull/1340)
Remove duplicate ``tmpDir.h`` files
* [1339](https://github.com/AcademySoftwareFoundation/openexr/pull/1339)
Build docs in CI, and rename ``DOCS`` CMake config variable to ``BUILD_DOCS``
* [1338](https://github.com/AcademySoftwareFoundation/openexr/pull/1338)
Add header files for IDEs
* [1337](https://github.com/AcademySoftwareFoundation/openexr/pull/1337)
Fix documentation glitches
* [1336](https://github.com/AcademySoftwareFoundation/openexr/pull/1336)
Fix sphinx extensions in conf.py and requirements.txt
* [1335](https://github.com/AcademySoftwareFoundation/openexr/pull/1335)
More doc reorg
* [1333](https://github.com/AcademySoftwareFoundation/openexr/pull/1333)
Fix for reading memory mapped files with DWA compression
* [1332](https://github.com/AcademySoftwareFoundation/openexr/pull/1332)
Reorganize repo/readthedocs documentation
* [1331](https://github.com/AcademySoftwareFoundation/openexr/pull/1331)
Add missing license/copyright
* [1330](https://github.com/AcademySoftwareFoundation/openexr/pull/1330)
Support relative and absolute libdir/incluedir in pkg-config generation
* [1329](https://github.com/AcademySoftwareFoundation/openexr/pull/1329)
Fix missing guard check
* [1323](https://github.com/AcademySoftwareFoundation/openexr/pull/1323)
Enable fast Huffman & Huffman zig-zag transform for Arm Neon
* [1321](https://github.com/AcademySoftwareFoundation/openexr/pull/1321)
Fix MSVC Debug build with internal zlib
* [1317](https://github.com/AcademySoftwareFoundation/openexr/pull/1317)
Add CIFuzz GitHub action
* [1316](https://github.com/AcademySoftwareFoundation/openexr/pull/1316)
Fix compiler warnings from gcc-12
* [1315](https://github.com/AcademySoftwareFoundation/openexr/pull/1315)
Fix Visual Studio on ARM Compilation
* [1312](https://github.com/AcademySoftwareFoundation/openexr/pull/1312)
Problem: warning C4244: initializing: conversion from double to unsigned int, possible loss of data
* [1311](https://github.com/AcademySoftwareFoundation/openexr/pull/1311)
Clean up CONTRIBUTING.md
* [1296](https://github.com/AcademySoftwareFoundation/openexr/pull/1296)
Check for null pointer passed to ``memcpy``
* [1295](https://github.com/AcademySoftwareFoundation/openexr/pull/1295)
Remove TSC meeting notes from repo
* [1294](https://github.com/AcademySoftwareFoundation/openexr/pull/1294)
Change reference to ``IlmBase`` to ``Imath`` in ``README.md``
* [1293](https://github.com/AcademySoftwareFoundation/openexr/pull/1293)
Update Christina's affiliation
* [1292](https://github.com/AcademySoftwareFoundation/openexr/pull/1292)
Fix typo in the documentation's example reading class
* [1290](https://github.com/AcademySoftwareFoundation/openexr/pull/1290)
fix huf memory boundary checks
* [1289](https://github.com/AcademySoftwareFoundation/openexr/pull/1289)
Fix a typo breaking the link to ``Imath`` repository in readme
* [1287](https://github.com/AcademySoftwareFoundation/openexr/pull/1287)
Using ``PRId64`` in place of ``%ld`` in ``chunk.c``
* [1286](https://github.com/AcademySoftwareFoundation/openexr/pull/1286)
Fix NDK compile error
* [1279](https://github.com/AcademySoftwareFoundation/openexr/pull/1279)
Fix for IDE Headers
* [1276](https://github.com/AcademySoftwareFoundation/openexr/pull/1276)
add missed ``#include <cstdint>`` statement
* [1274](https://github.com/AcademySoftwareFoundation/openexr/pull/1274)
Enable SSE4 support on Windows #2
* [1272](https://github.com/AcademySoftwareFoundation/openexr/pull/1272)
Fix remaining typos
* [1271](https://github.com/AcademySoftwareFoundation/openexr/pull/1271)
Fix typos in ``src/lib/OpenEXR``
* [1269](https://github.com/AcademySoftwareFoundation/openexr/pull/1269)
Add fast huf decoder
* [1268](https://github.com/AcademySoftwareFoundation/openexr/pull/1268)
Address OSS Fuzz Issues
* [1264](https://github.com/AcademySoftwareFoundation/openexr/pull/1264)
Add missing ``#include <cstdint>`` required by gcc-13
* [1261](https://github.com/AcademySoftwareFoundation/openexr/pull/1261)
prevent integer overflow in ``DeepScanlineInputFile`` with huge images
* [1260](https://github.com/AcademySoftwareFoundation/openexr/pull/1260)
prevent integer overflow of lineOffsetSize
* [1259](https://github.com/AcademySoftwareFoundation/openexr/pull/1259)
Add explicit casts around the usage of zlib datatypes to avoid warnings on Windows

## Version 3.1.5 (April 11, 2022)

Patch release that address various bug/build/doc issues:

* Add backwards-compatibilty flags to the core library to match
  original behavior of the the c++ library. Fixes reading of certain
  files by the new core.
* Fix build failures on MSVC14 and MSVC 2022
* Fix build failure on latest 64-bit Ubuntu
* Documentation refers to primary branch as "main"
* Update the CI workflow matrix to VFX-CY2022
* Update auto-fetch Imath version to v3.1.5

Specific OSS-fuzz issues:

* OSS-fuzz [46309](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46309)
Heap-buffer-overflow in Imf_3_1::memstream_read
* OSS-fuzz [46083](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46083)
Out-of-memory in openexr_exrcheck_fuzzer
* OSS-fuzz [45899](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=45899)
Integer-overflow in internal_exr_compute_chunk_offset_size
* OSS-fuzz [44084](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=44084)
Out-of-memory in openexr_exrcheck_fuzzer

### Merged Pull Requests

* [1251](https://github.cmo/AcademySoftwareFoundation/openexr/pull/1251)
Add disable reconstruct flag
* [1250](https://github.cmo/AcademySoftwareFoundation/openexr/pull/1250)
handle potential overflow in CheckFile core reading
* [1249](https://github.cmo/AcademySoftwareFoundation/openexr/pull/1249)
prevent excessive internal memory in CheckFile deep tests
* [1247](https://github.com/AcademySoftwareFoundation/openexr/pull/1247)
Update to zlib 1.2.12 and Imath 3.1.5
* [1246](https://github.com/AcademySoftwareFoundation/openexr/pull/1246)
move out of bounds check inside loop
* [1245](https://github.com/AcademySoftwareFoundation/openexr/pull/1245)
Implement corrupt chunk table reconstruction for Core
* [1244](https://github.com/AcademySoftwareFoundation/openexr/pull/1244)
Match cpp header checks
* [1239](https://github.com/AcademySoftwareFoundation/openexr/pull/1239)
Add #include <algorithm> for MSVC14
* [1238](https://github.com/AcademySoftwareFoundation/openexr/pull/1238)
Update release notes for v2.5.8
* [1237](https://github.com/AcademySoftwareFoundation/openexr/pull/1237)
Fix MSVC 2022 build
* [1232](https://github.com/AcademySoftwareFoundation/openexr/pull/1232)
Fix logic for detecting _libc_fpstate API
* [1230](https://github.com/AcademySoftwareFoundation/openexr/pull/1230)
Add maximumSampleCount limit to CompositeDeepScanLine
* [1227](https://github.com/AcademySoftwareFoundation/openexr/pull/1227)
Update CI for VFX reference platform 2022
* [1219](https://github.com/AcademySoftwareFoundation/openexr/pull/1219)
Make local build with Imath

## Version 3.1.4 (January 26, 2022)

Patch release that addresses various issues:

* Several bug fixes to properly reject invalid input upon read
* A check to enable SSE2 when building with Visual Studio
* A check to fix building with VisualStudio on ARM64
* Update the automatically-downloaded version of Imath to v3.1.4
* Miscellaneous documentation improvements

This addresses one public security vulnerability:

* [CVE-2021-45942](https://nvd.nist.gov/vuln/detail/CVE-2021-45942) Heap-buffer-overflow in Imf_3_1::LineCompositeTask::execute

Specific OSS-fuzz issues:

* OSS-fuzz [43961](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43961) Heap-buffer-overflow in generic_unpack
* OSS-fuzz [43916](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43916) Heap-buffer-overflow in hufDecode
* OSS-fuzz [43763](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43763) Heap-buffer-overflow in internal_huf_decompress
* OSS-fuzz [43745](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43745) Floating-point-exception in internal_exr_compute_tile_information
* OSS-fuzz [43744](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43744) Divide-by-zero in internal_exr_compute_tile_information
* OSS-fuzz [42197](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42197) Out-of-memory in openexr_exrcheck_fuzzer
* OSS-fuzz [42001](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42001) Timeout in openexr_exrcheck_fuzzer
* OSS-fuzz [41999](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41999) Heap-buffer-overflow in Imf_3_1::LineCompositeTask::execute
* OSS-fuzz [41669](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41669) Integer-overflow in Imf_3_1::rleUncompress
* OSS-fuzz [41625](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41625) Heap-buffer-overflow in uncompress_b44_impl
* OSS-fuzz [41416](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41416) Heap-buffer-overflow in Imf_3_1::LineCompositeTask::execute
* OSS-fuzz [41075](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41075) Integer-overflow in Imf_3_1::copyIntoDeepFrameBuffer
* OSS-fuzz [40704](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40704) Crash in Imf_3_1::DeepTiledInputFile::readPixelSampleCounts
* OSS-fuzz [40702](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40702) Null-dereference in bool Imf_3_1::readDeepTile<Imf_3_1::DeepTiledInputFile>
* OSS-fuzz [40701](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40701) Null-dereference in bool Imf_3_1::readDeepTile<Imf_3_1::DeepTiledInputPart>
* OSS-fuzz [40423](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40423) Out-of-memory in openexr_exrcheck_fuzzer
* OSS-fuzz [40234](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40234) Heap-buffer-overflow in generic_unpack
* OSS-fuzz [40231](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40231) Heap-buffer-overflow in hufDecode
* OSS-fuzz [40091](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40091) Heap-buffer-overflow in hufDecode

### Merged Pull Requests

* [1225](https://github.com/AcademySoftwareFoundation/openexr/pull/1225)
Bazel build: Update Imath
* [1224](https://github.com/AcademySoftwareFoundation/openexr/pull/1224)
Add error check to prevent corrupt files trying to unpack
* [1223](https://github.com/AcademySoftwareFoundation/openexr/pull/1223)
Fix issues with a a "short" huf table and checking boundary conditions, missing return value
* [1222](https://github.com/AcademySoftwareFoundation/openexr/pull/1222)
Fix OSS Fuzz 43763, 43745
* [1218](https://github.com/AcademySoftwareFoundation/openexr/pull/1218)
OSS-Fuzz pass 15jan2022
* [1217](https://github.com/AcademySoftwareFoundation/openexr/pull/1217)
Added missing check _M_IX86 or _M_X64 when using __lzcnt.
* [1216](https://github.com/AcademySoftwareFoundation/openexr/pull/1216)
Corrected the check to enable SSE2 when building with Visual Studio.
* [1214](https://github.com/AcademySoftwareFoundation/openexr/pull/1214)
prevent overflow in allocation of RLE buufer
* [1213](https://github.com/AcademySoftwareFoundation/openexr/pull/1213)
add check for decompressed deepscanline datasize
* [1209](https://github.com/AcademySoftwareFoundation/openexr/pull/1209)
enforce xSampling/ySampling==1 in CompositeDeepScanLine
* [1208](https://github.com/AcademySoftwareFoundation/openexr/pull/1208)
Reduce memory consumption with very large deepscanline images
* [1206](https://github.com/AcademySoftwareFoundation/openexr/pull/1206)
Update INSTALL.md
* [1205](https://github.com/AcademySoftwareFoundation/openexr/pull/1205)
DeepScanlineInputFile now uses chunk size test from DeepTiledInputFile
* [1200](https://github.com/AcademySoftwareFoundation/openexr/pull/1200)
Corrected Deep Docs & Example Code
* [1199](https://github.com/AcademySoftwareFoundation/openexr/pull/1199)
Fix C++ DeepTile reading in Imf::CheckFile
* [1195](https://github.com/AcademySoftwareFoundation/openexr/pull/1195)
Fix bugs in ImfCheckFile.cpp:readDeepTile()
* [1193](https://github.com/AcademySoftwareFoundation/openexr/pull/1193)
mention multipart files in multiview doc
* [1191](https://github.com/AcademySoftwareFoundation/openexr/pull/1191)
Replace Doxygen/Sphinx targets with "docs"
* [1190](https://github.com/AcademySoftwareFoundation/openexr/pull/1190)
Add Compression section to "Reading and Writing Image Files" doc
* [1189](https://github.com/AcademySoftwareFoundation/openexr/pull/1189)
Fix typo in readthedocs url


## Version 3.1.3 (October 27, 2021)

Patch release with a change to default zip compression level:

* Default zip compression level is now 4 (instead of 6), which in our
  tests improves compression times by 2x with only a tiny drop in
  compression ratio.
* ``setDefaultZipCompression()`` and ``setDefaultDwaCompression()``
  now set default compression levels for writing.
* The Header how has ``zipCompressionLevel()`` and
  ``dwaCompressionLevel()`` to return the levels used for writing.

Also, various bug fixes, build improvements, and documentation
updates. In particular:

* Fixes a build failure with Imath prior to v3.1
* Fixes a bug in detecting invalid chromaticity values

Specific OSS-fuzz issues:

* OSS-fuzz [40091](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40091)
  Heap-buffer-overflow in hufDecode
* OSS-fuzz [39997](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39997)
  Null-dereference in Imf_3_1::readCoreScanlinePart
* OSS-fuzz [39996](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39996)
  Heap-buffer-overflow in generic_unpack
* OSS-fuzz [39936](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39936)
  Heap-buffer-overflow in Imf_3_1::memstream_read
* OSS-fuzz [39836](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39836)
  Heap-buffer-overflow in internal_huf_decompress
* OSS-fuzz [39799](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39799)
  Heap-buffer-overflow in unpack_32bit
* OSS-fuzz [39754](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39754)
  Abrt in internal_decode_alloc_buffer
* OSS-fuzz [39737](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39737)
  Heap-buffer-overflow in unpack_16bit
* OSS-fuzz [39683](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39683)
  Null-dereference in Imf_3_1::readCoreScanlinePart
* OSS-fuzz [39630](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39630)
  Direct-leak in internal_decode_alloc_buffer
* OSS-fuzz [39623](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39623)
  Heap-buffer-overflow in unpack_16bit
* OSS-fuzz [39616](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39616)
  Heap-buffer-overflow in Imf_3_1::memstream_read
* OSS-fuzz [39604](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39604)
  Abrt in internal_decode_free_buffer
* OSS-fuzz [39601](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39601)
  Heap-buffer-overflow in internal_huf_decompress
* OSS-fuzz [39591](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39591)
  Integer-overflow in Imf_3_1::readCoreTiledPart
* OSS-fuzz [39579](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39579)
  Undefined-shift in internal_huf_decompress
* OSS-fuzz [39571](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39571)
  Heap-buffer-overflow in generic_unpack
* OSS-fuzz [39568](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39568)
  Null-dereference in Imf_3_1::readCoreScanlinePart
* OSS-fuzz [39542](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39542)
  Heap-buffer-overflow in Imf_3_1::memstream_read
* OSS-fuzz [39538](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39538)
  Heap-buffer-overflow in unpack_16bit_4chan_planar
* OSS-fuzz [39532](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39532)
  Heap-buffer-overflow in unpack_16bit_4chan_planar
* OSS-fuzz [39529](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39529)
  Null-dereference in Imf_3_1::readCoreTiledPart
* OSS-fuzz [39526](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39526)
  Integer-overflow in exr_read_tile_chunk_info
* OSS-fuzz [39522](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39522)
  Direct-leak in internal_decode_alloc_buffer
* OSS-fuzz [39472](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39472)
  Heap-buffer-overflow in unpack_16bit
* OSS-fuzz [39421](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39421)
  Stack-overflow in Imf_3_1::memstream_read
* OSS-fuzz [39399](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39399)
  Direct-leak in exr_attr_preview_init
* OSS-fuzz [39397](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39397)
  Timeout in openexr_exrcheck_fuzzer
* OSS-fuzz [39343](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39343)
  Null-dereference READ in ubsan_GetStackTrace
* OSS-fuzz [39342](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39342)
  Direct-leak in Imf_3_1::OpaqueAttribute::copy
* OSS-fuzz [39340](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39340)
  Stack-overflow in Imf_3_1::memstream_read
* OSS-fuzz [39332](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39332)
  Out-of-memory in openexr_exrcheck_fuzzer
* OSS-fuzz [39329](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39329)
  Negative-size-param in Imf_3_1::memstream_read
* OSS-fuzz [39328](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39328)
  Undefined-shift in internal_exr_compute_tile_information
* OSS-fuzz [39323](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39323)
  Integer-overflow in Imf_3_1::readCoreTiledPart

### Merged Pull Requests

* [1187](https://github.com/AcademySoftwareFoundation/openexr/pull/1187)
  Add size check to memory stream check program
* [1186](https://github.com/AcademySoftwareFoundation/openexr/pull/1186)
  Add extra tile validation
* [1185](https://github.com/AcademySoftwareFoundation/openexr/pull/1185)
  Fix test for bad chunk data to allow for 0-sample deep chunks
* [1184](https://github.com/AcademySoftwareFoundation/openexr/pull/1184)
  Fixes an issue computing the unpacked size of a chunk
* [1183](https://github.com/AcademySoftwareFoundation/openexr/pull/1183)
  Fix decoding of piz when y sampling is not the same for all channels
* [1182](https://github.com/AcademySoftwareFoundation/openexr/pull/1182)
  Require at least one channel
* [1180](https://github.com/AcademySoftwareFoundation/openexr/pull/1180)
  reduce iterations in testIDManifest to speed up
* [1178](https://github.com/AcademySoftwareFoundation/openexr/pull/1178)
  use std::abs in chromaticity sanity tests (fixes #1177)
* [1176](https://github.com/AcademySoftwareFoundation/openexr/pull/1176)
  Update CI builds
* [1174](https://github.com/AcademySoftwareFoundation/openexr/pull/1174)
  Update docs with link to EasyCLA
* [1173](https://github.com/AcademySoftwareFoundation/openexr/pull/1173)
  Fix misc issues due to OSS-fuzz
* [1172](https://github.com/AcademySoftwareFoundation/openexr/pull/1172)
  fix casts in readUInt shifts
* [1169](https://github.com/AcademySoftwareFoundation/openexr/pull/1169)
  Clean up error messages, check against packed size of 0, integer overflow
* [1168](https://github.com/AcademySoftwareFoundation/openexr/pull/1168)
  Refactor attribute size checks
* [1167](https://github.com/AcademySoftwareFoundation/openexr/pull/1167)
  Fix loop iterators in ImfCheckFile.cpp
* [1166](https://github.com/AcademySoftwareFoundation/openexr/pull/1166)
  fix int overflow in calc_level_size
* [1165](https://github.com/AcademySoftwareFoundation/openexr/pull/1165)
  Prevent read when offset past the end of the memstream
* [1164](https://github.com/AcademySoftwareFoundation/openexr/pull/1164)
  Also fail when the user provides a preview image that has a zero size coordinate
* [1163](https://github.com/AcademySoftwareFoundation/openexr/pull/1163)
  don't validate chunk size when file_size unknown
* [1161](https://github.com/AcademySoftwareFoundation/openexr/pull/1161)
  validate filesize before allocating chunk memory
* [1160](https://github.com/AcademySoftwareFoundation/openexr/pull/1160)
  validate dwaCompressionLevel attribute type
* [1150](https://github.com/AcademySoftwareFoundation/openexr/pull/1150)
  Enable Google OSS Fuzz to also test Core library
* [1149](https://github.com/AcademySoftwareFoundation/openexr/pull/1145)
  Enable ephemeral compression levels
* [1145](https://github.com/AcademySoftwareFoundation/openexr/pull/1145)
  Fix when compiling against pre-3.1 version of Imath
* [1125](https://github.com/AcademySoftwareFoundation/openexr/pull/1125)
  Zip: switch to compression level 4 instead of default 6

## Version 3.1.2 (October 4, 2021)

Patch release with various bug fixes, build improvements, and
documentation updates.

With this version, the OpenEXR technical documentation formerly
distributed exclusively as pdf's is now published online at
https://openexr.readthedocs.io, with the document source now
maintained as .rst files in the repo's docs subfolder.

Specific OSS-fuzz issues:

* OSS-fuzz [39196](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39196)
  Stack-buffer-overflow in dispatch_print_error
* OSS-fuzz [39198](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39198)
  Direct-leak in exr_attr_chlist_add_with_length
* OSS-fuzz [39206](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39206)
  Direct-leak in extract_attr_string_vector
* OSS-fuzz [39212](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39212)
  Heap-use-after-free in dispatch_print_error
* OSS-fuzz [39205](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39205)
  Timeout in openexr_exrcheck_fuzzer
* OSS-fuzz [38912](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38912)
  Integer-overflow in Imf_3_1::bytesPerDeepLineTable
* OSS-fuzz [39084](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39084)
  Divide-by-zero in Imf_3_1::RGBtoXYZ

### Merged Pull Requests

* [1159](https://github.com/AcademySoftwareFoundation/openexr/pull/1159)
  Fix unterminated string causing issue with print
* [1158](https://github.com/AcademySoftwareFoundation/openexr/pull/1158)
  Fix memory leak when unable to parse the channel list
* [1157](https://github.com/AcademySoftwareFoundation/openexr/pull/1157)
  Fix leak when parsing header with duplicate attribute names
