Tags · AcademySoftwareFoundation/OpenImageIO · GitHub
Skip to content

Tags: AcademySoftwareFoundation/OpenImageIO

Tags

v3.2.2.0

Toggle v3.2.2.0's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lgritz Larry Gritz
v3.2.2.0

Release 3.2.2.0 (Oct 28, 2026) -- compared to 3.2.1.3
----------------------------------------------------
  - *color*: Give the linear display identities their CICP codes. [#5540](#5540) (by @zachlewis / Zach Lewis)
  - *color*: Add chromaticities and transfer gamma queries to ColorConfig. [#5521](#5521) [#5557](#5557) (by @zachlewis / Zach Lewis)
  - *color*: Resolve namespaced Color Interop IDs. [#5546](#5546) (by @zachlewis / Zach Lewis)
  - *color*: Convert to and from Color Interop IDs the config lacks. [#5547](#5547) (by @zachlewis / Zach Lewis)
  - *color*: Preserve gamma conversion order with OCIO 2.3 and 2.4. [#5517](#5517) (by @zachlewis / Zach Lewis)
  - *color*: `IsData()` follows OCIO's lookup and its isdata flag. [#5539](#5539) (by @zachlewis / Zach Lewis)
  - *color*: Keep the default view transform when copying configs on OCIO < 2.3.2. [#5538](#5538) (by @zachlewis / Zach Lewis)
  - *color*: Load the color config on first use, not on construction. [#5507](#5507) (by @zachlewis / Zach Lewis)
  - *ImageSpec*: Carry source provenance on higher-level image specs. [#5511](#5511) (by @zachlewis / Zach Lewis)
  - *oiiotool*: Don't read past an empty `--info` result. [#5537](#5537) (by @zachlewis / Zach Lewis)
  - *perf*: Resolve the color interop ID table's names once per config. [#5545](#5545) (by @zachlewis / Zach Lewis)
  - *perf*: Reduce cache-line contention in ImageCache lookups. [#5565](#5565) (by @lgritz / Larry Gritz)
  - *perf*: Faster `spin_mutex` under contention; fix arm64 pause. [#5564](#5564) [#5583](#5583) (by @lgritz / Larry Gritz)
  - *IBA*: Properly clamp `resample()` channel range and Highway row stride. [#5541](#5541) (by @wingfiring / JacksonSun-adsk)
  - *IBA*: Don't index channelnames past its size. [#5607](#5607) (by @lgritz / Larry Gritz)
  - *IBA*: `premult()` rejects `alpha_channel == nchannels`. [#5610](#5610) (by @lgritz / Larry Gritz)
  - *ImageBuf*: `nmiplevels()` returns 0 for non-ImageCache ImageBuf. [#5437](#5437) (by @luna-y-kim / Luna Kim)
  - *ImageInput*: Reject absurd tile/display sizes, and related fixes. [#5519](#5519) (by @lgritz / Larry Gritz)
  - *ImageInput*: Prevent integer overflow with large data window origins. [#5494](#5494) (by @lgritz / Larry Gritz)
  - *dicom*: Fix rejected subimages, and reaching every frame. [#5474](#5474) (by @lgritz / Larry Gritz)
  - *dpx*: Better handling of truncated pixel data. [#5554](#5554) (by @lgritz / Larry Gritz)
  - *dpx*: Fix integer overflow in scanline buffer offset. [#5568](#5568) (by @lgritz / Larry Gritz)
  - *dpx*: Writer mishandled subimages that differ from the first. [#5608](#5608) (by @lgritz / Larry Gritz)
  - *exr*: Report true file size to OpenEXRCore size callback. [#5585](#5585) (by @lgritz / Larry Gritz)
  - *fits*: Fix off-by-one scanline offset in reader and writer. [#5555](#5555) (by @lgritz / Larry Gritz)
  - *gif*: Reject subimages whose resolution differs from the first. [#5609](#5609) (by @lgritz / Larry Gritz)
  - *heif*: Don't let libheif exceptions escape `open()`. [#5556](#5556) (by @lgritz / Larry Gritz)
  - *iconvert*: Use a private ImageCache to gather subimage specs. [#5508](#5508) (by @zachlewis / Zach Lewis)
  - *iff*: Safety fixes: offsets in size_t, fix row flip. [#5596](#5596) (by @lgritz / Larry Gritz)
  - *jpeg2000*: Reject HTJ2K tile layouts that bloat OpenJPH memory. [#5589](#5589) (by @lgritz / Larry Gritz)
  - *jpegxl*: Propagate close-time encoder and write failures. [#5509](#5509) (by @zachlewis / Zach Lewis)
  - *paramlist*: Check span size in byte-span calls. [#5615](#5615) (by @jinhgkim / Jinnie Kim)
  - *png*: Preserve mastering display metadata (mDCV). [#5512](#5512) (by @zachlewis / Zach Lewis)
  - *pnm*: Reject out-of-range maxval; avoid int overflow when scaling. [#5592](#5592) (by @lgritz / Larry Gritz)
  - *psd*: Skip empty layers when reading PSD files. [#5562](#5562) (by @jeevan6996 / Jeevan Mohan Pawar)
  - *psd*: Reject layer missing a required channel id [#5599](#5599), bound RLE row lengths by available data [#5591](#5591) (by @lgritz / Larry Gritz)
  - *r3d*: Check decode status, validate clip geometry, report errors. [#5413](#5413) (by @lgritz / Larry Gritz)
  - *raw*: Include LibRaw error messages within ours [#5573](#5573), apply the compression-ratio check to the output spec [#5618](#5618) (by @lgritz / Larry Gritz)
  - *sgi*: Bounds check RLE run value byte for 8 bit data. [#5513](#5513) (by @lgritz / Larry Gritz)
  - *softimage*: Check `read_next_scanline` results. [#5590](#5590) (by @lgritz / Larry Gritz)
  - *tiff*: 64-bit size for LONG-typed IPTC data. [#5577](#5577) (by @lgritz / Larry Gritz)
  - *tiff*: Fix premultiply of unassociated alpha in subset and tiled reads. [#5614](#5614) (by @lgritz / Larry Gritz)
  - *tiff*: Integer overflow safety in TIFF writer. [#5613](#5613) (by @lgritz / Larry Gritz)
  - *tiff*: Cap libtiff internal allocations at `limits:imagesize_MB`. [#5616](#5616) (by @lgritz / Larry Gritz)
  - *tiff*: Fix stack overflow reading InkNames of multi-ink files. [#5600](#5600) (by @lgritz / Larry Gritz)
  - *xml*: Handle rational types in ImageSpec roundtrip. [#5581](#5581) (by @ayushactiveat / Ayush Singh)
  - *python*: Render `ImageSpec.format` as a property and restore `__version__` in the python stubs. [#5582](#5582) (by @linsen458-spec / Ethan Lin)
  - *python*: Fix overflow in `read_scanlines`/`read_tiles`/`get_pixels`. [#5569](#5569) (by @lgritz / Larry Gritz)
  - *python*: Build python stubs with nanobind stubgen and a pattern file. [#5552](#5552) (by @linsen458-spec / Ethan Lin)
  - *int*: Move `errorfmt` to strutil.h so both libs can use it. [#5620](#5620) (by @jinhgkim / Jinnie Kim)
  - *int*: Move IGNORE_HOMEBREWED_DEPS logic to dependency_utils.cmake. [#5501](#5501) (by @lgritz / Larry Gritz)
  - *platform.h*: Add `OIIO_NOINLINE`. [#5626](#5626) (by @lgritz / Larry Gritz)
  - *simd.h*: Avoid misaligned typed stores in partial `vint4`/`vfloat4` stores. [#5566](#5566) (by @lgritz / Larry Gritz)
  - *span.h*: Guard `spancpy`/`spanset`/`spanzero` against offset past end. [#5598](#5598) (by @lgritz / Larry Gritz)
  - *test*: Fix the missing lock correctness check [#5574](#5574), fix misused lambda in `std::all_of` check [#5575](#5575) (by @jinhgkim / Jinnie Kim)
  - *test*: Fix spurious testsuite/texture-texture3d failures [#5588](#5588), fix texture-device-devicecheck needing fmt headers first [#5542](#5542), set PYTHONPATH to this build's bindings for every test [#5553](#5553) (by @lgritz / Larry Gritz)
  - *test*: Cover out-of-order and post-failure subimage seeks [#5524](#5524), runtest.py `redirect_push()`/`redirect_pop()` [#5476](#5476), let imageinout_test skip one format [#5603](#5603), lower harness `limits:imagesize_MB` to 512 [#5617](#5617) (by @lgritz / Larry Gritz)
  - *build*: Clear stale dep version before refinding a local build. [#5578](#5578) (by @lgritz / Larry Gritz)
  - *build*: Accept commas in dependency list options. [#5499](#5499) (by @lgritz / Larry Gritz)
  - *build*: Fix libc++ hardening mode never being enabled. [#5523](#5523) (by @lgritz / Larry Gritz)
  - *build*: Detect FFmpeg 8.1 and 9.x correctly. [#5535](#5535) (by @lgritz / Larry Gritz)
  - *build*: Don't pass our minimum OpenJPH version to `find_package`. [#5587](#5587) (by @lgritz / Larry Gritz)
  - *build*: Python wheel fixes: upload wheels for 3.2.* [#5572](#5572), Python 3.15 wheels [#5533](#5533), pin Linux wheel job to ubuntu-24.04 [#5621](#5621) (by @lgritz / Larry Gritz)
  - *ci*: Test better span of libuhdr versions, auto-build default 2.0.2. [#5526](#5526) (by @lgritz / Larry Gritz)
  - *ci*: Imath+OpenEXR CI and autobuild improvements [#5529](#5529), adjust dependency pins on oldest, latest, and bleeding [#5543](#5543), adjust freetype in 'latest' and 'oldest' jobs [#5579](#5579) (by @lgritz / Larry Gritz)
  - *ci*: Remove MacOS14 tests, GitHub is retiring the runner. [#5532](#5532) (by @lgritz / Larry Gritz)
  - *ci/fuzz*: Coverage-instrument the libraries in fuzz builds. [#5586](#5586) (by @lgritz / Larry Gritz)
  - *docs*: Clarify `oiiotool --dup` reference semantics and in-place commands. [#5548](#5548) (by @linsen458-spec / Ethan Lin)
  - *docs*: Bump docs workflow dependency versions (sphinx, breathe, etc). [#5536](#5536) (by @lgritz / Larry Gritz)
  - *admin*: Agent/AI tooling and docs: add the oiio-input-security-audit skill and archive the format audit spec, improve it, add a check-dependency-minmax skill, stop AGENTS.md from recommending direct CHANGES.md edits, fix the relative import path in `.claude/CLAUDE.md`. [#5559](#5559) [#5597](#5597) [#5580](#5580) [#5576](#5576) [#5604](#5604) (by @lgritz / Larry Gritz, @jinhgkim / Jinnie Kim)

v3.1.19.0

Toggle v3.1.19.0's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lgritz Larry Gritz
v3.1.19.0

Release 3.1.19.0 (Oct 27, 2026) -- compared to 3.1.18.1
---------------------------------------------------------
  - *platform.h*: Add `OIIO_NOINLINE` macro (complement to `OIIO_FORCEINLINE`). [#5626](#5626) (by @lgritz / Larry Gritz)
  - *ImageInput*: `check_open()` now applies `limits:resolution` to the display window and tile sizes, and `limits:imagesize_MB` to a single tile, so tiny corrupt files can no longer trigger enormous allocations. Failed ImageBuf allocations are now handled gracefully by ImageBuf, IBA, and maketx. [#5519](#5519) (by @lgritz / Larry Gritz)
  - *ImageInput*: Prevent integer overflow in the generic read paths for files with very large data window origins, and copy only the in-range part of partial edge tiles. [#5494](#5494) (by @lgritz / Larry Gritz)
  - *IBA*: Don't index `channelnames` past its size for images with more channels than `limits:channels` (e.g., from `channel_append`). [#5607](#5607) (by @lgritz / Larry Gritz)
  - *oiiotool*: Don't read past an empty `--info` result when `--metamatch` matches nothing. [#5537](#5537) (by @zachlewis / Zach Lewis)
  - *iconvert*: Use a private ImageCache to gather subimage specs, fixing an abort at exit when converting to multi-subimage formats such as OpenEXR. [#5508](#5508) (by @zachlewis / Zach Lewis)
  - *dpx*: Reader fixes: detect truncated pixel data instead of returning uninitialized buffer contents, and avoid integer overflow in scanline buffer offsets. [#5554](#5554) [#5568](#5568)
  - *dpx*: Writer mishandled subimages that differ from the first, which could read past the end of a buffer and copy heap memory into the output file. Subimages of differing resolution are now rejected, and each element's descriptor comes from its own subimage. [#5608](#5608)
  - *iff*: Zero-fill the tile staging buffer before decode, so corrupt files missing tiles don't reveal stale heap data. [#5466](#5466)
  - *jpegxl*: Propagate encoder and write failures that occur at `close()`, reject incomplete pixel buffers, and don't leak buffered scanlines into a reused output. [#5509](#5509) (by @zachlewis / Zach Lewis)
  - *pnm*: Reject out-of-range maxval; avoid int overflow when scaling 16-bit samples. [#5592](#5592)
  - *sgi*: Bounds check the RLE run value byte for 8 bit data. [#5513](#5513)
  - *tiff*: Int overflow safety in the TIFF writer for very large scanlines or tiles. [#5613](#5613)
  - *build*: Accept commas as well as semicolons in the `OpenImageIO_{REQUIRED,OPTIONAL,BUILD_MISSING,BUILD_LOCAL}_DEPS` list options. [#5499](#5499)
  - *test*: Every test now gets this build's Python bindings on `PYTHONPATH`, so plain `ctest` works without the Makefile wrapper. [#5553](#5553)
  - *test*: Add `redirect_push()` and `redirect_pop()` to runtest.py, fixing heif test failures on a second run. [#5476](#5476)
  - *ci*: Adjust for GitHub runner changes: remove MacOS 14 tests [#5532](#5532), pin Linux wheel job to ubuntu-24.04 [#5621](#5621), bump docs workflow dependency versions for ubuntu-26.04.

v3.2.1.3

Toggle v3.2.1.3's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lgritz Larry Gritz
v3.2.1.3

Release 3.2.1.3 (Oct 15, 2026) -- compared to 3.2.1.2
-----------------------------------------------------
Another no-change release tag to force a Python 3.15 wheel publish.
Sorry.

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lgritz Larry Gritz

v3.2.1.1

Toggle v3.2.1.1's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lgritz Larry Gritz
v3.2.1.1

Release 3.2.1.1 (Oct 2, 2026) -- compared to 3.2.1.0
----------------------------------------------------
  - *fix(ImageInput/Output)*: Honor the data window origin in the `image_span` read/write methods. [#5531](#5531)
  - *fix(docs)*: Fix oiiotool man page generation errors with gawk. [#5528](#5528)

v3.1.18.1

Toggle v3.1.18.1's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lgritz Larry Gritz
v3.1.18.1

Release 3.1.18.1 (Oct 2, 2026) -- compared to 3.1.18.0
---------------------------------------------------------
  - *fix(ImageInput/Output)*: Honor the data window origin in the `image_span` read/write methods. [#5531](#5531)
  - *fix(docs)*: Fix oiiotool man page generation errors with gawk. [#5528](#5528)

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lgritz Larry Gritz

v3.1.18.0

Toggle v3.1.18.0's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lgritz Larry Gritz
v3.1.18.0

Release 3.1.18.0 (Oct 1, 2026) -- compared to 3.1.17.0
---------------------------------------------------------
  - *dpx*: Ignore end-of-line padding when writing; a crafted DPX could make the writer read past the end of its buffer during dpx-to-dpx conversion. [#5472](#5472) (by @lgritz / Larry Gritz)
  - *dpx*: Don't add to the metadata any userdata that failed to read (avoids exposing uninitialized memory). [#5467](#5467) (by @lgritz / Larry Gritz)
  - *fits*: Avoid out-of-range float to int conversion in header values. [#5497](#5497)
  - *heif*: Fix raw reads of `irot`-rotated files: transposed dimensions, out-of-bounds read, and inverted rotation direction. [#5448](#5448) (by @TomRoyls / Tom Royls)
  - *iff*: Guard against a nonsensical zbuf chunk size. [#5458](#5458)
  - *tiff*: The tiled reader now handles CMYK and odd bit depths (the same class of problem fixed for scanlines in 3.1.16.0). [#5475](#5475)
  - *tiff*: Invalidate reader state when `seek_subimage` rejects a subimage. [#5468](#5468)
  - *idiff*: Fail on pixel read errors instead of comparing uninitialized data (which could produce a false PASS); `oiiotool --diff` gets the same fix. [#5503](#5503)
  - *fmath.h*: Make `float_to_rational` work for all float inputs, including out-of-range and non-finite values. [#5477](#5477)
  - *build*: Make the installed static OIIO CMake config stand alone, so downstream projects can `find_package` and link a static build. [#5363](#5363) (by @zachlewis / Zach Lewis)
  - *build*: With `IGNORE_HOMEBREWED_DEPS=ON`, keep Homebrew out of local dependency child builds. [#5361](#5361) (by @zachlewis / Zach Lewis)
  - *ci*: Bump to the latest ASWF containers; drop the now-broken 2022 containers in favor of the ubuntu "oldest" job. Show dependency versions in the GHA summary; exclude `build/testsuite/common` from failure artifacts. [#5440](#5440) [#5453](#5453)
  - *ci*: Raise the ABI check reference commit to 3.1.17.0. [#5441](#5441)
  - *docs*: Convert Sphinx documentation from RST to MyST Markdown. [#5449](#5449)
  - *docs*: Updates and revisions to the AI coding policy. [#5116](#5116) [#5446](#5446)

v3.2.0.5-rc1

Toggle v3.2.0.5-rc1's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lgritz Larry Gritz
v3.2.0.5-rc1

Release 3.2.0.5 (RC1) (September 27, 2026) -- compared to 3.2.0.4-beta2
------------------------------------------------------------------------
- *oiiotool*: Expressions gain a `format()` string-formatting operator (std::format/Python-style replacement fields). [#5481](#5481) (by @nafisab / Nafisa Baker) [#5486](#5486)
- *iv*: Image wipe compare, to interactively reveal one image over another. [#5480](#5480) (by @nshelton / Nick Shelton)
- *iv*: Tolerate partially-written EXR files; new `iv --missing-pixels {tolerate,strict}` option. [#5463](#5463) (by @linsen458-spec / Ethan Lin)
- *iv*: "Save window" saves only the visible region. [#5479](#5479) (by @orelsin / Aurele Boquet)
- *IBA*: `IBA::decorr_stretch()` and `oiiotool --decorrstretch` decorrelation stretch. [#5478](#5478) (by @lgritz / Larry Gritz)
- *ImageInput*: Don't leave a rejected subimage as current (dds, dpx, fits, gif, heif, ico, openexr, ptex); also fixes a HEIF off-by-one and a GIF seek bug. [#5470](#5470)
- *python*: Avoid exceptions when decoding non-UTF-8 data from string attrs. [#5485](#5485) (by @nrusch / Nathan Rusch)
- *dpx*: Don't add unreadable userdata to metadata. [#5467](#5467)
- *dpx*: Ignore end-of-line padding when writing. [#5472](#5472)
- *fits*: Avoid out-of-range float-to-int conversion in header values. [#5497](#5497)
- *fmath*: Fix `float_to_rational()` for the full range of float inputs. [#5477](#5477)
- *idiff*: Fail on pixel read errors instead of comparing garbage. [#5503](#5503)
- *iff*: Zero-fill tile staging buffer before decode to avoid heap reveal. [#5466](#5466)
- *jpeg*: Bounds-check embedded thumbnail's Exif marker-segment fields. [#5455](#5455)
- *jpeg2000*: Fix stack-use-after-return in OpenJPH's static error handler. [#5461](#5461)
- *openexr*: Add support for the `lj2k` and `zstd` compression modes. [#5495](#5495) (by @QuantaDude / Abhirup Bhattacharyya)
- *openexr*: Follow CIF for color interop ID inheritance/validation in multi-part files. [#5422](#5422) (by @brechtvl / Brecht Van Lommel)
- *pnm*: Fix PFM row scrambling when writing in multiple chunks. [#5492](#5492) (by @linsen458-spec / Ethan Lin)
- *psd*: Bounds-check thumbnail, color data, and layer channel lengths. [#5457](#5457)
- *tiff*: Fix heap buffer overflow writes in the tiled reader for CMYK/planarconfig=separate. [#5475](#5475)
- *tiff*: Clamp RowsPerChunk to image height, validate field types. [#5496](#5496)
- *build*: Fix the installed static OIIO config to stand alone. [#5363](#5363) (by @zachlewis / Zach Lewis)
- *build*: Retry dependency git clones on failure. [#5488](#5488)
- *deps*: Raise default auto-build versions: OpenJPH 0.32.0, OpenEXR 3.4.15, Imath 3.2.3. [#5484](#5484) [#5487](#5487)
- *deps*: Add zstd auto-build, enable zstd in auto-built libtiff. [#5498](#5498)
- *tests*: Test the oiiotool 'Channel reordering and padding' doc examples. [#5464](#5464) (by @linsen458-spec / Ethan Lin)
- *tests*: `runtest.py` refactoring to align with OSL. [#5502](#5502)
- *docs*: Strip quote-box styling from indented supplementary content. [#5469](#5469)
- *docs*: Convert ImageOutput example code into tests. [#5483](#5483) (by @laurenzhang-dwa / Lauren Zhang)

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lgritz Larry Gritz