OpenImageIO v2.5.4.0
Release 2.5 (2.5.4.0, Oct 1, 2023) -- compared to 2.4
New minimum dependencies and compatibility changes:
- CMake: minimum needed to build OpenImageIO has been raised from 3.12 to
3.15. #3924 (2.5.2.1) - LibRaw: minimum has ben raised from 0.15 to 0.18.
#3921 (2.5.2.1) - The new OpenEXR minimum is 2.4 (raised from 2.3).
#3928 (2.5.2.1) - The new
fmt
library minimum is 7.0 (raised from 6.1)
#3973 (2.5.3.0) - The new libjpeg-turbo (if used; it is optional) has been raised to
2.1. #3987 (2.5.3.1-beta2)
⛰️ New features and public API changes:
- TextureSystem color management: #3761 (2.5.1.0)
- TextureOpt and TextureOptBatch have a new field,
colortransformid
,
which supplies an integer ID for a requested color space transformation
to be applied as texture tiles are read. The default value 0 means no
transformation because the texture is presumed to be in the working
color space (this is the old behavior, and most performant). Tiles from
the same texture file but using different color transformations are
allowed and will not interfere with each other in the cache. - New
TextureSystem::get_colortransform_id(from, to)
maps from/to named
color spaces to a color transform ID that can be passed to texture
lookup calls. ImageCache::get_image_handle
andTextureSystem::get_texture_handle
now take an optionalTextureOpt*
parameter that can supply additional
constraints (such as color transformation) that TS/IC implementations
may wish to split into separate handles. This is currently not used, but
is reserved so that the API doesn't need to be changed if we use it in
the future.- texture.h defines symbol
OIIO_TEXTURESYSTEM_SUPPORTS_COLORSPACE
that
can be tested for existence to know if the new fields are in the
TextureOpt structure.
- TextureOpt and TextureOptBatch have a new field,
- Extensive support for OpenColorIO 2.2 functionality and improved color
management:- When building against OCIO 2.2, you can specify/use the new "built-in"
configs, including usingocio://default
, which will automatically be
usd if no config is specified and the$OCIO
variable is not set #3662
#3707 (2.5.0.0) - OIIO tries to find and honor the common color space aliases
"scene_linear", "srgb", "lin_srgb", and "ACEScg". When building against
OCIO 2.2+, it will know which of any config's color spaces are
equivalent to these, even if they are named something totally different,
thanks to the magic of OCIO 2.2 built-in configs. For older OCIO (2.1 or
older), it is less robust and may have to make best guesses based on the
name of the color spaces it finds. #3707 (2.5.0.0)
#3995 (2.5.3.2-rc1) - New ColorConfig methods:
getAliases()
#3662;isColorSpaceLinear()
#3662;resolve(name)
turns any color space name, alias, role, or OIIO
name (like "sRGB") into a canonical color space name;
equivalent(n1,n2)
returns true if it can tell that the two names
refer, ultimately, to equivalent color spaces #3707 (2.5.0.0) - New
ImageSpec::set_colorspace()
method is a more thorough way to set
the color space data than simply setting the "oiio:ColorSpace" metadata
(though it also does that). #3734 (2.5.0.1) - Improve OIIO's ability to guess which of the config's color space names
are aliases for common spaces such as srgb, lin_srgb, and acescg (quite
robustly if using OCIO >= 2.2, even for totally nonstandard names in the
config). #3755 (2.5.0.1) - New
ColorConfig::getColorSpaceIndex()
looks up a color space index by
its name, alias, or role. #3758 (2.5.0.1)
- When building against OCIO 2.2, you can specify/use the new "built-in"
- oiiotool new commands and features:
- New
--iccread
and--iccwrite
add an ICC profile from an external
file to the metadata of an image, or extract the ICC profile metadata
and save it as a separate file. #3550 (2.5.0.0) - New
--parallel-frames
parallelizes execution over a frame range rather
than over regions within each image operation. This should be used with
caution, as it will give incorrect results for an oiiotool command line
involving a frame range where the iterations have a data dependency on
each other and must be executed in order. But in cases where the order
of frame processing doesn't matter and there are many more frames in the
sequence than cores, you can get a substantial performance improvement
using this flag. #3849 (2.5.2.0) - New
--no-error-exit
causes an error to not exit immediately, but
rather to try to execute the remaining command line operations. This is
intended primarily for unit tests and debugging. #3643 (2.5.0.0) - New
--colorconfiginfo
prints the full inventory of color management
information, including color space aliases, roles, and with improved
readability of output for larger configs. #3707 (2.5.0.0) - The
--resize
command takes new optional:from=
,:to=
, and
:edgeclamp=
modifiers to give more general and fine control over the
specific correspondence between display windows in the input image and
resized destination image (including allowing partial pixel offsets).
#3751 #3752 (2.5.0.1) - New expression substitution additions:
- New syntax for retrieving metadata
{TOP[foo]}
is similar to the
existing{TOP.foo}
, if there is nofoo
metadata found, the
former evaluates to an empty string, whereas the latter is an error.
#3619 (2.4.5/2.5.0.0) {NIMAGES}
gives current stack depth
#3822 (2.5.2.0){nativeformat}
is the pixel data format of the file, whereas the
existingformat
has always returned the data type used in memory.
Also,METANATIVE
andMETANATIVEBRIEF
are the full metadata
keywords for native file metadata, comapred to the previously
existingMETA
andMETABRIEF
which we now clarify reflect the
in-memory representation. #3639 (2.5.0.0)
- New syntax for retrieving metadata
--ociodisplay
now takes an optional:inverse=1
modifier. #3650
(2.5.0.0)- New
-otex
optional modifierforcefloat=0
can improve memory use for
enormous texture conversion.
#3829 (2.5.2.0) --printinfo
now takes new optional modifiers::native=1
ensures
that the metadata printed is of the file, not changed by the way the
image is stored in memory (for example, it may have been converted to
a more convenient in-memory data type);:verbose=1
prints verbose
stats even if-v
is not used;:stats=1
prints full pixel stats,
even if--stats
is not used. #3639 (2.5.0.0)- New
--normalize
mormalizes image that represent 3D vectors (i.e.,
divide by their length) textures. This is helpful for normal maps.
#3945 (by Vlad (Kuzmin) Erium) (2.5.3.0)
- New
- ImageBufAlgo additions:
- ImageBuf changes:
- ImageBuf: Only back IB with IC when passed an IC
#3986 (2.5.3.1-beta2)
- ImageBuf: Only back IB with IC when passed an IC
- ImageInput / ImageOutput:
- New
ImageOutput::check_open()
method can be used by format writers
authors to centralize certain validity tests so they don't need to be
implemented separately for each file type. This is not meant to be
called by client application code, only by format writer authors. #3686
(2.5.0.0) - Add an
ImageInput::valid_file(IOProxy)
overload
#3826 (by Jesse Y)
(2.5.2.0) and implement its overloads for DDS, PSD, and WEBP
#3831 (by Jesse Y)
(2.5.2.0) - New
ImageOutput::check_open()
andImageInput::open_check()
can be
used by format reader/writer authors to centralize certain validity
tests so they don't need to be implemented separately for each file
type. This is not meant to be called by client application code, only by
format reader/writer authors.
#3686 (2.5.0.0)
#3967 (2.5.3.0) - ImageInput: Add an ImageInput::valid_file(IOProxy) overload
#3826 (by Jesse Y) (2.5.2.0) - ImageInput: Implement valid_file(IOProxy) overloads for DDS, PSD, and
WEBP #3831 (by Jesse
Y) (2.5.2.0)
- New
- New top-level
namespace OIIO
functions: - OIIO::getattribute() new queries:
font_list
,font_file_list
,font_dir_list
return, respectively, the
list of fonts that OIIO found, the list of full paths to font files, and
the list of directories searched for fonts. All return a single string
that is a semicolon-separated list of the items. #3633 (2.5.0.0)opencolorio_version
returns the human-readable (e.g. "2.2.0") version
of OpenColorIO that is being used. #3662 (2.5.0.0)
- Python bindings:
- Implement
ImageCache.get_imagespec()
#3982 (2.5.3.1-beta2)
- Implement
- IOProxy support for additional file formats: SGI #3641, RLA #3642, IFF #3647
(2.5.0.0), ICO input #3919
(by jasonbaumeister) (2.5.2.0) - Remove long deprecated/nonfunctional C API headers #3567
🚀 Performance improvements:
- Fixed some ImageBuf and IBA internals to avoid unnecessary/redundant zeroing
out of newly allocated buffer memory. #3754 (2.5.0.1) - oiiotool:
--parallel-frames
parallelizes execution over a frame
range rather than over regions within each image operation.
#3849 (2.5.2.0) - psd: Improve memory efficiency of PSD read
#3807 (2.5.2.0) - Improvements to performance and memory when making very large textures
#3829 (2.5.2.0) - OpenEXR: Change to using exr-core for reading by default #3788
- TextureSystem: Improve texture lookup performance by remove redundant
instructions from tile hash #3898 (by Curtis Black) (2.5.2.0) - oiiotool:
--mosaic
improvements to type conversion avoid unnecessary
copies and format conversions. #3979 (2.5.3.1-beta2)
🐛 Fixes and feature enhancements:
- ImageInput: fix typo in debug output #3956 (by Jesse Yurkovich)
- Python bindings:
- Add ability to
getattribute()
of int64 and uint64 data #3555 (2.5.0.0) - Fixed ability to add and retrieve
uint8[]
metadata, which on the
python side will be numpy arrays of type uint8 (dtype='B'). This is
important for being able to set and retrieve "ICCProfile" metadata.
#3556 (2.5.0.0) - Eliminate redundant code in Python IBA bindings #3615
- Improve error messages for when passing incorrect python array sizes.
#3801 (2.5.1.0) - Fix arithmetic overflow in oiio_bufinfo (Python interop) #3931 (by Jesse Yurkovich) (2.5.2.0)
- Add ability to
- ImageBuf improvements:
- Fixes to subtle bugs when ImageBuf is used with IOProxy. #3666
(2.4.6/2.5.0.0) - Auto print uncaught ImageBuf errors. When an IB is destroyed, any errors
that were never retrieved viageterror()
will be printed, to aid users
who would not notice the errors otherwise.
#3949 (2.5.3.0) - oiiotool now does immediate reads without relying on an ImageCache,
unless the--cache
option is used, which now both enables the use of
an underlying IC as well as setting its size.
#3986 (2.5.3.1-beta2)
- Fixes to subtle bugs when ImageBuf is used with IOProxy. #3666
- ImageBufAlgo improvements:
- make_texture() / maketx / TextureSystem / ImageCache:
- Ensure proper setting of certain metadata when using a texture as a
source to build another texture. #3634 (2.4.5/2.5.0.0) - Minor improvements in statistics printing for IC. #3654 (2.5.0.0)
- When creating a texture, don't overwrite an existing DateTime metadata
in the source file. #3692 (2.5.0.0) - Fix environment mapping in batch mode when >4 channels are requested in
a lookup. #3694 (2.5.0.0) - Fixed
maketx --lightprobe
, which never worked properly for images
that weren'tfloat
pixel data type. #3732 (2.5.0.0/2.4.7.0) - Fix bad handling of
maketx --cdf
, which was trying to take an extra
command line argument that it didn't need. #3748 (2.5.0.1) - Improve IC statistics appearance by omitting certain meaningless stats
when no files were read by the IC/TS. #3765 (2.4.9.0/2.5.0.1) - Fixes that avoid deadlock situations on the file handle cache in certain
scenarios with very high thread contention. #3784 (2.4.10.0/2.5.0.3) - maketx and oiiotool --otex: Add support for CDFs of bumpslopes channels.
Previously, if you used both --bumpslopes and --cdf at the same time,
the CDFs were not produced for all channels. #3793 (by Tom Knowles) (2.4.10.0/2.5.1.0)
- Ensure proper setting of certain metadata when using a texture as a
- oiiotool improvements:
- When
-q
(quiet mode) is used, and when an error occurs, only print the
error message and not the full help message. #3649 (2.5.0.0) - Fix problems with
--point
when there is no alpha channel. #3684
(2.4.6/2.5.0.0) --dumpdata
fix channel name output. #3687 (2.4.6/2.5.0.0)--help
now prints a much abbreviated color management section (just the
OCIO version and config file). Use the new--colorconfiginfo
argument
to print the full color management information, which is both more
readable and more detailed than what--help
used to print. #3707
(2.5.0.0)- Don't propagate unsupported channels
#3838 (2.5.2.0) - oiiotool: Work around static destruction order issue #3295 #3591 (by Aras Pranckevičius)
- When
- ICC Profiles found in JPEG, JPEG-2000, PSN, PSD, and TIFF files are now
examined and several key fields are extracted as separate metadata. #3554
(2.5.0.0) - Various protections against corrupted files #3954 (2.5.3.0)
- BMP:
- Fix reading 16bpp images. #3592 (by Aras Pranckevičius) (2.4.5/2.5.0.0)
- Protect against corrupt pixel coordinates. (TALOS-2022-1630,
CVE-2022-38143) #3620 (2.4.5/2.5.0.0) - Fix possible write errors, fixes TALOS-2022-1653 / CVE-2022-43594,
CVE-2022-43595. #3673 (2.4.6/2.5.0.0) - Mark color space as sRGB, which seems likely to be true of any BMP
files anybody encounters. #3701 (2.5.0.0) - Fix signed integer overflow when computing total number of pixels
#3948 (by xiaoxiaoafeifei) (2.5.3.0)
- DDS:
- Fix heap overflow in DDS input. #3542 (2.5.0.0)
- Improved support for DTX5, ATI2/BC5 normal maps, R10G10B10A2
format, RXGB, BC4U, BC5U, A8, improved low bit expansion to 8 bits.
#3573
(by Aras Pranckevičius)(2.4.4.2/2.5.0.0) - Fix alpha/luminance files, better testing. #3581 (by Aras Pranckevičius) (2.4.5/2.5.0.0)
- Optimize loading of compressed images, improves 3-5x. #3583 (by Aras Pranckevičius) #3584
(2.4.5/2.5.0.0) - Honor ImageInput thread policy #3584
- Fix crashes for cubemap files when a cube face was not present, and
check for invalid bits per pixel. (TALOS-2022-1634, CVE-2022-41838)
(TALOS-2022-1635, CVE-2022-41999) #3625 (2.4.5/2.5.0.0)
(TALOS-2022-1635, CVE-2022-41999) #3625 (2.4.5/2.5.0.0) - Fix divide-by-0 during DXT4 DDS load #3959 (by Jesse Yurkovich) (2.5.3.0)
- DPX:
- Fix possible write errors, fixes TALOS-2022-1651 / CVE-2022-43592 and
TALOS-2022-1652 / CVE-2022-43593. #3672 (2.4.6/2.5.0.0)
- Fix possible write errors, fixes TALOS-2022-1651 / CVE-2022-43592 and
- FITS:
- Ensure that the file is closed if open fails to find the right magic
number. #3771 (2.5.1.0)
- Ensure that the file is closed if open fails to find the right magic
- GIF:
- HEIC:
- Support the ".hif" extension, which seems to be used by some Canon
cameras instead of .heif.
#3813(by AdamMainsTL)
- Support the ".hif" extension, which seems to be used by some Canon
- HDR:
- ICO:
- Heap-buffer-overflow #3872 (by xiaoxiaoafeifei) Fixes CVE-2023-36183.
- IFF:
- Protect against 0-sized allocations. #3603 (2.5.0.0)
- IOProxy support. #3647 (2.4.6/2.5.0.0)
FIXME Temporarily disable IOProxy support to avoid bugs in #3760
(2.5.0.1) - Fix possible write errors, fixes TALOS-2022-1654 / CVE-2022-43596,
TALOS-2022-1655 / CVE-2022-43597 CVE-2022-43598, TALOS-2022-1656 /
CVE-2022-43599 CVE-2022-43600 CVE-2022-43601 CVE-2022-43602 #3676
(2.4.6/2.5.0.0) - Catch possible exception, identified by static analysis #3681
- JPEG
- jpeg: Fix density calculation for jpeg output
#3861 (2.5.2.0) (by
Loïc Vital)
- jpeg: Fix density calculation for jpeg output
- JPEG2000:
- Better pixel type promotion logic #3878 (2.5.2.0)
- OpenEXR:
- Fix potential use of uninitialized value when closing. #3764 (2.5.0.1)
- Try to improve exr thread pool weirdness
#3864 (2.5.2.0) - Controlled shutdown of IlmThread pool in all apps in which we use it.
#3805 (2.5.2.0) - Correction to dwa vs zip logic when outputting OpenEXR #3884 (2.5.2.0)
- Enable openexr core library by default when recent enough
#3942 (2.5.3.0)
- PBM:
- Fix accidental inversion for 1-bit bitmap pbm files. #3731
(2.5.0.0/2.4.8.0)
- Fix accidental inversion for 1-bit bitmap pbm files. #3731
- PNG:
- Fix memory leaks for error conditions. #3543 #3544 (2.5.0.0)
- Add EXIF write support to PNG output. #3736 (by Joris Nijs) (2.5.0.1)
- Write out proper tiff header version in png EXIF blobs
#3984 (by Jesse
Yurkovich) (2.5.3.1-beta2) - A variety of minor optimizations to the PNG writer
#3980 (2.5.3.2-rc1) - Improve PNG write data quality when alpha is low
#3985 (2.5.3.2-rc1)
- PSD:
- Fix a PSD read error on ARM architecture. #3589 (2.4.5/2.5.0.0)
- Protect against corrupted embedded thumbnails. (TALOS-2022-1626,
CVE-2022-41794) #3629 (2.4.5/2.5.0.0) - Fix thumbnail extraction. #3668 (2.4.6/2.5.0.0)
- When reading, don't reject padded thumbnails. #3677 (2.4.6/2.5.0.0)
- Fix wrong "oiio:UnassociatedAlpha" metadata. #3750 (2.5.0.1)
- Handle very wide images with more than 64k resolution in either
direction. #3806 (2.5.1.0/2.4.11) - Improve memory efficiency of PSD read #3807 (2.5.2.0)
- Prevent simultaneous psd thumbnail reads from clashing #3877
- CMYK PSD files now copy alpha correctly #3918 (by jasonbaumeister) (2.5.2.0)
- RAW:
- RLA:
- Fix potential buffer overrun. (TALOS-2022-1629, CVE-2022-36354) #3624
(2.4.5/2.5.0.0) - IOProxy support. #3642 (2.5.0.0)
- Fix possible invalid read from an empty vector during RLA load
#3960 (by Jesse Yurkovich) (2.5.3.0)
- Fix potential buffer overrun. (TALOS-2022-1629, CVE-2022-36354) #3624
- SGI:
- IOProxy support. #3641 (2.5.0.0)
- Targa:
- Fix incorrect unique_ptr allocation. #3541 (2.5.0.0)
- Fix string overflow safety. (TALOS-2022-1628, CVE-2022-41981)
#3622 (2.4.5/2.5.0.0) - Guard against corrupted tga files Fixes TALOS-2023-1707 /
CVE-2023-24473, TALOS-2023-1708 / CVE-2023-22845. #3768 (2.5.1.0/2.4.8.1)
- TIFF:
- Guard against corrupt files with buffer overflows. (TALOS-2022-1627,
CVE-2022-41977) #3628 (2.4.5/2.5.0.0) - Guard against buffer overflow for certain CMYK files. (TALOS-2022-1633,
CVE-2022-41639) (TALOS-2022-1643, CVE-2022-41988)
#3632 (2.4.5/2.5.0.0) - While building against the new libtiff 4.5, use its new per-tiff error
handlers to ensure better thread safety. #3719 (2.5.0.0/2.4.8.0) - Better logic for making TIFF PhotometricInterpretation tag and
oiio:ColorSpace metadata correspond to each other correctly for TIFF
files. #3746 (2.5.0.1) - Fix: race condition in TIFF reader, fixes TALOS-2023-1709 /
CVE-2023-24472. #3772 (2.5.1.0/2.4.8.1) - Disable writing TIFF files with JPEG compression -- it never worked
properly and we can't seem to fix it. The fact that nobody noticed that
it never worked is taken as evidence that nobody needs it. If asked for,
it just uses the default ZIP compression instead. The TIFF reader can
still read JPEG-compressed TIFF files just fine, it's only writing that
appears problematic. #3791 (2.5.0.4)
- Guard against corrupt files with buffer overflows. (TALOS-2022-1627,
- Zfile:
- Zfile write safety, fixes TALOS-2022-1657 / CVE-2022-43603. #3670
(2.4.6/2.5.0.0)
- Zfile write safety, fixes TALOS-2022-1657 / CVE-2022-43603. #3670
- Exif (all formats that support it, TIFF/JPEG/PSD):
- Fix EXIF bugs where corrupted exif blocks could overrun memory.
(TALOS-2022-1626, CVE-2022-41794) (TALOS-2022-1632, CVE-2022-41684)
(TALOS-2022-1636 CVE-2022-41837) #3627 (2.4.5/2.5.0.0) - Fix typo that prevented us from correctly naming Exif
"CameraElevationAngle" metadata.
#3783 (by Fabien
Castan) (2.4.10.0/2.5.1.0) - Convert paramvalue string to integer when needed #3886 (by Fabien Servant @ TCS) (2.5.2.0)
- Squash some alignment problems caught by ubsan #3646
- Fix EXIF bugs where corrupted exif blocks could overrun memory.
- Fix missing OIIO::getattribute support for
limits:channels
and
limits:imagesize_MB
. #3617 (2.4.5/2.5.0.0) - IBA::render_text and
oiiotool --text
now can find ".ttc" font files. #3633
(2.5.0.0) - Fix ImageOutput::check_open error conditions. #3769 (2.5.1.0)
- Fix thread safety issue when reading ICC profiles from multiple files
simultaneously. This could affect any files with ICC profiles. #3767
(2.5.1.0) - Improve searching for fonts for the text rendering functionality. #3802
#3803 (2.5.1.0) - Improve OpenCV support -- errors, version, half
#3853 (2.5.2.0) - Prevent possible deadlock when reading files with wrong extensions
#3845 - Wait for terminated threads to join in thread_pool::Impl::resize #3879 (by Ray Molenkamp)
🔧 Internals and developer goodies
- filesystem.h:
- Add an optional size parameter to
read_text_file()
to limit the
maximum size that will be allocated and read (default to a limit of
16MB). Newread_text_from_command()
is similar toread_text_file
,
but reads from the console output of a shell command. #3635 (2.5.0.0) - New
Filesystem::is_executable()
andfind_program()
. #3638
(2.4.6/2.5.0.0) - Change IOMemReader constructor to take a const buffer pointer. #3665
(2.4.6/2.5.0.0) - IOMemReader::pread now detects and correctly handles out-of-range
read positions. #3712 (2.4.7/2.5.0.0)
- Add an optional size parameter to
- fmath.h:
- platform.h:
- New macros for detecting MSVS 2019 and 2022. #3727 (2.5.0.0/2.4.8.0)
- simd.h:
- span.h:
- string_view.h:
- Avoid sanitizer warning unsigned integer overflow #3678(by wayne-arnold-adsk)
- strutil.h:
- Add a new flavor of
utf16_to_utf8()
to convert between std::u16string
and std::string (UTF-8 encoded). Note the contrast between this and the
existing flavor that takes astd::wstring
with UTF-16 encoding
(std::wchar/wstring
is not guaranteed to 16 bits on all platforms, but
u16char/u16string
is). #3553 (2.5.0.0) - New
trimmed_whitspace()
. #3636 (2.4.5/2.5.0.0) - Use std::forward properly for sync::print().
#3825 (2.5.2.0) - Ensure proper constexpr of string hashing #3901
- Add a new flavor of
- timer.h:
- Minor improvements to Timer and LoggedTimer classes. #3753 (2.5.0.1)
- tiffutils.h:
decode_icc_profile
extracts several fields from an ICC profile binary
blob and adds them as metadata to an ImageSpec. #3554 (2.5.0.0)
- typedesc.h:
- Extend TypeDescFromC template to the full set of pixel types. #3726
(2.5.0.0/2.4.8.0)
- Extend TypeDescFromC template to the full set of pixel types. #3726
- ustring.h:
- Make
std::hash
work for ustring, addoperator<
for ustringhash, add
from_hash()
to ustringhash, make ustringhash==
and!=
be
constexpr for C++17 and beyond. #3577 (2.4.5/2.5.0.0) - Custom fmt formatter for ustringhash that prints the string rather than
the hash. #3614 (2.4.5/2.5.0.0) - Ensure that ustring hashes are always 64 bits, even on 32-bit
architectures. #3606 (2.5.0.0) - Ensure safe use of this header from Cuda. #3718 (2.4.7/2.5.0.0)
- ustringhash: Make an explicit constructor from a hash value.
#3778 (2.4.9.0/2.5.1.0) - String literal operator for ustring and ustringhash
#3939 (2.5.3.0) - Fix Cuda warnings #3978 (2.5.3.1-beta2)
- Make
- Safety: excise the last instances of unsafe sprintf. #3705 (2.5.0.0)
- Root out stray uses of deprecated simd type names;
OIIO_DISABLE_DEPRECATED
#3830 (2.5.2.0) - Convert iconvert.cpp stream io and sprintf to modern #3925
- oiiotool: Refactor to get rid of the global Oiiotool singleton.
#3848 (2.5.2.0)
🏗 Build/test/CI and platform ports:
-
CMake build system and scripts:
- It is now possible to
-DOpenImageIO_VERSION
to override the version
number being built (use with extreme caution). #3549 #3653 (2.5.0.0) - Perform parallel builds with MSVS. #3571 (2.5.0.0)
- New CMake cache variable
FORTIFY_SOURCE
, if enabled, builds with the
specified gcc_FORTIFY_SOURCE
option defined. This may be desirable
for people deploying OIIO in security-sensitive environments. #3575
(2.4.5/2.5.0.0) - CMake config should not include a find of fmt if it's internalized.
#3739 (2.4.7.1/2.5.0.0) - New CMake cache variable
OIIO_DISABLE_BOOST_STACKTRACE
to disable the
stacktrace functionality for users who want to avoid the Boost
stacktrace library. #3777 (by jreichel-nvidia) (2.4.9.0/2.5.1.0) - Check need for libatomic with check_cxx_source_compiles instead of the
more expensive check_cxx_source_runs. #3774 (2.4.9.0/2.5.1.0) - Fix incorrect CMake variable name to control symbol visibility
#3834 (2.5.2.0) - Make sure use of
${PROJECT_NAME}
doesn't occur before the call to
project()
. #3651 - Fix use of OIIO_LOCAL_DEPS_PATH #3865
- Added check for Boost_NO_BOOST_CMAKE, ignore if already set
#3961 (by Mikael Sundell) (2.5.3.0) - Remove unnecessary headers from strutil.cpp causing build trouble
#3976 (by Jesse Yurkovich) (2.5.3.1-beta2) - Print build-time warnings for LGPL gotchas
#3958 (by Danny Greenstein) (2.5.3.1-beta2)
- It is now possible to
-
Dependency support:
- Support for OpenColorIO 2.2. #3644 (2.5.0.0)
- New CMake option
INTERNALIZE_FMT
(default ON), if set to OFF, will
force OIIO clients to use the system fmt library and will not copy the
necessary fmt headers into the OIIO include area. #3598 (2.4.7/2.5.0.0) - build_libtiff.bash changed to build shared library by default. #3586
(2.5.0.0) - build_openexr.bash changed to build v3.1.5 by default. #3703 (by Michael Oliver) (2.5.0.0)
- Qt6 support for iv. #3779 (2.4.9.0/2.5.1.0)
- Fmt 10.0 support #3836 (2.5.2.0)
- FFmpeg 6.0 support #3812 (2.5.2.0)
- Disable new warning for fmt headers in gcc13
#3827 (2.5.2.0) - Raise minimum CMake dependency from 3.12 to 3.15 #3924 (2.5.2.0)
- Raise minimum libraw to 0.18 #3921 (2.5.2.0)
- Raise OpenEXR minimum from 2.3 to 2.4 #3928 (2.5.2.0)
- Fix WebP linking if CMAKE_FIND_PACKAGE_PREFER_CONFIG is ON #3863 (by Benjamin Buch)
- Find OpenEXR equally well with our FindOpenEXR and exr's exported config
file #3862 (by Benjamin
Buch) - Fix fmt vs gcc warning that had version typo #3874
- Fix broken libheif < 1.13 #3970 (2.5.3.0)
- Use exported targets for libjpeg-turbo and bump min to 2.1
#3987 (2.5.3.1-beta2)
-
Testing and Continuous integration (CI) systems:
- Restored sanitizer tests which had been inadvertently disabled. #3545
(2.5.0.0) - Added tests for undefined behavior sanitizer. #3565 (2.5.0.0)
- Added tests or improved test coverage for Cineon files #3607, iinfo
#3605 #3613 #3688 #3706, texture statistics #3612, oiiotool unit tests
#3616, oiiotool expression substitution #3636, various oiiotool #3626
#3637 #3643 #3649, oiiotool control flow #3643, oiiotool sequence errors
and selecting out of range subimages or mip levels #3649, Strutil
functionality #3655, ImageCache #3654, environment mapping #3694,
texture3d #3699, term output #3714, igrep #3715, oiiotool --pdiff #3723,
zover, fixnan for deep images, 2D filters #3730, pbm files #3731, maketx
--lightprobe #3732 (2.5.0.0), TypeDesc::tostring, python ImageCache and
ImageBuf #3745, maketx #3748 (2.5.0.1), ImageBufAlgo python functions
#3766 (2.5.1.0), etc. #3745 - Make testsuite/oiiotool-control run much faster by combining commands
into fewer oiiotool invocations (speeds up testsuite) #3618 (2.5.0.0) - CI color related tests use the OCIO buit-in configs, when OCIO 2.2+ is
available. #3662 (2.5.0.0) - Fix compiler warnings #3833 (2.5.2.0)
- Fix package name for icc #3860 (2.5.2.0)
- Change the few symbolic links to copies to help Windows
#3818 (2.5.2.0) - Fix incorrect branch name when cloning openexr-images for the tests
#3814 (2.5.2.0) (by
Jesse Y) - Sonar analysis should exclude stb_sprintf.h #3609
- Eliminate xxhash and farmhash code from coverage analysis #3621
- No longer add the ppa:ubuntu-toolchain-r/test repository #3671
- Test against latest webp, and deal with its master->main repo change #3695
- Fix broken Mac CI with proper numpy install #3702
- Lock down to older icc so it's not broken #3744
- Updates to runners, dependencies #3786
- Bump 'latest versions' test to the newest openexr release #3796
- Fix broken heif dependency and test #3894
- Add test with new aswf containers for VFX Platform 2023 #3875
- Simplify build_llvm.bash script #3892
- Get rid of long-unused install_test_images.bash #3895
- Test against pybind11 v2.11 #3912
- Lock down icx version #3929
- Fix missing simd test due to copy paste typo #3896
- Bump build_openexr and build_opencolorio defaults to latest versions #3920
- Test both openexr old and core versions #3604
- Add benchmarking of strutil.h ways to concatenate strings. #3787
- Make timer_test more robust #3953 (2.5.3.0)
- Tests for ABI compliance #3983, #3988 (2.5.3.1-beta2)
- Restored sanitizer tests which had been inadvertently disabled. #3545
-
Platform support:
- Windows: protect against OpenEXR thread deadlock on shutdown. #3582
(2.4.5/2.5.0.0) - Windows: Work around a static destruction order issue. #3591
(2.4.5/2.5.0.0) - Windows: define
NOGDI
to keep the inclusion of windows.h from adding
as many unneeded symbols. #3596 (by Aras Pranckevičius) (2.4.5/2.5.0.0) - Windows: Stop including Windows.h from public OIIO headers. #3597 (by Aras Pranckevičius) (2.5.0.0)
- Windows: Fix windows.h pre-definitions
#3965 (2.5.3.0) - Windows on ARM64 build fixes. #3690 (2.4.6/2.5.0.0)
- Windows: Fix unresolved external symbol for MSVS 2017.
#3763 (by Latios96) (2.5.0.1) - Windows: Fix build error with MSVC #3832 (by Ray Molenkamp) (2.5.2.0)
- MinGW: fix incorrect symbol visibility issue for ImageBuf iterators. #3578
- Mac: Suppress warnings about deprecated std::codecvt on newest Apple
clang. #3709 #3710 (2.4.7/2.5.0.0) - Mac: Fixes to make a clean build using Apple Clang 11.0.
#3795 (by johnfea) (2.4.10.0/2.5.1.0) - Mac: Fixes for latest xcode on MacOS 13.3 Ventura #3854 (2.5.2.0)
- Mac: Suppress Xcode warnings #3940 (by Anton Dukhovnikov) (2.5.3.0)
#3722 (2.4.7/2.5.0.0) - Mac: Fixes for latest xcode on MacOS 13.3 Ventura #3854 (2.5.2.0)
- Fixes to make a clean build on Mac using Apple Clang 11.0.
- ARM: Fix signed/unsigned mismatch compiler errors in vbool4 methods.
- ARM: improve SIMD operations for ARM NEON. #3599 (2.4.5/2.5.0.0)
- ARM: Fix signed/unsigned mismatch compiler errors in vbool4 methods.
- ARM Mac: Fix build break. #3735 (2.5.0.0/2.4.7.1)
- Fixes to build properly on OpenBSD. #3808 (by Brad Smith) (2.5.1.0/2.4.11)
- Squash warning in gcc 12.1 + C++20 #3679
- Work around problems with fmt library + NVPTX relating to unknown
float128 type. #3823
(by Edoardo Dominici) - Silence gcc new/delete warnings for texturesys #3944 (by Shootfast) (2.5.3.0)
- Windows: protect against OpenEXR thread deadlock on shutdown. #3582
📚 Notable documentation changes:
- Docs: Better Windows build instructions in INSTALL.md. #3602 (by Aras Pranckevičius) (2.4.5/2.5.0.0)
- ImageInput and ImageOutput docs updated to Python 3. #3866 (by Ziggy Cross)
- Fix explanation of raw:Exposure config hint #3889
- Many fixes to python code examples #3869 (by Jesse Y)
- Update ImageInput docs to not use deprecated APIs #3907 (by Jesse Y)
- New initiative where we are (bit by bit) ensuring that all code examples in
the documentation are tested in the testsuite and can therefore never be
incorrect nor out of date with the evolution of the APIs.
#3977
#3994 (2.5.3.1-beta2) - Spruce up the main README and add "Building_the_docs"
#3991 (2.5.3.1-beta2)
🏢 Project Administration
- Moved repo to https://github.com/AcademySoftwareFundation/OpenImageIO.
Also moved the "oiio-images" repo to AcademySoftareFoundation/OpenImageIO - Added RELEASING.md documenting our versioning and release procedures #3564
#3580 - Update CONTRIBUTING and SECURITY #3852 (2.5.2.0)
- Update mail list to https://lists.aswf.io/g/oiio-dev #3880
- Add charter and other ASWF documents to the repo #3850
- Document use of the DCO which is now required for all PRs #3897
- Put logo on the main readme #3927
- Remove old CLAs that are no longer in effect
- Change open source license to Apache 2.0. #3899, #3903, #3904, #3906, #3914,
#3922, #3926, #3938, #3966, #3989. - Make sure README has links for slack and meetings #3936
- Update pull request and issue templates #3946
- Add Jesse Yurkovich to the TSC #3937