Releases: AcademySoftwareFoundation/openexr
v3.1.1
Patch release that fixes build failures on various systems, introduces CMake CMAKE_CROSSCOMPILING_EMULATOR
support, and fixes a few other minor issues.
See CHANGES.md for more details.
v3.1.0
Minor release with significant new features:
The 3.1 release of OpenEXR introduces a new library, OpenEXRCore, which is the result of a significant re-thinking of how OpenEXR manages file I/O and provides access to image data. It begins to address long-standing scalability issues with multithreaded image reading and writing.
The OpenEXRCore library provides thread-safe, non-blocking access to files, which was not possible with the current API, where the framebuffer management is separate from read requests. It is written entirely in C and provides a new C-language API alongside the existing C++ API. This new low-level API allows applications to do custom unpacking of EXR data, such as on the GPU, while still benefiting from efficient I/O, file validation, and other semantics. It provides efficient direct access to EXR files in texturing applications. This C library also introduces an easier path to implementing OpenEXR bindings in other languages, such as Rust.
The 3.1 release represents a technology preview for upcoming releases. The initial release is incremental; the existing API and underlying behavior has not changed. The new API is available now for performance validation testing, and then in future OpenEXR releases, the C++ API will migrate to use the new core in stages. It is not the intention to entirely deprecate the C++ API, nor must all applications re-implement EXR I/O in terms of the C library. The C API does not, and will not, provide the rich set of utility classes that exist in the C++ layer. The 3.1 release of the OpenEXRCore library simply offers new functionality for specialty applications seeking the highest possible performance. In the future, the ABI will evolve, but the API will remain consistent, or only have additions.
See the release notes and the technical documentation for more details.
v3.0.5
Patch release that fixes problems with library symlinks and pkg-config, as well as miscellaneous bugs/security issues.
- 1064 Use CMAKE_INSTALL_FULL_LIBDIR/INCLUDEDIR in pkgconfig for 3.*
- 1051 Fix non-versioned library symlinks in debug build.
- 1050 Use CMAKE__POSTFIX for .pc file lib suffix.
- 1045 The vtable for TiledRgbaInputFile was not properly tagged as export
- 1038 fix/extend part number validation in MultiPart methods
- 1037 verify data size in deepscanlines with NO_COMPRESSION
- 1036 detect buffer overflows in RleUncompress
- The Imath auto-build version defaults to Imath v3.0.5.
v2.5.7
v3.0.4
v3.0.3
v3.0.2
Patch release with miscellaneous bug/build fixes, including:
- Fix TimeCode.frame max value
- Don't impose C++14 on downstream projects
- Restore fix to macOS universal 2 build lost from #854
Specific OSS-fuzz issues:
v2.4.3
Patch release for v2.4 that addresses the following security vulnerabilities:
- CVE-2021-20296 Segv on unknown address in Imf_2_5::hufUncompress - Null Pointer dereference (817)
- CVE-2021-3479 Out-of-memory in openexr_exrenvmap_fuzzer (830)
- CVE-2021-3478 Out-of-memory in openexr_exrcheck_fuzzer (863)
- CVE-2021-3477 Heap-buffer-overflow in Imf_2_5::DeepTiledInputFile::readPixelSampleCounts (861)
- CVE-2021-3476 Undefined-shift in Imf_2_5::unpack14 (832)
- CVE-2021-3475 Integer-overflow in Imf_2_5::calculateNumTiles (825)
- CVE-2021-3474 Undefined-shift in Imf_2_5::FastHufDecoder::FastHufDecoder (818)
Also:
- 1013 Fixed regression in Imath::succf() and Imath::predf() when negative values are given
v2.5.6
v3.0.1
Major release with major build restructuring, 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 oflibIlmImf
). No header files have been renamed; they retain theImf
prefix. - Symbol linkage visibility is limited to specific public symbols. See SymbolVisibility.md for more details.
Build improvements:
- No more simultaneous static/shared build option.
- Community-provided support for bazel.
- Gnu autoconf/bootstrap/configure build setup has been retired.
New Features:
- ID Manifest Attributes, as described in "A Scheme for Storing Object ID Manifests in OpenEXR Images", 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 230 pixels.
- Tiled DWAB files used STATIC_HUFFMAN compression.
Int64
andSInt64
types are deprecated in favor ofuint64_t
andint64_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 for details about differences from previous releases and how to address them.
- Also refer to the porting guide for details about changes to Imath.