github AcademySoftwareFoundation/openexr v3.4.6

7 hours ago

Patch release with several bug fixes, enhancements, and build improvements.

  • 🐛 A limit of UINT_MAX deep samples per pixel is now enforced, which prevents an integer overflow when using the CompositeDeepScanLine API to combine multiple deep parts.

  • 🔧 In IlmThreadPool, replace deprecated std::atomic_load/std::atomic_exchange overloads for std::shared_ptr with the C++20 std::atomic<std::shared_ptr<T>> interface when available.

  • 🐛 The ZIP and ZIPS Compressor objects had incorrect compression types set, although the ill effects were minimal as the value is seldom used.

  • 🐛 Enable SSE2 on 32-bit x86 builds to fix test failures

Build improvements:

  • 🛠️ OpenEXR now ships with an internal "vendored" copy of the OpenJPH library. At configuration time, if CMake finds an external installation of OpenJPH, it will use it, but if that fails, or the CMake configuration option OPENEXR_FORCE_INTERNAL_OPENJPH is set, it will use the internal copy. For OpenEXR v3.4.6, the vendored version of OpenJPH is 0.26.3.

  • 🛠️ A new CMake build option DOPENEXR_FORCE_EMBEDDED_CORE builds the OpenEXRCore library statically and links it into the OpenEXR library with symbols hidden, making it possible to link multiple versions of OpenEXR into the same executable. The OpenEXR library has namespaces for this situation, but the OpenEXRCore library is written in C with no configurable namespace. See Linking Multiple OpenEXR Versions in the Same Executable for details.

  • 🛠️ Fix build failure with -march=sandybridge

Python:

  • 🐍 ✨ Add python support for Opaque Attributes

  • 🚀 Python module I/O operations now release the GIL, preventing blocking.

Tools:

  • ✨ Add sanity check for correct arguments to exrstdattr, to catch mistakes such as exrstdattr input.exr output.exr -comment hello which would formerly write to a file called hello but now fails with a usage error.

Also, this release bumps the vendored version of libdeflate to 1.25.

Don't miss a new openexr release

NewReleases is sending notifications on new releases.