Major release with major build restructing, security improvements, and
new features:
* Restructuring:
- The IlmBase/PyIlmBase submodules have been separated into the
Imath project, now included by OpenEXR via a CMake submodule
dependency, fetched automatically via CMake's FetchContent if
necessary.
- The library is now called ``libOpenEXR`` (instead of
``libIlmImf``). No header files have been renamed, they retain
the ``Imf`` prefix.
- Symbol linkage visibility is limited to specific public
symbols. See [SymbolVisibility.md](docs/SymbolVisibility.md) for more
details.
* Build improvements:
- No more simultaneous static/shared build option.
- Community-provided support for bazel.
* New Features:
- ID Manifest Attributes, as described in ["A Scheme for Storing
Object ID Manifests in OpenEXR
Images"](https://doi.org/10.1145/3233085.3233086), Peter Hillman,
DigiPro 18: Proceedings of the 8th Annual Digital Production
Symposium, August 2018.
- New program: exrcheck validates the contents of an EXR file.
* Changes:
- EXR files with no channels are no longer allowed.
- Hard limit on the size of deep tile sizes; tiles must be less than
2^30 pixels.
- Tiled DWAB files used STATIC_HUFFMAN compression.
- ``Int64`` and ``SInt64`` types are deprecated in favor of
``uint64_t`` and ``int64_t``.
- Header files have been pruned of extraneous ``include``'s
("Include What You Use"), which may generate compiler errors in
application source code from undefined symbols or
partially-defined types. These can be resolved by identifying and
including the appropriate header.
- See the [porting
guide](https://github.com/AcademySoftwareFoundation/Imath/blob/main/docs/PortingGuide2-3.md)
for details about differences from previous releases and how to
address them.
- Also refer to the porting guide for details about changes to
Imath.
Specific OSS-fuzz issues addressed include:
* OSS-fuzz [31539](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31539) Out-of-memory in openexr_exrcheck_fuzzer ([946](https://github.com/AcademySoftwareFoundation/openexr/pull/946))
* OSS-fuzz [31390](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31390) Out-of-memory in openexr_exrcheck_fuzzer ([939](https://github.com/AcademySoftwareFoundation/openexr/pull/939))
* OSS-fuzz [31293](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31293) Segv on unknown address in Imf_2_5::copyIntoFrameBuffer ([932](https://github.com/AcademySoftwareFoundation/openexr/pull/932))
* OSS-fuzz [31291](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31291) Sanitizer CHECK failure in "((0 && "Address is not in memory and not in shadow?")) != (0)" (0x0, 0x0) ([932](https://github.com/AcademySoftwareFoundation/openexr/pull/932))
* OSS-fuzz [31228](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31228) Integer-overflow in bool Imf_2_5::readDeepTile<Imf_2_5::DeepTiledInputFile> ([930](https://github.com/AcademySoftwareFoundation/openexr/pull/930))
* OSS-fuzz [31221](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31221) Integer-overflow in bool Imf_2_5::readDeepTile<Imf_2_5::DeepTiledInputPart> ([930](https://github.com/AcademySoftwareFoundation/openexr/pull/930))
* OSS-fuzz [31072](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31072) Out-of-memory in openexr_exrcheck_fuzzer ([928](https://github.com/AcademySoftwareFoundation/openexr/pull/928))
* OSS-fuzz [31044](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31044) Timeout in openexr_exrcheck_fuzzer ([926](https://github.com/AcademySoftwareFoundation/openexr/pull/926))
* OSS-fuzz [31015](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31015) Direct-leak in Imf_2_5::TypedAttribute<Imf_2_5::CompressedIDManifest>::readValueFrom ([925](https://github.com/AcademySoftwareFoundation/openexr/pull/925))
* OSS-fuzz [30969](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=30969) Direct-leak in Imf_2_5::DwaCompressor::LossyDctDecoderBase::execute ([923](https://github.com/AcademySoftwareFoundation/openexr/pull/923))
* OSS-fuzz [30616](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=30616) Timeout in openexr_exrcheck_fuzzer ([919](https://github.com/AcademySoftwareFoundation/openexr/pull/919))
* OSS-fuzz [30605](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=30605) Out-of-memory in openexr_exrcheck_fuzzer ([920](https://github.com/AcademySoftwareFoundation/openexr/pull/920))
* OSS-fuzz [30249](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=30249) Out-of-memory in openexr_exrcheck_fuzzer ([915](https://github.com/AcademySoftwareFoundation/openexr/pull/915))
* OSS-fuzz [29682](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=29682) Out-of-memory in openexr_exrcheck_fuzzer ([902](https://github.com/AcademySoftwareFoundation/openexr/pull/902))
* OSS-fuzz [29393](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=29393) Timeout in openexr_exrcheck_fuzzer ([902](https://github.com/AcademySoftwareFoundation/openexr/pull/902))
* OSS-fuzz [28419](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28419) Out-of-memory in openexr_exrcheck_fuzzer ([895](https://github.com/AcademySoftwareFoundation/openexr/pull/895))
* OSS-fuzz [28155](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28155) Crash in Imf_2_5::PtrIStream::read ([872](https://github.com/AcademySoftwareFoundation/openexr/pull/872))
* OSS-fuzz [28051](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28051) Heap-buffer-overflow in Imf_2_5::copyIntoFrameBuffer ([872](https://github.com/AcademySoftwareFoundation/openexr/pull/872))
* OSS-fuzz [27409](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=27409) Out-of-memory in openexr_exrcheck_fuzzer ([863](https://github.com/AcademySoftwareFoundation/openexr/pull/863))
* OSS-fuzz [26641](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=26641) Invalid-enum-value in readSingleImage ([859](https://github.com/AcademySoftwareFoundation/openexr/pull/859))
* OSS-fuzz [25648](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25648) Out-of-memory in openexr_scanlines_fuzzer ([839](https://github.com/AcademySoftwareFoundation/openexr/pull/839))
* OSS-fuzz [25156](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25156) Out-of-memory in openexr_scanlines_fuzzer ([824](https://github.com/AcademySoftwareFoundation/openexr/pull/824))
* OSS-fuzz [25002](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25002) Out-of-memory in openexr_deepscanlines_fuzzer ([824](https://github.com/AcademySoftwareFoundation/openexr/pull/824))
* OSS-fuzz [24959](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24959) Integer-overflow in Imf_2_5::cachePadding ([824](https://github.com/AcademySoftwareFoundation/openexr/pull/824))
* OSS-fuzz [24857](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24857) Out-of-memory in openexr_exrheader_fuzzer ([824](https://github.com/AcademySoftwareFoundation/openexr/pull/824))
* OSS-fuzz [24573](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24573) Out-of-memory in openexr_exrenvmap_fuzzer ([824](https://github.com/AcademySoftwareFoundation/openexr/pull/824))
Merged Pull Requests
* [971](https://github.com/AcademySoftwareFoundation/openexr/pull/971) Add missing #includes in OpenEXRFuzzTest
* [967](https://github.com/AcademySoftwareFoundation/openexr/pull/967) 3.0.0-beta release notes
* [965](https://github.com/AcademySoftwareFoundation/openexr/pull/965) Bump version to 3.0.0
* [964](https://github.com/AcademySoftwareFoundation/openexr/pull/964) Bazel-Support: Update Bazel build files to reflect CMake state
* [963](https://github.com/AcademySoftwareFoundation/openexr/pull/963) Properly expose header files for float exceptions
* [962](https://github.com/AcademySoftwareFoundation/openexr/pull/962) Remove IexMath as a library
* [961](https://github.com/AcademySoftwareFoundation/openexr/pull/961) Enable policy 77 if possible.
* [960](https://github.com/AcademySoftwareFoundation/openexr/pull/960) Still needed to push the OPENEXR_INSTALL definition higher
* [959](https://github.com/AcademySoftwareFoundation/openexr/pull/959) The OPENEXR_INSTALL option needs to be defined before it's used
* [956](https://github.com/AcademySoftwareFoundation/openexr/pull/956) Replace stray Imath:: with IMATH_NAMESPACE::
* [955](https://github.com/AcademySoftwareFoundation/openexr/pull/955) Usability improvements for submodule use.
* [953](https://github.com/AcademySoftwareFoundation/openexr/pull/953) Add GLOBAL to add_library(zlib)
* [952](https://github.com/AcademySoftwareFoundation/openexr/pull/952) Remove ``long`` overloads for Xdr::read and Xdr::write functions
* [951](https://github.com/AcademySoftwareFoundation/openexr/pull/951) Change copyright notices to standard SPDX format
* [950](https://github.com/AcademySoftwareFoundation/openexr/pull/950) Don't install ImfB44Compressor.h
* [949](https://github.com/AcademySoftwareFoundation/openexr/pull/949) Bazel build: Bump Imath version to current master
* [948](https://github.com/AcademySoftwareFoundation/openexr/pull/948) Replace Int64/SInt64 with uint64_t/int64_t
* [946](https://github.com/AcademySoftwareFoundation/openexr/pull/946) better flag/type verification in deep input files
* [945](https://github.com/AcademySoftwareFoundation/openexr/pull/945) Fix sign-compare warning
* [944](https://github.com/AcademySoftwareFoundation/openexr/pull/944) Build-time options for where to get Imath
* [943](https://github.com/AcademySoftwareFoundation/openexr/pull/943) Add include/OpenEXR to -I and OpenEXRUtil,Iex,IlmThread to -L
* [942](https://github.com/AcademySoftwareFoundation/openexr/pull/942) Resolve #882 static/shared dual build
* [939](https://github.com/AcademySoftwareFoundation/openexr/pull/939) enforce limit on area of deep tiles to prevent excessive memory use
* [938](https://github.com/AcademySoftwareFoundation/openexr/pull/938) Replace UINT_MAX with explicit cast
* [937](https://github.com/AcademySoftwareFoundation/openexr/pull/937) Add #include <limits> to fix Windows compile error
* [936](https://github.com/AcademySoftwareFoundation/openexr/pull/936) Incorporate recent config changes into BUILD.bazel
* [932](https://github.com/AcademySoftwareFoundation/openexr/pull/932) exrcheck: fix handling xSampling when computating slice base
* [930](https://github.com/AcademySoftwareFoundation/openexr/pull/930) exrcheck: use 64 bit integer math to prevent pointer overflows
* [929](https://github.com/AcademySoftwareFoundation/openexr/pull/929) Remove all references to "IlmBase"
* [928](https://github.com/AcademySoftwareFoundation/openexr/pull/928) exrcheck: better tile checks in reduceMemory mode
* [926](https://github.com/AcademySoftwareFoundation/openexr/pull/926) exrcheck: Revert to using ``getStep`` for Rgba interfaces
* [925](https://github.com/AcademySoftwareFoundation/openexr/pull/925) handle reallocation of idmanifest attributes
* [923](https://github.com/AcademySoftwareFoundation/openexr/pull/923) free up memory if DWA unRle throws
* [921](https://github.com/AcademySoftwareFoundation/openexr/pull/921) Only wait for and join joinable threads
* [920](https://github.com/AcademySoftwareFoundation/openexr/pull/920) exrcheck: check for tilesize in reduceMemory mode
* [919](https://github.com/AcademySoftwareFoundation/openexr/pull/919) validate size of DWA RLE buffer in decompress
* [916](https://github.com/AcademySoftwareFoundation/openexr/pull/916) use NO_COMPRESSION in OpenEXRTest/testBackwardCompatibility
* [915](https://github.com/AcademySoftwareFoundation/openexr/pull/915) exrcheck: assume lots of memory required whenever MultiPart ctor throws
* [913](https://github.com/AcademySoftwareFoundation/openexr/pull/913) Fixes for recent Imath deprecations
* [911](https://github.com/AcademySoftwareFoundation/openexr/pull/911) Prevent reading or writing OpenEXR images with no channels
* [909](https://github.com/AcademySoftwareFoundation/openexr/pull/909) Add idmanifest attribute support
* [906](https://github.com/AcademySoftwareFoundation/openexr/pull/906) expand testCompression to better test DWAA, DWAB and tiled images
* [902](https://github.com/AcademySoftwareFoundation/openexr/pull/902) exrcheck: rework ``reduceMemory`` and ``reduceTime`` modes
* [899](https://github.com/AcademySoftwareFoundation/openexr/pull/899) Change NOTICE to STATUS to address #891
* [898](https://github.com/AcademySoftwareFoundation/openexr/pull/898) Add support for Bazel
* [895](https://github.com/AcademySoftwareFoundation/openexr/pull/895) exrcheck: make reduced memory/time modes more sensitive
* [893](https://github.com/AcademySoftwareFoundation/openexr/pull/893) Include <limits> where required by newer compilers
* [877](https://github.com/AcademySoftwareFoundation/openexr/pull/877) ImfCompressor: use STATIC_HUFFMAN for tiled DWAB files (fix #344)
* [874](https://github.com/AcademySoftwareFoundation/openexr/pull/874) Fix missing header for Visual Studio
* [872](https://github.com/AcademySoftwareFoundation/openexr/pull/872) Handle xsampling and bad seekg() calls in exrcheck
* [869](https://github.com/AcademySoftwareFoundation/openexr/pull/869) Enable extra version tag
* [868](https://github.com/AcademySoftwareFoundation/openexr/pull/868) Make the default symbol visibility hidden for unixen builds
* [864](https://github.com/AcademySoftwareFoundation/openexr/pull/864) Remove legacy throw() specifications, conform to c++11
* [862](https://github.com/AcademySoftwareFoundation/openexr/pull/862) E2K: added initial support of MCST Elbrus 2000 CPU architecture
* [859](https://github.com/AcademySoftwareFoundation/openexr/pull/859) Invalidenum workaround
* [858](https://github.com/AcademySoftwareFoundation/openexr/pull/858) Merge RC-3 to master
* [848](https://github.com/AcademySoftwareFoundation/openexr/pull/848) Validate reconstructed chunk sizes
* [846](https://github.com/AcademySoftwareFoundation/openexr/pull/846) fix extra byte in DWA compressed data
* [839](https://github.com/AcademySoftwareFoundation/openexr/pull/839) Validate tileoffset table size
* [828](https://github.com/AcademySoftwareFoundation/openexr/pull/828) Address issues reported by Undefined Behavior Sanitizer running IlmImfTest
* [824](https://github.com/AcademySoftwareFoundation/openexr/pull/824) reduce size limit for scanline files; prevent large chunkoffset allocations
* [819](https://github.com/AcademySoftwareFoundation/openexr/pull/819) re-order shift/compare in FastHuf to prevent undefined shift overflow
* [815](https://github.com/AcademySoftwareFoundation/openexr/pull/815) cmake: Fix paths in .pc files
* [802](https://github.com/AcademySoftwareFoundation/openexr/pull/802) Modernize mutex
* [796](https://github.com/AcademySoftwareFoundation/openexr/pull/796) Initial rename of OpenEXR and IlmBase directories and seperation of Test
* [791](https://github.com/AcademySoftwareFoundation/openexr/pull/791) Initial removal of all Imath source files and minimal cmake adjustments
* [769](https://github.com/AcademySoftwareFoundation/openexr/pull/769) Bugfix/arkellr remove cvsignore files