Releases: AcademySoftwareFoundation/OpenImageIO
v3.0.10.0
v3.1.4.0-beta
First beta of the 3.1 release series.
Release 3.1 (target: Sept 2025?) -- compared to 3.0
- Beta 1: Aug 22, 2025
- Anticipated release candidate: Sep 1(ish), 2025
- Anticipated supported release: Sep 15, 2025
NOTE: We anticipate some additional changes to color management to be
rolled out during the beta period. It will not include any breaks to API or
ABI compatibility, but we do expect some behavior changes.
Executive Summary / Highlights:
- New image file support: Ultra HDR (HDR images in JPEG containers).
- oiiotool new commands:
--layersplit
,--pastemeta
,--demosaic
,
create-dir
and new expression expansion tokens:IS_CONSTANT
,
IS_BLACK
,SUBIMAGES
. - New IBA image processing functions:
scale()
,demosaic()
. - New 2-level namespace scheme that we hope will make it possible in the
future for our annual releases to NOT need to break backward ABI
compatibility. - Support in Python for
ImageBuf._repr_png_
method allows use of OIIO
inside Jupyter Notebooks to display computed
images. - Color management improvements to conform to Color Interchange Forum and
OpenEXR new conventions for naming and specifying color spaces.
New minimum dependencies and compatibility changes:
⛰️ New features and public API changes:
- New image file format support:
- jpeg: Support reading Ultra HDR images #4484 (by Loïc Vital) (3.1.0.0/3.0.1.0)
- oiiotool new features and major improvements:
- New expression eval tokens:
IS_CONSTANT
,IS_BLACK
#4610 (by Lydia Zheng) (3.1.1.0);SUBIMAGES
#4804 (3.1.3.0) --layersplit
, new command to split layers #4591 (by Loïc Vital) (3.1.1.0)--pastemeta
now takes additional modifiers that allows options for merging rather than rewriting, and is able to copy only a subset of the metadata specified by a regex. #4672 #4674 #4676 (3.1.1.0)--demosaic
add X-Trans demosaicing #4579 (by Anton Dukhovnikov) (3.1.1.0)--render_text
new modifiersmeasure=
andrender=
can
be used to measure the size of rendered text without drawing it.` #4681 (3.1.3.0)--create-dir
flag creates directories needed by-o
if they doesn't already exist #4762 (by Dharshan Vishwanatha) (3.1.3.0)--eraseattrib
new modifier:fromfile=1
reads from a file
to get a list of patterns to specify the attributes to erase. #4763 (by Lydia Zheng) (3.1.3.0)
- New expression eval tokens:
- Command line utilities:
- ImageBuf/ImageBufAlgo:
- New
ImageBuf::merge_metadata()
: merges one IB's metadata into another's without deleting the metadata already present. It can also filter which metadata are copied using a regex. #4672 (3.1.1.0) - New
ImageBufAlgo::scale()
: scales all channels of a multi-channel image by the single channel of a second image. #4541 (by Anton Dukhovnikov) (3.1.0.0/3.0.1.0) ImageBufAlgo::demosaic()
added support for X-Trans demosaicing #4579 (by Anton Dukhovnikov) (3.1.1.0)
- New
- APIs moving to
span
andimage_span
:
Add API calls usingspan
andimage_span
as the preferred alternative for
the historical calls that took raw pointers and spans to designate buffers
to read from or write into. - ImageCache/TextureSystem:
- maketx: Add maketx flags to increase feature parity with txmake #4841 (by Scott Milner) (3.1.4.0)
- New global attribute queries via OIIO::getattribute():
- Miscellaneous API changes:
- api: Make a 2-level namespace scheme #4567 (by Larry Gritz) #4603 (by Brecht Van Lommel) (3.1.1.0)
- api: ImageSpec::scanline_bytes, tile_bytes, image_bytes #4631 (3.1.1.0)
- python: ImageBuf
_repr_png_
method added, which allows use of
ImageBuf in Jupyter Notebooks as a displayable object. #4753 (by Oktay Comu) (3.1.3.0) - python: Add python stub files #4692 (by Chad Dombrova) (3.1.3.0)
- api: Add new ImageInput::supports() query: "mipmap" #4800 (3.1.3.0)
- Color management changes
🚀 Performance improvements:
- perf: IBA::unsharp_mask() speed and memory optimization #4513 (by Vlad (Kuzmin) Erium) (3.1.0.0/3.0.1.0)
- perf: Oiiotool --line --text --point --box speedups #4518 (3.1.0.0/3.0.1.0)
- perf: Jpeg2000 valid_file implementation, much faster than trying to open #4548 (by Aras Pranckevičius) (3.1.0.0/3.0.1.0)
- perf: Faster utf8<->utf16 conversion on Windows #4549 (by Aras Pranckevičius) (3.1.0.0/3.0.1.0)
- perf: Speed up
maketx --envlatl
when multithreaded by over 10x. #4825 - perf: Speed up OpenEXR non-core header read time #4832
🐛 Fixes and feature enhancements:
- oiiotool: Better handling of wildcards that match no files #4627 (3.1.1.0)
- oiotool: Invalid loop bound when appending mipmap textures using oiiotool #4671 (by Basile Fraboni) (3.1.1.0)
- oiiotool: -i:native=1, fix --native behavior, fix convert datatype #4708 (3.1.3.0)
- oiiotool: Fixes to --missingfile behavior #4803 (3.1.3.0)
- oiiotool: Allow thread control for --parallel-frames #4818 (3.1.3.0)
- color mgmt: Support OCIO Viewing Rules, other OCIO-related improvements #4780 (by zachlewis) (3.1.3.0)
- iv: Fix crash on .DS_Store; fix uppercase extensions [#4764](https://github.com/AcademySoftwareFoundation/Open...
v3.0.9.1
OpenImageIO v3.0.9.0
Release 3.0.9.0 (Aug 1, 2025) -- compared to 3.0.8.1
- maketx: Add flags to increase feature parity with txmake #4841 (by Scott Milner)
- perf: Speed up
maketx --envlatl
when multithreaded by over 10x. #4825 - perf: Speed up OpenEXR non-core header read time #4832
- oiiotool: Allow thread control for --parallel-frames #4818
- ImageInput: Incorrect IOProxy logic related to valid_file #4839
- python: Got strides wrong passing 2D numpy pixel array #4843
- ffmpeg: Replace deprecated and soon removed avcodec_close with avcodec_free_context #4837 (by Vlad Erium)
- build/python: For python stub generation, lock pybind11 to pre-3.0 #4831
- build: Fix typo related to finding ccache #4833
- build: PNG auto-build improvements #4835
- build: Propagate CMAKE_MSVC_RUNTIME_LIBRARY #4842
- build: Update jpeg2000input.cpp to include cstdarg #4836 (by Peter Kovář)
- ci: Bump 'latest releases' tests to use pybind11 3.0.0 #4828
- (docs): Correct docs and type of "resident_memory_used_MB" attribute #4824
- (admin): Update SECURITY to reflect that 2.5 only gets critical fixes now #4829
v3.0.8.1
Release 3.0.8.1 (Jul 5, 2025) -- compared to 3.0.8.0
- build(heif): Fixes to build against libheif 1.20 #4822 (by Rui Chen)
- ci: Wheel upload_pypi step should only run from main repo #4820
- ci: Bump 'latest' test versions #4819
Note: the only important change that necessitated this unscheduled patch release is #4822 to fix a build break with a newly released libheif. If you know you do not need to build against libheif >= 1.20, you don't need to upgrade, as this is otherwise identical to v3.0.8.0.
v2.5.19.0
NOTE: This is an unscheduled release of the obsolete 2.5 series, to address the fact that without it, 2.5 would no longer build against the new libheif, which is the default version you get from Homebrew.
Our strong recommendation is that anybody still using 2.5 should upgrade as soon as possible to the supported 3.0 series of releases.
Release 2.5.19.0 (July 5 2025) -- compared to 2.5.18.0
- build: Fixes to build against libheif 1.20 #4822 (by Rui Chen)
OpenImageIO v3.0.8.0
Release 3.0.8.0 (Jul 1, 2025) -- compared to 3.0.7.0
- oiiotool: New expression pseudo-metadata term: SUBIMAGES #4804
- oiiotool: Fixes to --missingfile behavior #4803
- iv: Area probe #4767 (by Danielle Imogu)
- python: Python ImageBuf.init_spec did not return correct value #4805
- fix: ImageOutput::check_open logic was flawed #4779
- int(iv): Add raw string syntax modifier for VSCode and Cursor to understand its glsl #4796 (by Aleksandr Motsjonov)
- int(iv): Use R"()" syntax for glsl shader strings for better readability #4795 (by Aleksandr Motsjonov)
- exr: Not honoring 'missingcolor' for scanline files #4757
- build: Add arm_neon.h include on Windows ARM64 with clang-cl #4691 (by Anthony Roberts)
- build: Adjust pystring finding #4816
- build(jxl): Use correct cmake variables for the include directories #4810 #4813 (by Jesse Yurkovich)
- tests: Remove old test reference output we no longer need #4817
- ci: Remove tests on Windows-2019 GitHub runner #4793
- ci: Various ccache save/restore improvements for CI runs #4797
- ci: Simplify gh-win-installdeps, no more vcpkg #4809
- admin: Remove stale intake documents #4815
OpenImageIO v3.0.7.0
Release 3.0.7.0 (Jun 1, 2025) -- compared to 3.0.6.1
- oiiotool:
--eraseattrib
new modifier:fromfile=1
reads from a file
to get a list of patterns to specify the attributes to erase. #4763 (by Lydia Zheng) - oiiotool: Added
--create-dir
flag to create directories needed by-o
if they doesn't already exist #4762 (by Dharshan Vishwanatha) - oiiotool: --eraseattrib:fromfile=1 #4763 (by Lydia Zheng)
- oiiotool: Added create-dir cmd arg to create dir if it doesn't exist #4762 (by Dharshan Vishwanatha)
- oiiotool: -i:native=1, fix --native behavior, fix convert datatype #4708
- iv: Fix crash on .DS_Store; fix uppercase extensions #4764 (by Anton Dukhovnikov)
- iv: Do not resize on open and other zoom fixes #4766 (by Aleksandr Motsjonov)
- iv: Bug fix for iv window losing focus on mac on startup #4773 (by Aleksandr Motsjonov)
- iv: Implement files drag and drop into an iv window #4774 (by Aleksandr Motsjonov)
- iv: Use screen pixel ratio to render sharp text in pixel view tool #4768 (by Aleksandr Motsjonov)
- python: Add python stub files #4692 #4754 (by Chad Dombrova)
- python: ImageBuf
_repr_png_
method added, which allows use of
ImageBuf in Jupyter Notebooks as a displayable object. #4753 (by Oktay Comu) - exr: Did not properly allocate 'missingcolor' vector #4751
- exr: Add
htj2k
as a compression option for OpenEXR. Only works with OpenEXR 3.4 or higher (or in-progress OpenEXR main). #4785 (by Li Ji) - iff: Improved IFF support reading and writing z buffers #4673 (by Mikael Sundell)
- webp: Respect the
oiio:UnassociatedAlpha
attribute #4770 (by Jesse Yurkovich) - webp: Allow finer grained control over WEBP compression settings #4772 (by Jesse Yurkovich)
- flx/python: IBA.demosaic had GIL release in wrong spot #4777
- fix: ImageInput/ImageOutput did not set per-file threads correctly #4750
- fix: Address safety warnings in pvt::append_tiff_dir_entry #4737
- build: Fix fmt throwing behavior warnings #4730
- build: Detect libultrahdr version and enforce minimum of 1.3 #4729
- build: Fix failed test with old fmt #4758
- ci: Save time by not checking out entire project history #4731
- ci: New testing variants for VFX Platform 2025, Windows 2025 #4744, Linux ARM #4749
- ci: Update ref output to compensate for GitHub windows drive changes #4761
- ci: Pkg config libdir fix #4775 (by Scott Wilson)
- ci: For docs workflow, lock down versions and speed up #4646
- ci: Improved clang-format CI task #4647
- ci: Add facility for benchmarking as part of CI #4745
- ci: Update ref image for slightly changed freetype accents #4765
- docs: Online docs improvements, mostly formatting (#4736, #4743)
- docs: Update Windows build instructions to rely on deps auto-build #4769
OpenImageIO v3.0.6.1
This is just a single bug fix for a possible downstream compatibility fix we introduced. If you aren't encountering the problem, you don't need to rush to upgrade.
Release 3.0.6.1 (May 2, 2025) -- compared to 3.0.6.0
- fix: Restore OIIO_AVX512ER_ENABLED preprocessor symbol. Its absence could break backwards source compatibility if anyone was using it, even though it was useless and broken. Where compatibility goes, better safe than sorry. #4735
OpenImageIO v3.0.6.0
Release 3.0.6.0 (May 1, 2025) -- compared to 3.0.5.0
- oiiotool: Add
--text
modifiersmeasure=
andrender=
#4681 - python: Fix handle leak #4685
- bmp: Correct the type for BMP x/y density #4695 (by Campbell Barton)
- dpx: Specify the units for DPX scanned size #4694 (by Campbell Barton)
- sgi: Fix valid_file to properly swap bytes on little-endian platforms #4697 (by Jesse Yurkovich)
- build: Fix new dcmtk 3.6.9 vs C++ warning #4698
- build: Address Robin-map vs CMake 4.0 compatibility #4701
- build: Fix broken OIIO_SITE customization #4709
- build: Address compiler warnings in simd.h #4724
- build/windows: Clean up Windows compilation warnings #4706
- build/windows: Include Windows version information on produced binaries #4696 (by Jesse Yurkovich)
- ci: Move away from soon-to-be-deprecated ubuntu-20.04 GHA runner #4636