Releases: AcademySoftwareFoundation/OpenImageIO
Releases · AcademySoftwareFoundation/OpenImageIO
v3.1.13.1
Immediately after tagging 3.1.13.0, we noticed a PR that should have been included, but wasn't. So we did not draft an official release based on 3.1.13.0, instead combining it to to release and announce it as 3.1.13.1.
Release 3.1.13.1 and 3.1.13.0 (May 3, 2026) -- compared to 3.1.12.0
- IBA: Add FLIP perceptual image difference metric as an experimental feature, including
ImageBufAlgo::experimental::FLIP_diff()C++ API, PythonImageBufAlgo.FLIP_diff(), andoiiotool --flipdiffcommand (requires--experimentalflag). Also introducesoiiotool --experimentalflag to enable features not yet part of the stable API. #5154 #5171 #5147 - fmath.h:
degrees()andradians()are nowconstexpr. #5151 - ImageSpec:
get_string_attribute()now correctly converts non-string attributes to string #5161 - bmp: Correctly handle the combination of greyscale + RLE compression #5163
- dds: Corruption protection: validate resolution and guard against integer overflow #5131
- dpx: Several safety fixes for corrupt DPX files: integer overflow protection in buffer size calculations, span-based pointer safety, and use of check_open() for resolution/channel validation #5170
- heif: Fix incorrect tracking of current subimage #5166
- iinfo: Better error handling and propagation, especially from
--hash; fix return code when a file could not be read #5168 - jpeg: Be more flexible with corrupt IPTC blocks; use
"imageinput:strict"to control whether a bad block is skipped silently or fails the whole file #5140 - jpeg2000: Guard against integer overflow in buffer size computation #5143
- rla: Harden against corrupted files: guard against RLE buffer overruns and improve seek robustness #5153 #5172
- sgi: Better detection of corrupt RLE info that could overflow #5141
- softimage: Multiple hardening fixes against corrupted input: prevent RLE buffer overruns #5142, general hardening #5155, fix malformed channel packets #5156
- targa: Protection against corrupt, mis-sized palette; fix misunderstanding of non-zero palette start index #5165
- tiff: Care with missing rowsperstrip #5160; guard against corrupt XMP blocks with TIFF-related tag names #5162
- xmp: Correctly parse XMP with self-closing
<rdf:Description ... />elements #5106 - fix: Relax OpenColorIO exception handling: distinguish serious errors from benign failures like unknown color roles #5164
- ci: Fix CI breakages: fmtlib renamed 'master' to 'main' #5127, Mac CI missing jpeg-xl install #5139
- ci: Try to reduce costs and timeouts for expensive tests in debug mode #5150
- deps: Update R3D SDK to version 9.2.0 #5148 (by Peter Kovář)
- build: Makefile wrapper fix to properly quote test regex #5146; minor debugging fixes to dependency_utils #5128
- int:
OIIO_NODISCARD_ERROR_ENABLEis now always on when building OIIO itself #5145 - admin: Update security instructions to prefer GitHub security advisory for vulnerability reports #5149
v3.0.18.1
Note that at the time of its release (May 2026), this release is part of the "obsolete" 3.0 family, and the current fully supported family of releases is 3.1.
Release 3.0.18.1 (May 3, 2026) -- compared to 3.0.18.0
- dpx: Several safety fixes for corrupt DPX files: integer overflow protection in buffer size calculations, span-based pointer safety, and use of check_open() for resolution/channel validation #5170
v3.0.18.0
Note that at the time of its release (May 2026), this release is part of the "obsolete" 3.0 family, and the current fully supported family of releases is 3.1.
Release 3.0.18.0 (May 1, 2026) -- compared to 3.0.17.0
- ImageSpec: ImageSpec::get_string_attribute didn't correctly translate to string #5161
- bmp: Correctly handle the combination of greyscale + RLE compression #5163
- dds: Corruption protection: validate resolution + overflow care #5131
- heif: Fix incorrect tracking of current subimage #5166
- jpeg2000: Watch out for int overflow in buffer size computation #5143
- rla: Harden against corrupted files #5153
- sgi: Better detection of corrupt RLE info that could overflow #5141
- softimage: Hardening against corrupted input: prevent buffer overruns from corrupt RLE, malformed channel packets, and other invalid data. #5142 #5155 #5156
- targa: Protection against corrupt, mis-sized palette #5165
- tiff: Care with missing rowsperstrip #5160
- tiff: More care ignoring XMP tags that should not be used #5162
- xmp: Correctly parse XMP with self-closing elements #5106
- build: Fix Makefile wrapper to properly quote test regex #5146
- ci: Fix breakage because fmtlib changed 'master' to 'main' #5127
- ci: Unbreak Mac CI by adding jpeg-xl install #5139
- admin: Update security instructions to emphasize reporting via GitHub #5149
v3.1.12.0
Release 3.1.12.0 (Apr 1, 2026) -- compared to 3.1.11.0
- oiiotool: Better type understanding with
-i:ch=and other cleanup #5056 - texture: Fix texture overblur with st-blur parameters #5071 #5080 (by Pascal Lecocq) (3.1.12.0, 3.0.17.0)
- IBA: Handle offset data windows in fillholes_pushpull #5105 (3.1.12.0, 3.0.17.0)
- ImageInput: check_open fixes and new validity checks #5087 (3.1.12.0, 3.0.17.0)
- bmp: Use check_open to guard against corrupt resolutions #5086 (3.1.12.0, 3.0.17.0)
- heif: Fix invalid read writing 8-bit images with dimensions not a multiple of 64 #5095 (by Brecht Van Lommel)
- ico: Various validity checks and error handling for corruptions #5088 (3.1.12.0, 3.0.17.0)
- jpeg: Improved safety and error reporting for jpeg and iptc #5081
- jpeg2000: Suppress leak when reading with OpenJPH #5098
- psd: Fixes against corrupt files with better validation #5089 (3.1.12.0, 3.0.17.0)
- rla: Lots of additional validity checking and safety #5094 (3.1.12.0, 3.0.17.0)
- tiff: Support GPS fields, and other metadata enhancements #5050
- tiff: Fix buffer overrun and improve error reporting #5082, fix wrong number of values passed to
invert_photometric#5083, check for invalid bit depth in palette images #5091 - ImageSpec: metadata_val improved safety #5096 (3.1.12.0, 3.0.17.0)
- fix: Fix UB-sanitizer warning about alignment #5097
- fix: Catch exceptions in print-uncaught-messages destructor #5103
- fix: Enhanced exception safety for our use of OpenColorIO #5114
- fix: Fix possible fmt exceptions where we might have passed null string #5115
- build: Test building with clang 22.1, fix warnings uncovered #5067
- build: Improve security by pinning auto-build dependencies by hash #5076
- build: Include idiff in the python wheels we build #5104 (3.1.12.0, 3.0.17.0)
- build(pybind11): Address new pybind11 float/int auto-conversion behavior #5058
- build(win): Embed manifest in OIIO executables to enable long path handling #5066 (by Nathan Rusch)
- ci: Add CI test for MSVS 2026 #5060 (3.1.12.0, 3.0.17.0)
- ci: For security, replace workflow substitutions with safer env substitutions #5070
- ci: Speed up slow benchmarks for debug and sanitizer CI tests #5077
- ci: On Mac Intel CI variant, don't install openvdb, for speed #5065 (3.1.12.0, 3.0.17.0)
- ci: Bump GitHub Actions to latest versions #5078 #5110 #5119
- ci: Fix broken Mac CI and wheel building by specifying full compiler paths #5100 #5101 (3.1.12.0, 3.0.17.0)
- ci: Update certificates to be able to install icc #5122 (3.1.12.0, 3.0.17.0)
- ci: Turn off nightly workflows for user forks #5042
- tests: New ref outputs for tiff-misc, heif no-avif, and ffmpeg 8.1 cases #5075 #5079 #5099 #5112
- docs: Update description for dwaCompressionLevel #5074 (by Aamir Raza)
- docs: Fix formatting examples for version macros #5073
- docs: Keep TextureSystem docs in sync with ImageCache #5085 (3.1.12.0, 3.0.17.0)
- docs: Fix typos and incorrect attribute name in a comment #5093 (3.1.12.0, 3.0.17.0)
- docs: Fix misstatement about oiiotool
--if#5102 (3.1.12.0, 3.0.17.0) - admin: Draft policy on use of AI coding assistants #5072 (3.1.12.0, 3.0.17.0)
- ci: Freetype adjustments #4999
v3.0.17.0
Release 3.0.17.0 (Apr 1, 2026) -- compared to 3.0.16.0
(note: this is the obsolete branch)
- IBA: Handle offset data windows in fillholes_pushpull #5105 (3.1.12.0, 3.0.17.0)
- texture: Fix texture overblur with st-blur parameters #5071 #5080 (by Pascal Lecocq) (3.1.12.0, 3.0.17.0)
- tiff: Wrong number of values passed to invert_photometric #5083
- ImageInput: check_open fixes and new validity checks #5087 (3.1.12.0, 3.0.17.0)
- bmp: Use check_open to guard against corrupt resolutions #5086 (3.1.12.0, 3.0.17.0)
- ico: Various validity checks and error handling for corruptions #5088 (3.1.12.0, 3.0.17.0)
- psd: Fixes against corrupt files with better validation #5089 (3.1.12.0, 3.0.17.0)
- rla: Lots of additional validity checking and safety #5094 (3.1.12.0, 3.0.17.0)
- ImageSpec: metadata_val improved safety #5096 (3.1.12.0, 3.0.17.0)
- build: Include idiff in the python wheels we build #5104 (3.1.12.0, 3.0.17.0)
- ci: Add CI test for MSVS 2026 #5060 (3.1.12.0, 3.0.17.0)
- ci: On Mac Intel CI variant, don't install openvdb, for speed #5065 (3.1.12.0, 3.0.17.0)
- ci: Fix broken Mac CI and wheel building by specifying full compiler paths #5100 #5101 (3.1.12.0, 3.0.17.0)
- ci: Update certificates to be able to install icc #5122 (3.1.12.0, 3.0.17.0)
- tests: New ref outputs for heif no-avif, ffmpeg 8.1, and tiff-misc cases #5079 #5099 #5112 (3.1.12.0, 3.0.17.0)
- docs: Keep TextureSystem docs in sync with ImageCache #5085 (3.1.12.0, 3.0.17.0)
- docs: Fix typos and incorrect attribute name in a comment #5093 (3.1.12.0, 3.0.17.0)
- docs: Fix misstatement about oiiotool
--if#5102 (3.1.12.0, 3.0.17.0) - admin: Draft policy on use of AI coding assistants #5072 (3.1.12.0, 3.0.17.0)
v3.1.11.0
Release 3.1.11.0 (Mar 1, 2026) -- compared to 3.1.10.0
- oiiotool: Fix expression BOTTOM when there are exactly two images #5046
- oiiotool:
-d SUBIMAGENAME.*didn't work properly #5048 - oiiotool: Make sure
oiiotool --compressiondoes expression substitution #5055 - iv: Ability to flip, rotate and save image #5003 (by Valery Angelique)
- fix: Gamma precision #5038 (by Lumina Wang)
- bmp: Detect corrupt files where palette doesn't match bpp #5030
- heif: Monochrome channel read and write support, fix crash #5043 (by Brecht Van Lommel)
- jpeg-xl / color mgmt: Extending JXL CICP support to include P3 / color primaries 12 #5054 (by Shane Smith)
- tiff: Fix TIFF output crash for multi-count Exif metadata #5035
- tiff: Improve TIFF robustness for non-matching tag/metadata types #5036
- tiff: Correctly read TIFF EXIF fields for ExifVersion and FlashPixVersion #5045
- typedesc.h: New TypeURational type definition is like TypeRational, but with unsigned components. #5036 #5057
- win:
oiiotool --buildinfomisreported platform on MSVS #5027 - build: Raise fmt auto-build version to 12.1, handle Windows flags #5039
- build: Self-builder logic fixes for deep vs shallow clones #5034
- build: Use quote to avoid error if variable is empty #5053
- tests: Add testsuite/heif ref output for libheif 1.21 + avif support #5031
- tests: Adjust test comparision thresholds for Mac ARM #5026
- tests: Imageinout_test: add benchmark of read and write speed vs tile size #5037
- ci: Don't install OpenCV on Mac Intel job variant #5032
- ci: Temporarily disable python stub checking #5061
- ci: Add MacOS 26 (ARM) to the CI lineup #5059
v3.0.16.0
Release 3.0.16.0 (Mar 1, 2026) -- compared to 3.0.15.0
- oiiotool: Fix expression BOTTOM when there are exactly two images #5046
- bmp: Detect corrupt files where palette doesn't match bpp #5030
- tiff: Fix TIFF output crash for multi-count Exif metadata #5035
- windows:
oiiotool --buildinfomisreported platform on MSVS #5027 - build: Raise fmt auto-build version to 12.1, handle Windows flags #5039
- ci: Optimize install_homebrew_deps by coalescing installs #4975
- ci: Don't install OpenCV on Mac Intel job variant #5032
- ci: Temporarily disable python stub checking #5061
- ci: Add MacOS 26 (ARM) to the CI lineup #5059
- tests: Add testsuite/heif ref output for libheif 1.21 + avif support #5031
- tests: Adjust test comparision thresholds for Mac ARM #5026
v3.1.10.0
Release 3.1.10.0 (Feb 1, 2026) -- compared to 3.1.9.0
- perf:
IBA::resample()andoiiotool --resampleimprovements to speed up 20x or more #4993 - ImageBuf: IB::localpixels_as_[writable_]byte_image_span #5011
- ImageBufAlgo*: IBA::make_texture now honors "maketx:threads" hint #5014
- heif: Add IOProxy for input and output #5017 (by Brecht Van Lommel)
- heif: Can not output AVIF when libheif has no HEVC support #5013 (by Brecht Van Lommel)
- heif: Error saving multiple images with different bit depths #5018 (by Brecht Van Lommel)
- webp: Use correct resolution limits for WebpOutput::open #5016 (by Jesse Yurkovich)
- webp: Missing oiio:UnassociatedAlpha on input #5020 (by Brecht Van Lommel)
- fix: Several bug fixes related to internal use of image_span #5004
- build: Fix building on OpenBSD #5001 (by Brad Smith)
- deps: Libheif 1.21 support #4992
- deps: Bump build ver to 2.5.1 #5022 (by Zach Lewis)
- deps: Use libheif exported config if available #5012
- tests: Add new ref image for jpeg test #5007
- tests: Fully disable tests when their required dependencies are missing #5005
- ci: Speed up macos15 intel variant by not installing Qt #4998
- ci: Don't run non-wheel workflows when only pyproject.toml changes #4997
- ci: Windows runners switched which python version they had #5010
- ci: Test against libraw 0.22 for 'latest' test variants #5009
- ci: Lock bleeding edge to pybind11 latest version #5024
v3.0.15.0
Release 3.0.15.0 (Feb 1, 2026) -- compared to 3.0.14.0
- heif: Can not output AVIF when libheif has no HEVC support #5013 (by Brecht Van Lommel)
- heif: Error saving multiple images with different bit depths #5018 (by Brecht Van Lommel)
- webp: Use correct resolution limits for WebpOutput::open #5016 (by Jesse Yurkovich)
- ci: Speed up macos15 intel variant by not installing Qt #4998
- ci: Windows runners switched which python version they had #5010
- ci: Lock bleeding edge to pybind11 latest version #5024
v3.1.9.0
Release 3.1.9.0 (Jan 1, 2026) -- compared to 3.1.8.0
- Color management improvements:
- Auto convert between oiio:ColorSpace and CICP attributes in I/O #4964 (by Brecht Van Lommel)
- exr: Write OpenEXR colorInteropID metadata based on oiio:ColorSpace #4967 (by Brecht Van Lommel)
- jpeg-xl: CICP read and write support for JPEG-XL #4968 (by Brecht Van Lommel)
- jpeg-xl: ICC read and write for JPEG-XL files (issue 4649) #4905 (by shanesmith-dwa)
- png: We were not correctly suppressing hint metadata #4983
- sgi: Implement RLE encoding support for output #4990 (by Jesse Yurkovich)
- webp: Allow out-of-order scanlines when writing webp #4973 (by Pavan Madduri)
- fix/IBA: IBA::compare_Yee() accessed the wrong channel #4976 (by Pavan Madduri)
- perf/filesystem.h: Speedup to detect the existence of files on Windows #4977 (by JacksonSun-adsk)
- ci: Address tight disk space on GHA runners #4974
- ci: Optimize install_homebrew_deps by coalescing installs #4975
- ci: Build_Ptex.bash should build Ptex using C++17 #4978
- ci: Unbreak CI by adjusting Ubuntu installs #4981
- ci: Test against libraw 0.21.5 #4988
- docs: Fix missing docs for
OIIO:attribute()andOIIO::getattribute()#4987