Hi Larry,

What I find amazing about OIIO is its depth. Encompassing so many complimentary 
- yet distinctly separate - disciplines, both in 2D and 3D image processing. I 
can only surmise the extent of which your development efforts are propelled by 
a critical user base which you’ve nurtured over many, many years. 
Congratulations for reaching that critical mass, and I expect great things from 
both you and your users moving forward.

Thank you,

 
Chris Spence
Digital Devoid, Inc.
7300 Biscayne Blvd, Suite 405
Miami, FL  33138

Tel: 305 757 1330

ch...@digitaldevoid.com
www.digitaldevoid.com

> On Sep 1, 2022, at 1:15 PM, Larry Gritz <l...@larrygritz.com> wrote:
> 
> It's definitely an "et al" project, all those patches aren't mine. But since 
> you mention it, it's not as et al as it should be. There was a time in the 
> past that there was a steadier rate of contributions from many people, 
> including of large features, but over recent years, we seem to have lapsed 
> into lots of little outside contributions but most of the features and big 
> bug fixes by me.
> 
> I actually view this as profoundly unhealthy, and a risk that should not be 
> tolerated for a project so widely depended upon. 
> 
> I think it comes from a benign place -- the project is useful, mature, 
> everything seems solid, it looks like it's under control, so people just 
> assume that it doesn't need their ongoing help or additional work. But as I 
> like to say, a project like this is like a swan that from the shore, looks 
> like it just glides along effortlessly, but below the water it's expending a 
> tremendous amount of energy as the little feet peddle wildly to keep it 
> afloat and moving.
> 
> Addressing this and getting the project to a healthier place where less of 
> its progress depends specifically on my direct labor is a major priority for 
> me over the next year. 
> 
>       -- lg
> 
> 
>> On Sep 1, 2022, at 5:03 AM, Chris Spence <ch...@digitaldevoid.com 
>> <mailto:ch...@digitaldevoid.com>> wrote:
>> 
>> Hi Larry,
>> 
>> Wow, what dedication. Is this by singular Larry Gritz, or is it noe L. Gritz 
>> et al?
>> 
>> I’m really impressed. I’m not using OIIO, but have no doubt I’ll have a need 
>> for it down the road.
>> 
>> Thank you,
>> 
>> 
>> Chris Spence
>> Digital Devoid, Inc.
>> 7300 Biscayne Blvd, Suite 405
>> Miami, FL  33138
>> 
>> Tel: 305 757 1330
>> 
>> ch...@digitaldevoid.com <mailto:ch...@digitaldevoid.com>
>> www.digitaldevoid.com
>> 
>>> On Sep 1, 2022, at 2:16 AM, Larry Gritz <l...@larrygritz.com> wrote:
>>> 
>>> We have tagged "v2.4.3.0-beta" as the beta release of the 2.4 series of 
>>> OpenImageIO. This has been used in production throughout its development, 
>>> so hopefully the beta period will be brief and uneventful. The plan is to 
>>> tag a release candidate on September 8 and a full release on September 15 
>>> (assuming no critical problems are found). At that point, 2.4 will be the 
>>> officially supported release series, with monthly (or as necessary) patch 
>>> releases containing fixes and new minor non-breaking features.
>>> 
>>> Note that the transition to 2.4 is NOT ABI- or link-compatible with 2.3 
>>> releases -- you are expected to recompile applications against 2.4, not 
>>> merely relink. We think that it should be fully backward-compatible with 
>>> the 2.3 API, so you should not have to change the source code of any calls 
>>> to OIIO public API calls while recompiling for 2.4.
>>> 
>>> We will do everything we can to ensure that no ABI or link 
>>> incompatibilities will be introduced during the beta period, but it's 
>>> possible if a critical problem is discovered at the last minute that is 
>>> impossible to fix adequately without an incompatibility (though we don't 
>>> anticipate that happening). Once we declare a release candidate, from that 
>>> point forward, we guarantee no ABI or link incompatible changes for the 
>>> remainder of the 2.4 family of releases.
>>> 
>>> Here is the full list of improvements of 2.4, versus the first 2.3 releases:
>>> 
>>> 
>>> Release 2.4 (15 Sept 2022?) -- compared to 2.3
>>> ----------------------------------------------
>>> New minimum dependencies and compatibility changes:
>>> * OpenEXR minimum is now 2.3 (raised from 2.0). #3109 (2.4.0)
>>> * Field3D support has been removed entirely. The Field3D library appears to 
>>> be
>>> no longer maintained, and is incompatible with modern versions of
>>> OpenEXR/Imath. We believe that all prior uses of Field3D use via OIIO have
>>> been migrated to OpenVDB. #3151 (2.4.0)
>>> 
>>> New major features and public API changes:
>>> * Imath header and class hiding:
>>>   - Header includes have been shuffled around so that Imath headers are not
>>>     included from OIIO headers where they are not needed, and some OIIO
>>>     headers that need Imath types only for few function parameters now guard
>>>     those functions with `#if` so that Imath-taking functions are not
>>>     visible unless the calling app has previously had an `#include` of
>>>     Imath. If your app uses Imath types but did not include the right Imath
>>>     headers (relying on the accidental fact of other OIIO headers
>>>     transitively including them), you may need to adjust your includes.
>>>     #3301 #3332 (2.4.0.2) #3406 #3474 (2.4.2)
>>>   - New `V3fParam`, `M33fParam`, and `M44Param` (defined in vecparam.h) are
>>>     used just for parameter passing in public APIs, instead of Imath::V3f,
>>>     M33f, or M44f, in order to more fully hide Imath types from our public
>>>     interfaces. These are only parameter-passing classes, and are not useful
>>>     as vector or matrix classes in their own right. But they seamlessly cast
>>>     to and from other vector- and matrix-like classes. #3330 (2.4.1.0)
>>>   - `OPENIMAGEIO_IMATH_DEPENDENCY_VISIBILITY` is a new CMake cache variable
>>>     at OIIO build time that controls whether the Imath library dependencies
>>>     will be declared as PUBLIC (default) or PRIVATE target dependencies of
>>>     libOpenImageIO and libOpenImageIO_Util. #3322 (4.2.0.2) #3339 (4.2.0.3)
>>>   - For *downstream projects* that consume OIIO's exported cmake config
>>>     files, setting CMake variable `OPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH` to
>>>     ON will skip the find_depencency() calls for Imath and OpenEXR. To
>>>     clarify, this is not a variable that has any effect when building OIIO,
>>>     it's something set in the downstream project itself.  #3322 (4.2.0.2)
>>> * The dithering that happens when saving high bit depth image data to low 
>>> bit
>>> depth formats has been improved in several ways. It now applies when writing
>>>> 8 bit data to <= 8 bit files, not just when the source is float or half.
>>> The dither pattern is now based on blue noise, and this dramatically
>>> improves the visual appearance. #3141 (2.4.0/2.3.10)
>>> * TextureSystem now supports stochastic sampling. If the new TextureOpt 
>>> field
>>> `rnd` (which now defaults to -1.0) is set to a value >= 0, the filtered
>>> texture lookup can use stochastic sampling to save work. The shading system
>>> attribute "stochastic" is set to the stochastic strategy: 0 = no stochastic
>>> sampling; 1 = for trilinear or anisotropic MIP modes, choose one MIP level
>>> stochastically instead of blending between two levels; 2 = for anisotropic
>>> mode, use just one anisotropic sample, chosen across the filter axis. (This
>>> is a bit field, so 3 combines both strategies.) We measure this speeding up
>>> texture lookups by 25-40%, though with more visual noise (which should be
>>> resolved cleanly by a renderer that uses many samples per pixel). This
>>> should only used for texture lookups where many samples per pixel will be
>>> combined, such as for surface or light shading. It should not be used for
>>> texture lookups that must return a single correct value (such as for
>>> displacement, when each grid position is sampled only once). Even when the
>>> "stochastic" attribute is nonzero, any individual texture call may be made
>>> non-stochastic by setting TextureOpt.rnd to a negative value. #3127
>>> (2.4.0/2.3.10) #3457 (2.4.2)
>>> * maketx/make_texture() now supports options to store Gaussian forward and
>>> inverse transform lookup tables in image metadata (must be OpenEXR textures
>>> for this to work) to aid writing shaders that use histogram-preserving
>>> blending of texture tiling. This is controlled by new maketx arguments
>>> `--cdf`, `--cdfsigma`, `--sdfbits`, or for `IBA::make_texture()` by using
>>> hints `maketx:cdf`, `maketx:cdfsigma`, and `maketx:cdfbits`. #3159 #3206
>>> (2.4.0/2.3.10)
>>> * oiiotool new commands and features:
>>>   - Control flow via `--if`, `--else`, `--endif`, `--while`, `--endwhile`,
>>>     `--for`, `--endfor` let you prototypes conditional execution and loops
>>>     in the command sequence. #3242 (2.4.0)
>>>   - `--set` can set variables and their values can be retrieved in
>>>     expressions. #3242 (2.4.0)
>>>   - Expressions now support: numerical comparisons via `<`, `>`, `<=`, `>=`,
>>>      `==`, `!=`, `<=>`; logical operators `&&`, `||`, `!`, `not()`; string
>>>      comparison functions `eq(a,b)` and `neq()`. #3242 #3243 (2.4.0)
>>>   - `--oiioattrib` can set "global" OIIO control attributes for an oiiotool
>>>     run (equivalent of calling `OIIO::attribute()`). #3171 (2.4.0/2.3.10)
>>>   - `--repremult` exposes the previously existing `IBA::repremult()`. The
>>>     guidance here is that `--premult` should be used for one-time conversion
>>>     of "unassociated alpha/unpremultiplied color" to
>>>     associated/premultiplied, but when you are starting with a premultiplied
>>>     image and have a sequence of unpremultiply, doing some adjustment in
>>>     unpremultiplied space, then re-premultiplying, it's `--repremult` you
>>>     want as the last step, because it preserves alpha = 0, color > 0 data
>>>     without crushing it to black. #3192 (2.4.0/2.3.10)
>>>   - `--saturate` can adjust saturation level of a color image. #3190
>>>     (2.4.0/2.3.10)
>>>   - `--maxchan` and `--minchan` turn an N-channel image into a 1-channel
>>>     images that for each pixel, contains the maximum value in any channel of
>>>     the original for that pixel. #3198 (2.4.0/2.3.10)
>>>   - `--point` lets you color one or more pixels in an image (analogous to
>>>     IBA::render_point). #3256 (2.4.0)
>>>   - `--warp` now takes an optional modifier `:wrap=...` that lets you set
>>>     which wrap mode to use when sampling past the edge of the source image.
>>>     #3341 (2.4.0.3)
>>>   - New `--st_warp` performs warping of an image where a second image gives
>>>     the (s,t) coordinates to look up from at every pixel. #3379
>>>     (2.4.2/2.3.14)
>>>   - Many attribute actions now take optional modifier `:subimages=` that
>>>     instructs oiiotool to apply to a particular subset of subimges in
>>>     multi-subimage files (such as multi-part exr). The commands so enabled
>>>     include `--attrib`, `--sattrib`, `--eraseattrib`, `--caption`,
>>>     `--orientation`, `--clear-keywords`, `--iscolorspace`. The default, if
>>>     subimages are not specified, is to only change the attributes of the
>>>     first subimage, unless `-a` is used, in which case the default is to
>>>     change the attributes of all subimages. #3384 (2.4.2)
>>> * ImageSpec :
>>>   - New constructors to accept a string for the data type. #3245
>>>     (2.4.0/2.3.12)
>>> * ImageBuf/ImageBufAlgo :
>>>   - `IBA::saturate()` can adjust saturation level of a color image. #3190
>>>     (2.4.0/2.3.10)
>>>   - `IBA::maxchan()` and `minchan()` turn an N-channel image into a
>>>     1-channel images that for each pixel, contains the maximum value in any
>>>     channel of the original for that pixel. #3198 (2.4.0/2.3.10)
>>>   - New `IBA::st_warp()` performs warping of an image where a second image
>>>     gives the (s,t) coordinates to look up from at every pixel. #3379
>>>     (2.4.2/2.3.14)
>>>   - `IBA::bluenoise_image()` returns a reference to a periodic blue noise
>>>     image. #3141 #3254 (2.4.0/2.3.10)
>>> * Python bindings:
>>>   - New ImageBuf constructor and reset() from a NumPy array only -- it
>>>     deduces the resolution, channels, and data type from the array
>>>     dimensions and type. #3246 (2.4.0/2.3.12)
>>>   - ROI now has a working `copy()` method. #3253 (2.4.0/2.3.12)
>>>   - ImageSpec and ParamValueList now support `'key' in spec`, `del
>>>     spec['key']`, and `spec.get('key', defaultval)` to more fully emulate
>>>     Python `dict` syntax for manipulating metadata. #3252 (2.3.12/2.4.0)
>>>   - Support uint8 array attributes in and out. This enables the proper
>>>     Python access to "ICCProfile" metadata. #3378 (2.4.1.0/2.3.14)
>>>   - New `ImageSpec.get_bytes_attribute()` method is for string attributes,
>>>     but in Python3, skips decoding the underlying C string as UTF-8 and
>>>     returns a `bytes` object containing the raw byte string. #3396 (2.4.2)
>>>   - Fixes for Python 3.8+ to ensure that it can find the OpenImageIO module
>>>     as long as it's somewhere in the PATH. This behavior can be disabled by
>>>     setting environment variable `OIIO_LOAD_DLLS_FROM_PATH=0`. #3470
>>>     (2.4.0/2.3.18)
>>> * New global OIIO attributes:
>>>   - `"try_all_readers"` can be set to 0 if you want to override the default
>>>     behavior and specifically NOT try any format readers that don't match
>>>     the file extension of an input image (usually, it will try that one
>>>     first, but it if fails to open the file, all known file readers will be
>>>     tried in case the file is just misnamed, but sometimes you don't want it
>>>     to do that). #3172  (2.4.0/2.3.10)
>>>   - `"use_tbb"` if nonzero, and if OIIO was built with TBB enabled and
>>>     found, then will use the TBB thread pool instead of the OIIO internal
>>>     thread pool. #3473 (2.4.2.2)
>>>   - `"version"` (read only) now retrieves the version string. #3534
>>>     (2.3.19.0/2.4.2.2)
>>> * Full IOProxy support has been added to TIFF #3075 (2.4.0/2.3.8), JPEG, GIF
>>> #3181 #3182 (2.4.0/2.3.10), DDS #3217, PNM #3219, PSD #3220, Targa #3221,
>>> WebP #3224, BMP #3223, JPEG-2000 #3226 (2.4.0).
>>> * Convention change: Image readers who wish to convey that the color space 
>>> of
>>> an input image is a simple gamma-corrected space will now call the color
>>> space "GammaX.Y" (previously we sometimes used this, but sometimes called it
>>> "GammaCorrectedX.Y"). #3202 (2.4.0)
>>> * `oiioversion.h` now defines symbols `OIIO_USING_IMATH_VERSION_MAJOR` and
>>> `OIIO_USING_IMATH_VERSION_MINOR` that reveal which Imath version was used
>>> internally to OIIO when it was build (which may be different than the
>>> version found when the downstream app is being compiled). #3305 (2.4.0.1)
>>> * Most of the major APIs (including ImageInput, ImageOutput, and ImageBuf)
>>> that took a std::string or string_view to indicate a filename (assumed to
>>> support UTF-8 encoding of Unicode filenames) now have additional versions
>>> that directly take a `std::wstring`, thus supporting UTF-16 Unicode
>>> filenames as "wide strings". #3312 #3318 (2.4.0.1)
>>> * The ColorConfig API adds new calls `getDisplayViewColorSpaceName()` and
>>> `getDisplayViewLooks()` that expose the underlying OpenColorIO
>>> functionality. #3319 (2.4.0.2)
>>> * Many long-deprecated functions in imageio.h and imagbufalgo.h are now
>>> marked as OIIO_DEPRECATED, and therefore may start to generate warnings
>>> if used by downstream software. #3328 (2.4.1.0)
>>> 
>>> Performance improvements:
>>> * Raise the default ImageCache default tile cache from 256MB to 1GB. This
>>> should improve performance for some operations involving large images or
>>> images with many channels. #3180 (2.4.0/2.3.10)
>>> * Performance of JPEG-2000 I/O is improved by 2-3x due to multithreading,
>>> but only if you are using a sufficiently new version of OpenJPEG (2.2
>>> for encoding, 2.4 for decoding). #2225 (2.3.11/2.4.0)
>>> * Dramatically speed up (50-100x) the implementation of Strutil iequals,
>>> iless, starts_with, istarts_with, ends_with, iends_with. This in turn speeds
>>> up ParamValueList find/get related methods, ImageSpec find/get methods, and
>>> TS::get_texture_info. #3388 (2.4.1.1)
>>> * Renderer users of the TextureSystem might see up to a ~40% speedup if
>>> using the new stochastic sampling features. #3127 #3457
>>> * Speed up reading of uncompressed DDS images by about 3x. #3463 (2.4.2.0)
>>> 
>>> Fixes and feature enhancements:
>>> * ImageSpec:
>>>   - Implemented deserialization of extra_attribs from XML. #3066 
>>> (2.4.0/2.3.8)
>>>   - Allow `getattribute("format")` to retrieve the name of the pixel data
>>>     type. #3247 (2.4.0)
>>> * ImageInput / ImageOutput:
>>>   - Protected methods that make it easier to implement support for IOProxy
>>>     in image readers and writers. #3231 (2.4.0)
>>>   - Fix crash when ioproxy is passed to a plugin that doesn't support it.
>>>     #3453 (2.4.2)
>>> * ImageBuf / ImageBufAlgo:
>>>   - Fix ImageBuf::read bug for images of mixed per-channel data types. #3088
>>>     (2.4.0/2.3.8)
>>>   - `IBA::noise()` now takes "blue" as a noise name. Also, "white" is now
>>>     the preferred name for what used to be "uniform" (which still works as a
>>>     synonym). #3141 (2.4.0/2.3.10)
>>>   - Refactor ImageBuf::Iterator, ConstIterator templates, reduces compile
>>>     time substantially. #3195 (2.4.0)
>>>   - IBA functions taking a `cspan<>` now more flexibly can be passed
>>>     an init list like `{ 0.2f, 0.4f, 0.5f }` instead of needing to wrap it
>>>     in a `cspan<float>()` constructor. #3257 (2.3.12/2.4.0)
>>>   - `make_texture()`: ensure that "maketx:ignore_unassoc" is honored.
>>>     #3269 (2.4.0.1/2.3.12)
>>>   - `IBA::computePixelStats()` improved precision. #3353 (2.4.1.0/2.3.14)
>>>   - `IBA::isConstantColor()` is faster -- now if one thread finds its
>>>     portion not constant, it can signal the other threads to stop
>>>     immediately instead of completing their regions. #3383 (2.4.1.1)
>>>   - A new flavor of `IBA::compare()` allows relative as well as absolute
>>>     error thresholds. #3508 (2.3.19.0/2.4.2.2)
>>> * ImageCache / TextureSystem / maketx:
>>>   - When textures are created with the "monochrome_detect" feature enabled,
>>>     which turns RGB textures where all channels are always equal into true
>>>     single channel greyscale, the single channel that results is now
>>>     correctly named "Y" instead of leaving it as "R" (it's not red, it's
>>>     luminance). #3205 (2.4.0/2.3.10)
>>>   - Enhance safety/correctness for untiled images that exceed 2GB size
>>>     (there was an integer overflow problem in computing offsets within
>>>     tiles). #3232 (2.3.11/2.4.0)
>>>   - Improve error propagation from ImageCache to higher levels, especially
>>>     for tile-reading errors encountered during ImageBuf iterator use, and
>>>     ImageCache errors encountered when using the TextureSystem. #3233
>>>     (2.4.0)
>>>   - Support an additional UDIM pattern `<UVTILE>`, which is specified by
>>>     MaterialX. #3280 #3285 (2.3.12/2.4.0.1)
>>>   - Add support for UDIM pattern `<uvtile>` (used by Clarisse & V-Ray). 
>>> #3358
>>>     (2.4.1.0/2.3.14)
>>>   - The `maketx --handed` option, or `oiiotool -attrib -otex:handed=...`, or
>>>     adding "handed" metadata to the configuration ImageSpec being passed to
>>>     `IBA::make_texture()` is now supported for communicating the handedness
>>>     of a vector displacement or normal map. #3331 (2.4.0.2)
>>>   - Speed up UDIM lookups by eliminating internal mutex. #3417 (2.4.0)
>>>   - TextureSystem: Fix typo that prevented "max_tile_channels" attribute 
>>> from
>>>     being set or retrieved. (2.4.2/2.3.17)
>>> * oiiotool:
>>>   - `--ch` now has virtually no expense if the arguments require no change
>>>     to the channel order or naming (previously, it would always incur an
>>>     image allocation and copy even if no real work needed to be done). #3068
>>>     (2.4.0/2.3.8)
>>>   - `--ch` now warns if you specify a channel name that was not present
>>>     in the input image. #3290 (2.4.0.1)
>>>   - `--runstats` timing report has been improved and now more accurately
>>>     attributes time to each operation. In particular, input I/O is now
>>>     credited to "-i" rather than being incorrectly attributed to the other
>>>     ops that happen to trigger I/O of previously mentioned files. #3073
>>>     (2.4.0/2.3.8)
>>>   - Allow quotes in command modifiers. #3112 (2.4.0/2.3.9)
>>>   - Fix `--dumpdata` getting the formatting of floating point values wrong.
>>>     #3131 (2.4.0/2.3.9)
>>>   - `--dumpdata:C=name` causes the dumped image data to be formatted with
>>>     the syntax of a C array. #3136 (2.4.0/2.3.9)
>>>   - `--noise` now takes "blue" as an additional noise type. #3141
>>>     (2.4.0/2.3.10)
>>>   - `-d` now accepts "uint1", "uint2", "uint4", and "uint6" for formats that
>>>     support such low bit depths (TIFF). #3141 (2.4.0/2.3.10)
>>>   - `--invert` fixed to avoid losing the alpha channel values. #3191
>>>     (2.4.0/2.3.10)
>>>   - Fix bug when autocropping output images when the entire pixel data
>>>     window is in the negative coordinate region. #3164 (2.4.0/2.3.10)
>>>   - Improved detection of file reading failures. #3165 (2.4.0/2.3.10)
>>>   - All commands that do filtering (--rotate, --warp, --reize, --fit, and
>>>     --pixelaspect) now accept optional modifier `:highlightcomp=1` to enable
>>>     "highlight compensation" to avoid ringing artifacts in HDR images with
>>>     very high-contrast regions. #3239 (2.4.0)
>>>   - `--pattern checker` behavior has changed slightly: if the optional
>>>     modifier `:width=` is specified but `:height=` is not, the height will
>>>     be equal to the width. #3255 (2.4.0)
>>>   - `--pixelaspect` fixes setting of the "PixelAspectRatio", "XResolution",
>>>     and "YResolution" metadata, they were not set properly before. #3340
>>>     (2.4.0.3)
>>>   - Fix bug that prevented metadata from being able to print as XML. #3499
>>>     (2.4.2.2)
>>>   - `i:ch=...` fixes crashes, and also improves the warning message in cases
>>>     where the requested channels don't exist in the source image. #3513
>>>     (2.4.2.2)
>>> * Python bindings:
>>>   - Subtle/asymptomatic bugs fixed in `ImageBufAlgo.color_range_check()` and
>>>     `histogram()` due to incorrect release of the GIL. #3074 (2.4.0)
>>>   - Bug fix for `ImageBufAlgo.clamp()`: when just a float was passed for the
>>>     min or max, it only clamped the first channel instead of all channels.
>>>     #3265 (2.3.12/2.4.0)
>>> * idiff:
>>>   - `--allowfailures` allows that number of failed pixels of any magnitude.
>>>     #3455 (2.4.2)
>>>   - `--failrelative` and `--warnrelative` allows the failure and warning
>>>     threshold to use a symmetric mean relative error (rather than the
>>>     absolute error implied by the existing `--fail` and `--warn` arguments).
>>>     #3508 (2.3.19.0, 2.4.2.2)
>>> * BMP:
>>>   - IOProxy support. #3223 (2.4.0)
>>>   - Support for additional (not exactly fully documented) varieties used by
>>>     some Adobe apps. #3375 (2.4.1.0/2.3.14)
>>>   - Better detection of corrupted files with nonsensical image dimensions or
>>>     total size. #3434 (2.4.2/2.3.17/2.2.21)
>>>   - Protect against corrupted files that have palette indices out of bound.
>>>     #3435 (2.4.2/2.3.17/2.2.21)
>>> * DDS:
>>>   - Don't set "texturetype" metadata, it should always have been only
>>>     "textureformat". Also, add unit testing of DDS to the testsuite. #3200
>>>     (2.4.0/2.3.10)
>>>   - IOProxy support. #3217 (2.4.0)
>>>   - Add support for BC4-BC7 compression methods. #3459 (2.4.2)
>>>   - Speed up reading of uncompressed DDS images (by about 3x). #3463
>>>   - Better handling of cube maps with MIPmap levels. #3467 (2.4.0)
>>>   - For 2-channel DDS files, label them as Y,A if the flags indicate
>>>     luminance and/or alpha, otherwise label them as R,G. #3530 (2.4.2.2)
>>>   - Do not set "oiio:BitsPerSample" for cases where the dds.fmt.bpp field is
>>>     not assumed to be valid. MS docs say it's valid only if the flags field
>>>     indicates RGB, LUMINANCE, or YUV types. #3530 (2.4.2.2)
>>> * FFMpeg
>>>   - Now uses case-insensitive tests on file extensions, so does not get
>>>     confused on Windows with all-caps filenames. #3364 (2.4.1.0/2.3.14)
>>>   - Take care against possible double-free of allocated memory crash upon
>>>     destruction. #3376 (2.4.1.0/2.3.14)
>>> * GIF
>>>   - IOProxy support. #3181 (2.4.0/2.3.10)
>>> * HDR:
>>>   - IOProxy support. #3218 (2.4.0)
>>> * HEIF:
>>>   - Handle images with unassociated alpha. #3146 (2.4.0/2.3.9)
>>> * JPEG:
>>>   - IOProxy support. #3182 (2.4.0/2.3.10)
>>>   - Better handling of PixelAspectRatio. #3366 (2.4.1.0)
>>>   - Fix multithreaded race condition in read_native_scanline. #3495
>>>     (2.4.2.2)
>>>   - Fix bug in XRes,YRes aspect ratio logic. #3500 (2.4.2.2)
>>>   - When asked to output 2-channel images (which JPEG doesn't support), use
>>>     the channel names to decide whether to drop the second channel (if it
>>>     seems to be a luminance/alpha image) or add a third black channel (other
>>>     cases). #3531 (2.4.2.2)
>>> * JPEG2000:
>>>   - Enable multithreading for decoding (if using OpenJPEG >= 2.2) and
>>>     encoding (if using OpenJPEG >= 2.4). This speeds up JPEG-2000 I/O by
>>>     3-4x. #2225 (2.3.11/2.4.0)
>>>   - IOProxy support. #3226 (2.4.0)
>>>   - Better detection and error reporting of failure to open the file.
>>>     #3440 (2.4.2)
>>> * OpenEXR:
>>>   - When building against OpenEXR 3.1+ and when the global OIIO attribute
>>>     "openexr:core" is set to nonzero, do more efficient multithreaded
>>>     reading of OpenEXR files. #3107 (2.4.0/2.3.9.1)
>>>   - Fix excessive memory usage when saving EXR files with many channels.
>>>     #3176 (2.4.0/2.3.10)
>>>   - When building against OpenEXR >= 3.1.3, our OpenEXR output now supports
>>>     specifying the zip compression level (for example, by passing the
>>>     "compression" metadata as "zip:4"). Also note than when using OpenEXR >=
>>>     3.1.3, the default zip compression has been changed from 6 to 4, which
>>>     writes compressed files significantly (tens of percent) faster, but only
>>>     increases compressed file size by 1-2%. #3157 (2.4.0/2.3.10) Fixes in
>>>     #3387 (2.4.1.1)
>>>   - Fix writing deep exrs when buffer datatype doesn't match the file. #3369
>>>     (2.4.1.0/2.3.14)
>>> * PNG:
>>>   - Assume sRGB color space as default when no color space attribute is
>>>     in the file. #3321 (2.4.0.2/2.3.13)
>>>   - Improve error detection and propagation for corrupt/broken files. #3442
>>>     (2.4.2)
>>>   - Improve error detection and messages when writing PNG files, for various
>>>     kinds of errors involving metadata. #3535 (2.4.2.2)
>>> * PPM:
>>>   - Mark all PPM files as Rec709 color space, which they are by
>>>     specification. #3321 (2.4.0.2/2.3.13)
>>> * PSD:
>>>   - IOProxy support. #3220 (2.4.0)
>>>   - Better error messages for corrupted files and other failures. #3469
>>>     (2.4.0)
>>> * RAW:
>>>   - When using libraw 0.21+, now support new color space names "DCE-P3",
>>>     "Rec2020", and "sRGB-linear", and "ProPhoto-linear". Fix incorrect gamma
>>>     values for "ProPhoto". #3123 #3153 (2.4.0/2.3.9.1)
>>> * RLA:
>>>   -  Better guards against malformed input. #3163 (2.4.0/2.3.10)
>>> * Targa:
>>>   - Improved error detection for read errors and corrupted files. #3120
>>>     (2.4.0/2.3.9.1) #3162 (2.4.0/2.3.10)
>>>   - Fixed bug when reading x-flipped images. #3162 (2.4.0/2.3.10)
>>>   - IOProxy support. #3221 (2.4.0)
>>>   - Better interpretation of TGA 1.0 files with alpha that is zero
>>>     everywhere. Be more consistent with Targa attributes all being called
>>>     "targa:foo". Add "targa:version" to reveal whether the file was TGA 1.0
>>>     or 2.0 version of the format. #3279 (2.4.0.1/2.3.12)
>>>   - Fix parsing of TGA 2.0 extension area when the software name was
>>>     missing form the header. #3323 (2.4.0.2/2.3.13)
>>>   - Fix reading of tiny 1x1 2-bpp Targa 1.0 images. #3433 (2.3.17/2.2.21)
>>> * Socket imageio plugin has been removed entirely, it never was completed or
>>> did anything useful. #3527 (2.3.2.2)
>>> * TIFF:
>>>   - IOProxy is now supported for TIFF output. #3075 (2.4.0/2.3.8)
>>>   - Honor zip compression quality request when writing TIFF. #3110
>>>     (2.4.0/2.3.11)
>>>   - Automatically switch to "bigtiff" format for really big (> 4GB) images.
>>>     #3158 (2.4.0)
>>>   - Support for palette images with 16 bit palette indices. #3262
>>>     (2.4.0/2.3.12)
>>>   - Gracefully handle missing ExtraSamples tag. #3287 (2.4.0.1/2.3.12)
>>>   - New output configuration hint: "tiff:write_extrasamples" (default: 1),
>>>     if set to 0, will cause the TIFF output to NOT include the required
>>>     EXTRASAMPLES tag in the header. This is not recommended, but fixes
>>>     a specific problem in some circumstances where PhotoShop misbehaves
>>>     when the extrasamples tag is present. #3289 (2.4.0.1)
>>>   - No longer write IPTC blocks to the TIFF header by default, it caused
>>>     trouble and was sometimes corrupted. You can force it to write an IPTC
>>>     block by using the output open configuration hint "tiff:write_iptc" set
>>>     to nonzero. #3302 (2.4.0.1)
>>>   - Fix read problems with TIFF files with non-zero y offset. #3419
>>>     (2.3.17/2.4.2)
>>>   - Fixed some longstanding issues with IPTC data in the headers. #3465
>>>     (2.4.0)
>>>   - Protect against crashes with certain empty string attributes. #3491
>>>     (2.4.2.1)
>>> * WebP:
>>>   - Fix previous failure to properly set the "oiio:LoopCount" metadata
>>>     when reading animated webp images. #3183 (2.4.0/2.3.10)
>>>   - IOProxy support. #3224 (2.4.0)
>>> * Better catching of exceptions thrown by OCIO 1.x if it encounters 2.0 
>>> config
>>> files. #3089 (2.4.0/2.3.9)
>>> * Improved internal logic and error reporting of missing OCIO configs. #3092
>>> #3095
>>> * Improved finding of fonts (by IBA::render_text and oiiotool --text). It 
>>> now
>>> honors environment variable `$OPENIMAGEIO_FONTS` and global OIIO attribute
>>> "font_searchpath" to list directories to be searched when fonts are needed.
>>> #3096 (2.4.0/2.3.8)
>>> * Fix crash that could happen with invalidly numbered UDIM files. #3116
>>> (2.4.0/2.3.9)
>>> * Fix possible bad data alignment and SIMD assumptions inside TextureSystems
>>> internals. #3145 (2.4.0/2.3.9)
>>> * Update internal stb_printf implementation (avoids some sanitizer alerts).
>>> #3160 (2.4.0/2.3.10)
>>> * Replace the few remaining instances of `sscanf` in the codebase with 
>>> Strutil
>>> utilities that are guaranteed to be locale-independent. #3178 (2.4.0)
>>> * Security: New global OIIO attributes "limits:channels" (default: 1024) and
>>> "limits:imagesize_MB" (default: 32768, or 32 GB) are intended to reject
>>> input files that exceed these limits, on the assumption that they are either
>>> corrupt or maliciously constructed, and would, if read, lead to absurd
>>> allocations, crashes, or other mayhem. Apps may lower or raise these limits
>>> if they know that a legitimate input image exceeds these limits. Currently,
>>> only the TIFF reader checks these limits, but others will be modified to
>>> honor the limits over time. #3230 (2.3.11/2.4.0)
>>> * Fix integer overflow warnings. #3329 (2.4.1.0)
>>> * Improved behavior when opening a file whose format doesn't correctly match
>>> its extension: try common formats first, rather than alphabetically; and
>>> improve error messages. #3400 (2.4.2)
>>> * The maximum number of threads you can set with option "oiio:threads"
>>> has been increased from 256 to 512. #3484 (2.4.2.1)
>>> * Make access to the internal imageio_mutex not be recursive. #3489 
>>> (2.4.2.2)
>>> * Various protections against string metadata found in file that has zero
>>> length. #3493 (2.4.2.2)
>>> * Fix possible null pointer dereference in inventory_udim. #3498 (2.4.2.2)
>>> * oiiotool, maketx, iinfo, igrep, and iv now all take a `--version` command
>>> line argument, which just prints the OIIO version and exits. #3534
>>> 
>>> Developer goodies / internals:
>>> * benchmark.h:
>>>   - Alter the declaration of DoNotOptimize() so that it doesn't have
>>>     compilation problems on some platforms. #3444 (2.4.2/2.3.17)
>>> * filesystem.h:
>>>   - A new version of `searchpath_split` returns the vector of strings rather
>>>     than needing to be passed a reference. #3154 (2.4.0/2.3.10)
>>>   - New `write_binary_file()` utility function. #3199 (2.4.0/2.3.10)
>>>   - `searchpath_split()` fixes to better handle empty paths. #3306 (2.4.0.1)
>>> * fmath.h:
>>>   - Added `round_down_to_multiple()`. Also, more correctly handle
>>>     `round_to_multiple()` results when the value is < 0. #3104
>>>   - Add `round_down_to_multiple()` and improve `round_to_multiple()` to
>>>     correctly handle cases where the value is less than 0. #3104
>>>     (2.4.0/2.3.8)
>>>   - Make bit_cast specialization take refs, like the template. This fixes
>>>     warnings for some compilers. #3213 (2.4.0/2.3.10.1)
>>> * imageio.h:
>>>   - ImageInput and ImageOutput have many new helper methods (protected,
>>>     meant for II and IO subclass implementations to use, not users of these
>>>     classes) for helping to implement IOProxy support in format readers and
>>>     writers. #3203 #3222 (2.4.0)
>>> * Imath.h:
>>>   - In addition to including the right Imath headers for the version that
>>>     OIIO is built with, this defines custom formatters for the Imath types
>>>     for use with fmt::format/print or Strutil::format/print. #3367 (2.4.1.0)
>>> * oiioversion.h
>>>   - `OIIO_MAKE_VERSION_STRING` and `OIIO_VERSION_STRING` now print all 4
>>>     version parts. #3368 (2.4.1.0)
>>> * parallel.h
>>>   - Refactoring of the entry points (back compatible for API), and add
>>>     support for using TBB for the thread pool (which seems slightly faster
>>>     than our internal thread pool). By default it still uses the internal
>>>     pool, but if OIIO::attribute("use_tbb") is set to nonzero, it will use
>>>     the TBB thread pool if built against TBB. #3473 (2.4.2.2)
>>> * paramlist.h
>>>   - Various internal fixes that reduce the amount of ustring construction
>>>     that happens when constructing ParamValue and ParamList, and making
>>>     certain ImageSpec::attribute() calls. #3342 (2.4.1.0)
>>> * simd.h:
>>>   - Better guards to make it safe to include from Cuda. #3291 #3292
>>>     (2.4.0.1/2.3.12)
>>>   - Fix compiler warnings related to discrepancies between template
>>>     declaration and redeclaration in simd.h. #3350 (2.4.1.0/2.3.14)
>>>   - The vector types all now have a `size()` method giving its length.
>>>     #3367 (2.4.1.0)
>>>   - Defines custom formatters for the vector and matrix types, for use
>>>     with fmt::format/print or Strutil::format/print. #3367 (2.4.1.0)
>>> * string_view.h
>>>   - Auto-conversion between our string_view, std::string_view (when
>>>     available), and fmt::string_view. #3337 (2.4.1.0)
>>>   - OIIO::string_view is now fully templated, to match std::string_view.
>>>     #3344 (2.4.1.0)
>>> * strutil.h:
>>>   - New utility functions: parse_values(), scan_values(), scan_datetime()
>>>     #3173 #3177 (2.4.0/2.3.10), edit_distance() #3229 (2.4.0/2.3.11)
>>>   - The `utf8_to_utf16()` and `ut16_to_utf8()` utilities are now exposed on
>>>     all platforms, not just windows (and their internals have been
>>>     modernized). #3307 (2.4.0.1)
>>>   - `Strutil::isspace()` is a safe alternative to C isspace(), that works
>>>     even for signed characters. #3310 (2.4.1.0)
>>>   - `Strutil::print()` now is buffered (and much more efficient, and
>>>     directly wraps fmt::print). A new `Strutil::sync::print()` is a version
>>>     that does a flush after every call. #3348 (2.4.1.0)
>>>   - `get_rest_arguments()` fixes conflict between RESTful and Windows long
>>>     path notations. #3372 (2.4.1.0/2.3.14)
>>>   - Dramatically speed up (50-100x) Strutil iequals, iless, starts_with,
>>>     istarts_with, ends_with, iends_with. #3388 (2.4.1.1)
>>>   - New `safe_strcat` is a buffer-length-aware safe replcement for strcat.
>>>     #3471 (2.4.0/2.3.18)
>>>   - `Strutil::debug()` is the new OIIO::debug(), moving it from
>>>     libOpenImageIO to libOpenImageIO_Util. #3486 (2.4.2.1)
>>>   - New `Strutil::safe_strlen()` is a portable safe strlen replacement.
>>>     #3501 (2.4.2.2)
>>> * sysutil.h:
>>>   - The `Term` class now recognizes a wider set of terminal emulators as
>>>     supporting color output. #3185 (2.4.0)
>>> * timer.h:
>>>   - `Timer::add_seconds()` and `Timer::add_ticks()` allows add/subtract
>>>     directly to a timer's elapsed value. #3070 (2.4.0/2.3.8)
>>>   - For Linux, switch from using gettimeofday to clock_gettime, for
>>>     potentially higher resolution. #3443 (2.4.2)
>>> * typedesc.h:
>>>   - Add Cuda host/device decorations to TypeDesc methods to make them GPU
>>>     friendly. #3188 (2.4.0/2.3.10)
>>>   - TypeDesc constructor from a string now accepts "box2f" and "box3f"
>>>     as synonyms for "box2" and "box3", respectively. #3183 (2.4.0/2.3.10)
>>> * type_traits.h:
>>>   - This new header contains a variety of type traits used by other OIIO
>>>     headers. They aren't really part of the public API, but they are 
>>> sometimes
>>>     used by public headers. #3367 (2.4.1.0)
>>> * unittest.h:
>>>   - Changes `OIIO_CHECK_SIMD_EQUAL_THRESH` macro to compare `<= eps`
>>>     instead of `<`. #3333 (2.4.0.3)
>>> * unordered_map_concurrent.h: Fix bug in `erase()` method. #3485 (2.4.2.2)
>>> * ustring.h:
>>>   - New static method `from_hash()` creates a ustring from the known hash
>>>     value. #3397 (2.4.2)
>>>   - New `ustringhash` class is just like a ustring, except that the "local"
>>>     representation is the hash, rather than the unique string pointer. #3436
>>>     (2.4.2)
>>> * vecparam.h:
>>>   - New `V3fParam`, `M33fParam`, and `M44Param` (defined in vecparam.h) are
>>>     used just for parameter passing in public APIs, instead of Imath::V3f,
>>>     M33f, or M44f, in order to more fully hide Imath types from our public
>>>     interfaces. These are only parameter-passing classes, and are not useful
>>>     as vector or matrix classes in their own right. But they seamlessly cast
>>>     to and from other vector- and matrix-like classes. #3330 (2.4.1.0)
>>> * More internals conversion to use the new fmt style for string formatting,
>>> console output, error messages, and warnings: oiiotool internals #3240
>>> (2.4.0); TS/IC stats output #3374 (2.4.1.0); misc #3777 (2.4.1.0); testshade
>>> #3415 (2.4.2)
>>> * Internals are working toward removing all uses of string_view::c_str(),
>>> since that isn't part of C++17 std::string_view. #3315 (2.4.0.1)
>>> * New testtex options: `--minthreads` sets the minimum numer of threads that
>>> will be used for thread wedges, `--lowtrials` is an optional maximum number
>>> of trials just for the 1 or 2 thread cse. #3418 (2.4.2)
>>> * Internals: internal classes with vertual methods now mark all their
>>> overridden destructors correctly as `override`. #3481 (2.4.2.1) #3488 #3511
>>> (2.4.2.2)
>>> 
>>> Build/test system improvements and platform ports:
>>> * CMake build system and scripts:
>>>   - Remove the old FindOpenImageIO.cmake module; downstream clients should
>>>     instead use our exported configs. #3098 (2.4.0/2.3.8)
>>>   - Fix over-use of targets when we should have been using variables. #3108
>>>     (2.4.0/2.3.9)
>>>   - CMake variable `-DENABLE_INSTALL_testtex=1` causes `testtex` to be
>>>     installed as an application. #3111 (2.4.0)
>>>   - Make `OpenImageIO_SUPPORTED_RELEASE` into a CMake cache variable so it
>>>     can be overridden at build time. #3142 (2.4.0)
>>>   - New build option `-DTIME_COMMANDS=ON` will print time to compile each
>>>     module (for investigating build performance; only useful when building
>>>     with `CMAKE_BUILD_PARALLEL_LEVEL=1`). #3194 (2.4.0/2.3.10)
>>>   - `PROJECT_VERSION_RELEASE_TYPE` is now a cache variable that can be
>>>     overridden at build time. #3197 (2.4.0/2.3.10)
>>>   - Set and use the variable `PROJECT_IS_TOP_LEVEL` to know if OIIO is a
>>>     top level project or a subproject. #3197 (2.4.0/2.3.10)
>>>   - Restore code that finds Jasper when using statically-linked libraw.
>>>     #3210 (2.4.0/2.3.10.1)
>>>   - Gracefully handle failing to find git for test data download. #3212
>>>     (2.4.0/2.3.10.1)
>>>   - Make sure to properly use the tbb target if it exists. #3214
>>>     (2.4.0/2.3.10.1)
>>>   - Use a project-specific "OpenImageIO_CI" for whether we're running in CI,
>>>     rather than the confusingly generic "CI" #3211 (2.4.0/2.3.11)
>>>   - If CMake variable `BUILD_TESTING` is OFF, don't do any automatic
>>>     downloading of missing test data. #3227 (2.3.11/2.4.0)
>>>   - Fixes to FindOpenColorIO.cmake module, now it prefers an OCIO exported
>>>     cmake config (for OCIO 2.1+) unless OPENCOLORIO_NO_CONFIG=ON is set.
>>>     #3278 (2.4.0.1/2.3.12)
>>>   - Fix problems with FindOpenEXR build script for Windows. #3281
>>>     (2.4.0.1/2.3.12)
>>>   - New CMake cache variable `DOWNSTREAM_CXX_STANDARD` specifies which C++
>>>     standard is the minimum for downstream projects (currently 14), which
>>>     may be less than the `CMAKE_CXX_STANDARD` that specifies which C++
>>>     standard we are using to build OIIO itself. #3288 (2.4.0.1)
>>>   - The exported cmake configs now use relative paths so they are
>>>     relocatable. #3302 (2.4.0.1)
>>>   - CMake variable `OPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH`, if set to ON,
>>>     will make our generated config file not do a find_dependency(Imath).
>>>     (Use with caution.) #3335 (2.4.0.3)
>>>   - Can now do unity/jumbo builds. This isn't helpful when building with
>>>     many cores/threads, but in thread-limited situtations (such as CI), it
>>>     can speed up builds a lot to use `-DCMAKE_UNITY_BUILD=ON`. #3381 #3389
>>>     #3392 #3393 #3398 #3402 (2.4.2.0)
>>>   - Do not auto-download test images by default. To auto download test
>>>     images, build with `-DOIIO_DOWNLOAD_MISSING_TESTDATA=ON`. #3409 (2.4.0)
>>>   - Allow using the Makefile wrapper on arm64 systems. #3456 (2.4.2)
>>>   - The export OpenImageIOConfig.cmake fixes `OpenImageIO_INCLUDE_DIR` to
>>>     work correctly on Debian systems where there are multiple filesystem
>>>     components to the path. #3487 (2.4.2.1)
>>>   - On MacOS, do not force MACOS_RPATH on. #3523 (2.4.2.2)
>>> * Dependency version support:
>>>   - When using C++17, use std::gcd instead of boost. #3076 (2.4.0)
>>>   - When using C++17, use `inline constexpr` instead of certain statics.
>>>     #3119 (2.4.0)
>>>   - Fixes to work with the libraw 202110 snapshot. #3143 (2.4.0/2.3.9.1)
>>>   - Fix occasional build breaks related to OpenCV headers. #3135
>>>     (2.4.0/2.3.9)
>>>   - The internals of `Filesystem::searchpath_split` have been reimplemented
>>>     in such a way as to no longer need boost.tokenzer. #3154 (2.4.0/2.3.10)
>>>   - Deal with the fact that OpenColorIO has changed its default branch
>>>     name to "main". #3169 (2.4.0/2.3.10/2.2.20)
>>>   - pybind11 v2.9.0 incorporated into our testing and CI. #3248
>>>   - Fix clang10 compile warnings. #3272 (2.4.0.1/2.3.12)
>>>   - Support for ffmpeg 5.0. #3282 (2.4.0.2/2.3.13)
>>>   - Support for fmtlib 9.0.0. #3327 (2.4.0.2/2.3.13) #3466 (2.4.2/2.3.18)
>>>   - `build_opencolorio.bash` helper script bumped its default build of
>>>     OpenColorIO to 2.1.2. #3475 (2.4.2.1)
>>>   - When building with C++17 or higher, Boost.filesystem is no longer
>>>     needed or used. #3472 #3477 (2.4.2.1)
>>>   - Upgrade the internal fallback implemention of PugiXML to the latest
>>>     version. #3494 (2.4.2.2)
>>>   - Fixes for ffmpeg 5.1 detection. #3516 (2.3.19.0/2.4.2.2)
>>>   - Support for gcc 12.1. #3480 (2.4.2.1)
>>> * Testing and Continuous integration (CI) systems:
>>>   - Properly test against all the versions of VFX Platform 2022. #3074
>>>     (2.4.0)
>>>   - The helper script `build_libtiff.bash` now allows you to override the
>>>     build type (by setting `LIBTIFF_BUILD_TYPE`) and also bumps the default
>>>     libtiff that it downloads and builds from 4.1.0 to 4.3.0. #3161 (2.4.0)
>>>   - New tests on MacOS 11 #3193 (2.4.0/2.3.10) and MacOS 12, remove test on
>>>     MacOS 10.15 (GitHub Actions is imminently removing MacOS 10.15). #3528
>>>     (2.3.19.0/2.4.2.2)
>>>   - Add a DDS test (we never had one before). #3200 (2.4.0/2.3.10)
>>>   - `imageinout_test` now has options to make it easy to unit test just one
>>>     named format, as well as to preserve the temp files for inspection.
>>>     #3201 (2.4.0/2.3.10)
>>>   - Add an HDR test (we never had one before). #3218 (2.4.0)
>>>   - Fix bugs in the build_opencolorio.bash script, did not correctly handle
>>>     installation into custom directories. #3278 (2.4.0.1/2.3.12)
>>>   - Failed build artifact storage is revised to save more cmake-related
>>>     artifacts to help debugging. #3311 (2.4.0.1)
>>>   - Now doing CI builds for Intel icc and icx compilers. #3355 #3363
>>>     (2.4.1.0/2.3.13) #3407 (2.4.0)
>>>   - Overhaul of ci.yml file to be more clear and compact by using GHA
>>>     "strategy" feature. #3356 #3365 (2.4.1.0/2.3.13)
>>>   - Removed CI for windows-2016 GHA instance which will soon be removed.
>>>     #3370 (2.4.1.0)
>>>   - Test against clang 14. #3404
>>>   - Various guards against supply chain attacks durig CI. #3454 (2.4.2)
>>>   - Test against pybind11 v2.10. #3478 (2.4.2.1)
>>>   - Run SonarCloud nightly for static analysis and coverage analysis. #3505
>>>     (2.4.2.2)
>>> * Platform support:
>>>   - Fix when building with Clang on big-endian architectures. #3133
>>>     (2.4.0/2.3.9)
>>>   - Improvements to NetBSD and OpenBSD support. #3137. (2.4.0/2.3.9)
>>>   - Fixes for MSVS compile. #3168 (2.4.0/2.3.10)
>>>   - Fix problems on Windows with MSVC for Debug builds, where crashes were
>>>     occurring inside `isspace()` calls. #3310
>>>   - Improved simd.h support for armv7 and aarch32. #3361 (2.4.1.0/2.3.14)
>>>   - Suppress MacOS wasnings about OpenGL deprecation. #3380 (2.4.1.0/2.3.14)
>>>   - Fix MSVS/Windows errors. #3382 (2.4.1.1)
>>> 
>>> Notable documentation changes:
>>> * Add an oiiotool example of putting a border around an image. #3138
>>> (2.4.0/2.3.9)
>>> * Fix explanation of ImageCache "failure_retries" attribute. #3147
>>> (2.4.0/2.3.9)
>>> * Improved maketx argument explanations.
>>> * Clean up intra-document section references. #3238 (2.3.11/2.4.0)
>>> * New explanations about input and output configuration hints. #3238
>>> (2.3.11/2.4.0)
>>> * More code examples in both C++ and Python (especially for the ImageInput,
>>> ImageOutput, and ImageBufAlgo chapters). #3238 #3244 #3250 (2.3.11/2.4.0)
>>> #3263 (2.3.12/2.4.0)
>>> * Pretty much anyplace where a parameter that represents a filename, and it 
>>> is
>>> supporting UTF-8 encoding of Unicode filenames, the docs for that function
>>> explicitly say that the string is assumed to be UTF-8. #3312 (2.4.0.1)
>>> * Fix many typos in docs. #3492 (2.4.2.2)
>>> 
>>> 
>>> 
>>> --
>>> Larry Gritz
>>> l...@larrygritz.com
>>> 
>>> 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> Oiio-dev mailing list
>>> Oiio-dev@lists.openimageio.org
>>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>>> 
>> 
>> _______________________________________________
>> Oiio-dev mailing list
>> Oiio-dev@lists.openimageio.org
>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
> 
> --
> Larry Gritz
> l...@larrygritz.com <mailto:l...@larrygritz.com>
> 
> 
> 
> 
> 
> _______________________________________________
> Oiio-dev mailing list
> Oiio-dev@lists.openimageio.org
> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org

_______________________________________________
Oiio-dev mailing list
Oiio-dev@lists.openimageio.org
http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org

Reply via email to