Hi all,
I’m new here to this mailinglist, but I lurked and wrote in the ASWF slack
many times in different channels. I always wondered, is there a specific
reason why OIIO hasn’t made it to the ASWF yet? Especially for all the
reasons mentioned about the scope and size of this library, and how hard it
must be to manage that complexity by (mostly) yourself.

Btw, thanks for all your hard work!

On Thu, 1 Sep 2022 at 18:25, <oiio-dev-requ...@lists.openimageio.org> wrote:

> Send Oiio-dev mailing list submissions to
>         oiio-dev@lists.openimageio.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
> or, via email, send a message with subject or body 'help' to
>         oiio-dev-requ...@lists.openimageio.org
>
> You can reach the person managing the list at
>         oiio-dev-ow...@lists.openimageio.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Oiio-dev digest..."
>
>
> Today's Topics:
>
>    1. Re: OpenImageIO v2.4.3.0-beta (Larry Gritz)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Thu, 1 Sep 2022 10:15:27 -0700
> From: Larry Gritz <l...@larrygritz.com>
> To: OpenImageIO dev list <oiio-dev@lists.openimageio.org>
> Subject: Re: [Oiio-dev] OpenImageIO v2.4.3.0-beta
> Message-ID: <9799366b-1d6f-402d-a5e5-628ffcc9f...@larrygritz.com>
> Content-Type: text/plain; charset="utf-8"
>
> 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>
> 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
> > 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
>
>
>
>
>
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://lists.openimageio.org/pipermail/oiio-dev-openimageio.org/attachments/20220901/d67e81f3/attachment.htm
> >
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> Oiio-dev mailing list
> Oiio-dev@lists.openimageio.org
> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>
>
> ------------------------------
>
> End of Oiio-dev Digest, Vol 168, Issue 2
> ****************************************
>
-- 
*Valerio Viperino - Digital Design&Code*

*http://valerioviperino.me <http://valerioviperino.me/portfolio/> (website)
- **https://instagram.com/vvz3n <https://instagram.com/vvz3n> (social)*
_______________________________________________
Oiio-dev mailing list
Oiio-dev@lists.openimageio.org
http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org

Reply via email to