{{ message }}
Repository navigation
Tags: AcademySoftwareFoundation/OpenImageIO
Tags
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 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.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 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)
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 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)
PreviousNext
