Currently, OIIO doesn't use Cuda in any way. I have a private branch in which I 
prototyped using Cuda for some of the image math when available. It's in an 
incomplete state, but I'd like to revive it and turn it into a PR at some 
point. The reason it hasn't been a priority to finish that work is that when I 
analyze how OIIO is used (in particular, oiiotool), the fact is that even now, 
the typical usage pattern is

        1. read input images from disk
        2. do some image processing on those images
        3. write the output to disk

#1 and #3 -- the disk or network I/O -- typically dominate any oiiotool or 
scripted OIIO operation. This makes it surprisingly hard to get a substantial 
speedup by using the GPU for #2 (which would also involve having to add steps 
#1.5 copy the inputs from main memory to the GPU, and #2.5 copy the outputs 
from GPU back to main memory).

The case where GPU might speed things up substantially would be if you needed 
to read inputs from disk once, do a WHOLE LOT of steps of image math on those 
in-memory images -- in other words, a complex pipeline of image operations 
where the data can stay on the GPU the whole time -- and then write the final 
result to disk once. But as far as I can tell, that's not the pattern for the 
most common ways that people use OIIO, which are typically simple things like 
remapping value ranges, cropping an image, doing a color space transformation, 
or simply converting from one data or file type to another. I/O still dominates.

It's been a few years since I gave this a serious look, so maybe I can do 
better if I put some more time into it? Or maybe there are use cases where 
people are doing a whole lot of processing for each I/O operation?


> On Aug 18, 2021, at 4:56 AM, Reverator <i...@reverator.com> wrote:
> 
> Hi Larry,
> 
> Just wanted to thank you for all the extremely valuable work you’re doing for 
> me, and of course for the developer community at large. 
> 
> I have not had a need for OIIO for the past 2 years or so, but I’m really 
> hoping there’s going to be a demand for a CLI version of Reverator at some 
> point. I will then be back relying heavily on you.
> 
> Reading through the list, CUDA is mentioned once or twice. Do some parts of 
> your lib use CUDA, if available?
> 
> Thank you,
> 
> Chris Spence
> Reverator
> 6815 Biscayne Blvd, Suite 103-191
> Miami, FL  33138
> 
> Tel: 305 757 1330
> 
> i...@reverator.com <mailto:i...@reverator.com>
> www.reverator.com
> 
> 
> 
> 
> 
>> On Aug 18, 2021, at 2:09 AM, Larry Gritz <l...@larrygritz.com 
>> <mailto:l...@larrygritz.com>> wrote:
>> 
>> At long last, I have branched for this year's big release, OpenImageIO 2.3. 
>> The new branch is "dev-2.3" (a change from the old convention of RB-x.y; I 
>> think it's clearer since many people didn't know what RB stood for), and the 
>> first beta is tagged "v2.3.7.0-beta".  Why 2.3.7.0? Because we had 6 
>> "developer preview" snapshots along the way.
>> 
>> I'm aiming for September 1, 2021 to tag a release. It might get delayed if 
>> serious problems are discovered. But considering that SPI and probably lots 
>> of other places use master branch or developer preview snapshots for real 
>> production, for anything other changes made in the last couple weeks, I'm 
>> pretty confident that everything is solid and has already been through the 
>> heat of battle in production. In general, the only difference between our 
>> release branches and master is that release branches make a strict promise 
>> about not breaking compatibility; there is little practical difference in 
>> stability or production worthiness.
>> 
>> We will strive to make no breaking changes to the API or ABI between now and 
>> the release. After final release, when the beta designation disappears, we 
>> will be 100% strict about this promise.
>> 
>> We will keep releasing 2.2.x patches as needed, but they will slow down and 
>> be restricted to only critical bug fixes, as we transition to 2.3 being the 
>> current supported release. Meanwhile, master -- which is now the staging 
>> area for what will become 2.4 next year -- is where big new, and possibly 
>> compatibility-breaking, changes will be made.
>> 
>> 
>> 
>> Release 2.3 (1 Sept 2021?) -- compared to 2.2
>> ----------------------------------------------
>> New minimum dependencies and compatibility changes:
>> * C++ standard: **C++14 is now the minimum (gcc 6.1 - 11.2, clang 3.4 - 12,
>>  MSVS 2017 - 2019, icc 17+).** The default C++ standard mode, if none is
>>  explicitly specified, is now C++14. #2918 (2.3.4) #2955 #2977 (2.3.5)
>> * FFMmpeg (optional) dependency minimum is now 3.0 (raised from 2.6). #2994
>> * OpenCV (optional) dependency minimum is now 3.0 (raised from 2.0). #3015
>> 
>> New major features and public API changes:
>> * Changes and clarifications to `geterror()` in all classes that have one:
>>    - `geterror()` now takes an optional `clear` parameter controls if the
>>      pending error is cleared as well as retrieved (default `true`).
>>    - All classes with `geterror()` are ensured to have `has_error()`.
>>    - `geterror()` appends to the pending error message, if one is already
>>      present but not retrieved. Appending errors will be automatically
>>      separated by newlines, also any newline at the end of a geterror
>>      call will be stripped. #2740 (2.3.0.1)
>> * ImageInput error messages are now thread-specific. This prevents multiple
>>  threads simultaneously reading from the same ImageInput from getting the
>>  other thread's error messages. But it means you must always retrieve an
>>  error with `getmessage()` from the same thread that made the read call
>>  that generated the error. #2752 (2.3.0.1)
>> * ImageInput and ImageOutput have removed several fields (like the m_mutex)
>>  and instead now use a PIMPL idiom that hides internals better from the
>>  ABI. If you had a custom ImageInput/Output class that directly accessed
>>  the m_mutex, replace it instead with calls to ImageInput::lock() and
>>  unlock() (and ImageOutput). #2752 (2.3.1.0)
>> * Clarify that ImageBuf methods `subimage()`, `nsubimages()`, `miplevel()`,
>>  `nmipevels()`, and `file_format_name()` refer to the file that an ImageBuf
>>  was read from, and are thus only meaningful for ImageBuf's that directly
>>  read from files. "Computed" or copied ImageBuf's are solo images in memory
>>  that no longer correspond to a file even if the input to the computation
>>  was from a file. #2759 (2.3.0.1/2.2.9)
>> * New `get_extension_map()` returns a map that list all image file formats
>>  and their presumed file extensions. #2904 (2.3.4)
>> * Overhaul of how we handle "thumbnails" (small preview images embedded in
>>  the headers of some image file formats) #3021 (2.3.7):
>>    - Thumbnails no longer embedded in the ImageSpec as "thumbnail_image"
>>      metadata of a big character array blob.
>>    - ImageInput, ImageBuf, and ImageCache have varieties of `get_thumbnail()`
>>      method that returns the thumbnail as an ImageBuf. If this is not
>>      called, ideally the reader will not undergo the expense of reading and
>>      storing thumbnail data.
>>    - ImageOutput and ImageBuf have `set_thumbnail()` to communicate a
>>      thumbnail image as an ImageBuf.
>>    - The net effect is that reading files and retrieving ImageSpec's should
>>      be more efficient for apps that don't have a use for thumbnails.
>> * Significant improvements to UDIM handling in ImageCache/TextureSystem:
>>    - New UDIM texture name patterns recognized: `%(UDIM)d` is the Houdini
>>      convention, and `_u##v##` is for Animal Logic's internal renderer.
>>      #3006 (2.2.16/2.3.6)
>>    - It is now permissible for `get_texture_info()/get_image_info()` to
>>      retrieve metadata for UDIM patterns -- previously it failed, but now
>>      it will succeed in retrieving any metadata as long as it is present
>>      and has the same value in all the matching "UDIM tile" panels. #3049
>>      (2.3.7)
>>    - TextureSystem now exposes methods `is_udim()`, `resolve_udim()`,
>>      `inventory_udim()` that should be helpful for apps dealing with UDIM
>>      textures. See the documentation for details. #3054 (2.3.7)
>>    - Performance improvements when using UDIM textures. #3049 (2.3.7)
>> * ImageBuf, when "wrapping" an app-owned buffer, now allows explicit
>>  specification of stride lengths. This allows you to wrap a buffer that
>>  has internal padding or other non-contiguous spacing of pixels, scanlines,
>>  or image planes. #3022 (2.3.6)
>> * oiiotool new commands and options:
>>    - `--pastemeta` takes two images as arguments, and appends all the
>>      metadata (only) from the first image onto the second image's pixels
>>      and metadata, producing a combined image. #2708 (2.3.0.0)
>>    - `--chappend` and `--siappend` both allow an optional modifier `:n=`
>>      to specify the number of images from the stack to be combined
>>      (default n=2). #2709 (2.3.0.0)
>>    - `--fit` now takes an additional optional modifier: `fillmode=` with
>>      choices of `letterbox` (default), `width`, and `height`. #2784 (2.3.2.0)
>>    - `--autocc` now has an optional modifier `:unpremult=1` that causes
>>      any color transformations related to autocc to unpremultiply by alpha
>>      before the transformation and then re-premultiply afterwards, exactly
>>      the same control that exists for individual `--colorconvert` but never
>>      existed for autocc. #2890 (2.3.3)
>>    - `--list-formats` lists all the image file formats that OIIO knows
>>      about, and for each, the associated file extensions. #2904 (2.3.4)
>>    - `--skip-bad-frames` causes an error (such as an input file not being
>>      found) to simply skip to the next frame in the frame range loop, rather
>>      that immediately exiting. #2905 (2.3.4)
>>    - When doing expression substitution, `{getattribute(name)}` will be
>>      replaced by the value that `OIIO::getattribute(name, ...)` would
>>      retrieve.  #2932 (2.3.4)
>>    - `--missingfile` (which takes a subsequent argument of `error`, `black`,
>>      or `checker`) determines the behavior when an input image file is
>>      missing (the file does not exist at all, does not include cases where
>>      the file exists but there are read errors). The default value of
>>      `error` matches the old behavior: report an error and terminate all
>>      command processing. Other choices of `black` or `checker` will continue
>>      processing but substitute either a black or checkerboard image for the
>>      missing file. #2949 (2.3.4)
>>    - `--printinfo` prints verbose metadata info about the current top
>>      image on the stack. #3056 (2.3.7)
>>    - `--printstats` prints statistics about the current top image on the
>>      stack, and optionally can limit the statistics to a rectangular
>>      subregion of the image. #3056 (2.3.7)
>>    - Expanded expression now support the following new metadata notations:
>>      `META`, `METABRIEF`, and `STATS`. #3025 (2.3.6)
>>    - `--mosaic` now takes optional `fit=WxH` modifier that lets you set the
>>      "cell" size, with all constituent images resized as needed (similarly
>>      to if you used `--fit` on each individually). This is helpful for
>>      creating contact sheets without having to resize separately or to know
>>      the resolution of the original images. #3026 (2.3.6)
>>    - REMOVED `--histogram` which had been deprecated and undocumented since
>>      before OIIO 2.0. #3029 (2.3.6)
>> * Python bindings:
>>    - When transferring blocks of pixels (e.g., `ImageInput.read_image()`
>>      or `ImageOutput.write_scanline()`), "half" pixels ended up mangled
>>      into uint16, but now they use the correct `numpy.float16` type. #2694
>>      (2.3.0.0)
>>    - The value passed to `attribute(name, typedesc, value)` can now be a
>>      tuple, list, numpy array, or scalar value. #2695 (2.3.0.0)
>>    - Added Python bindings for the TextureSystem. #2842
>>    - Add the previously (inadvertently) omitted enum value for
>>      `ImageBufAlgo.MakeTxBumpWithSlopes`. #2951 (2.3.4)
>> * Environment variables:
>>    - `CUE_THREADS` env variable, if set, is now honored to set the default
>>      size of the OIIO thread pool. This helps to make OIIO-based apps be
>>      good citizens when run as OpenCue jobs. #3038 (2.3.7)
>> * Library organization:
>>    - All the utility classes are now in libOpenImageIO_Util *only* and
>>      libOpenImageIO depends on and links to libOpenImageIO_Util, rather
>>      than the utility classes being defined separately in both libraries.
>>      #2906 (2.3.4)
>>    - Include file change: `imagebuf.h` no longer includes `imagecache.h`.
>>      It should never have needed to, since it didn't need any of its
>>      declarations. Other code that should always have included both headers,
>>      but inadvertently only included `imagebuf.h`, may now need to add an
>>      explicit `#include <OpenImageIO/imagecache.h>`. #3036 (2.3.7)
>> * Important change to `Makefile` wrapper: We have a 'Makefile' that just 
>> wraps
>>  cmake for ease of use. This has changed its practice of putting builds in
>>  `build/ARCH` to just `build` (and local installs from `dist/ARCH` to `dist`)
>>  to better match common cmake practice. So where your local builds end up may
>>  shift a bit. #3057 (2.3.7)
>> * Deprecations: A number of long-deprecated functions and methods have been
>>  given deprecation attributes that will cause warnings if you use them. They
>>  will eventually be removed entirely at the next "breaking" release (3.0,
>>  whenever that is). #3032 (2.3.7)
>> 
>> Performance improvements:
>> * Speed up BMP reading by eliminating wasteful allocation and copying
>>  done on each scanline read. #2934 (2.3.4)
>> * For `IBA::to_OpenCV()`, improve efficiency for certain image copies. #2944
>>  (2.3.4) 
>> * Fix runaway parsing time for pathological XMP metadata. #2968 
>> (2.3.5/2.2.15)
>> * TextureSystem reduction in overhead when using UDIM textures. #3049 (2.3.7)
>> 
>> Fixes and feature enhancements:
>> * Fix a situation where if an ImageBuf backed by an ImageCache reads an
>>  image, then the image changes on disk, then another ImageBuf or ImageCache
>>  tries to read it, it could end up with the old version. This involved some
>>  strategic cache invalidation when ImageBuf's write images to disk. #2696
>>  (2.3.0.0)
>> * Improve parsing of XMP records in metadata: more correct handling of
>>  lists/sequences, better inference of types that look like int or float
>>  (rather than forcing unknown fields into strings), fixed bugs in parsing
>>  rational values. #2865 (2.2.12/2.3.3)
>> * ImageBuf/ImageBufAlgo:
>>    - `IBA::contrast_remap()` fixes bug that could crash for very large
>>      images #2704 (2.3.0.0)
>>    - Fix stack overflow crash in IBA::colorconvert of unusually wide images.
>>      #2716 (2.3.0.1/2.2.8)
>>    - Fix `IBA::make_texture()` incorrectly setting tile sizes. #2737
>>      (2.3.0.1/2.2.8)
>>    - `IBA::make_texture()` now correctly propagates error messages, which
>>      can be retrieved via the global OIIO::geterror() call. #2747 (2.3.0.1)
>>    - `IBA::fit()` now takes a `fillmode` parameter that controls exactly
>>      how the resize will occur in cases where the aspect ratio of the new
>>      frame doesn't exactly match that of the source image. The old way (and
>>      the default value now) is "letterbox", but now also "width" and
>>      "height" modes are allowed. See `fit()` documentation for details.
>>      #2784 (2.3.2.0)
>>    - `IBA::fit()` fixes some slight ringing at image edges when using a
>>      combination of black wrap mode and a filter with negative lobes.
>>      #2787 (2.3.2.0)
>>    - Fix: `ociolook()` and `ociofiletransform()` internally reversed the
>>      order of their `inverse` and `unpremult` arguments, making it hard to
>>      select the inverse transformation. #2844 (2.3.3/2.2.11)
>>    - Fix crash for certain calls to `ImageBuf::set_write_format()` when
>>      writing files that support per-channel data types. #2885 (2.3.3)
>>    - Fix: `IBA::fillholes_pushpull` did not correctly understand which
>>      channel was alpha when generating subimages. #2939 (2.3.4)
>>    - Fix: `IBA::render_text` did not properly account for non-1 alpha of
>>      the text color. #2981 (2.3.5/2.2.15)
>>    - `IBA::colorconvert`, `colormatrixtransform`, `ociolook`, `ociodisplay`,
>>      and `ociofiletransform` have been fixed so that if input is more than
>>      4 channels, the additional channels will be copied unchanged, rather
>>      than inadvertently set to 0. #2987 (2.3.5/2.2.16)
>>    - Thread safety has been improved for `ImageBuf::init_spec()` and `read()`
>>      (though no problem was ever reported in the wild). #3018 (2.3.6)
>>    - `render_text()` now accepts text strings with embedded linefeeds and
>>      will turn them into multiple lines of rendered text. #3024 (2.3.6)
>> * ImageCache/TextureSystem/maketx:
>>    - Fix ImageCache bug: add_tile/get_tile not properly honoring when
>>     `chend < chbegin` it should get all channels. #2742 (2.3.0.1/2.2.8)
>>    - `ImageBufAlgo::make_texture()` (as well as `maketx` and `oiiotool 
>> -otex`)
>>      clamp `half` values to their maximum finite range to prevent very large
>>      float inputs turning into `Inf` when saved as half values. #2891 (2.3.3)
>>    - Fix crash when sampling non-zero-base channels. #2962 (2.3.5/2.2.15)
>>    - `IBA::make_texture()` rejects "deep" input images, since they cannot
>>      be made into textures. Doing this could previously crash. #2991
>>      (2.3.5/2.2.16)
>>    - maketx and `oiiotool -otex` have fixed double printing of error
>>      messages #2992 (2.3.5).
>>    - Making bumpslopes textures now allows scaled slopes UV normalization.
>>      This is exposed as new maketx argument `--uvsopes_scale`, or passing
>>      the attribute `uvslopes_scale` (int) to make_texture(). #3012 (2.3.6)
>>    - There is a new variety of ImageCache::invalidate() that takes an
>>      `ImageHandle*` argument instead of a filename. #3035 (2.3.7)
>> * oiiotool:
>>    - `--resize` of images with multi-subimages could crash. #2711 (2.3.0.0)
>>    - Improve oiiotool's guessing about the desired output format based on
>>      inputs (in the absence of `-d` to specify the format). #2717
>>      (2.3.0.1/2.2.8)
>>    - `--text` now accepts text strings with embedded linefeeds and
>>      will turn them into multiple lines of rendered text. #3024 (2.3.6)
>> * BMP
>>    - Fix reading BMP images with bottom-to-top row order. #2776
>>      (2.3.1.1/2.2.9)
>>    - Correctly read BMP images of the older V1 variety without crashing.
>>      #2899 (2.3.3/2.2.13)
>>    - Fix error in the rightmost pixel column when reading 4 bpp images with
>>      odd horizontal resolution. #2899 (2.3.3/2.2.13)
>>    - BMP reads now return metadata "bmp:bitsperpixel" (only when not 24
>>      or 32) to indicate non-whole-byte channels sizes in the file, and
>>      "bmp:version" to indicate the version of the BMP format. #2899
>>      (2.3.3/2.2.13)
>>    - Speed up BMP reading by eliminating wasteful allocation and copying
>>      done on each scanline read. #2934 (2.3.4)
>>    - For BMP files that are 8 bits per pixel and all palette entries have
>>      R == G == B values, read the file as an 8-bit grayscale image instead
>>      of needlessly promoting to a full RGB 3-channel image. #2943 (2.3.4)
>>    - Full support for reading RLE-compressed BMP images. #2976 (2.3.5/2.2.15)
>>    - Write single channel BMP as 8 bit palette images. #2976 (2.3.5/2.2.15)
>> * DPX
>>    - Output to DPX files now supports IOProxy. (Input already did.) #3013
>>      (2.2.17/2.3.6)
>> * FFMpeg/movies:
>>    - Avoid potential crash when a frame can't be read. #2693 (2.3.0.0)
>>    - Several varieties of encoded videos with 12 bits per channel and
>>      having alpha were incorrectly reported as 8 bits and without alpha.
>>      #2989 (2.3.5/2.2.16)
>> * GIF
>>    - Support UTF-8 filenames on Windows for GIF files. #2777 (2.3.2.0)
>>    - Fix error checking for non-existant GIF files. #2886 (2.3.3)
>> * HEIC
>>    - Fix error decoding Apple HEIF files. #2794/#2809 (2.3.2.0)
>>    - Better valid_file() check for HEIF. #2810 (2.3.2.0)
>>    - Enabled AVIF decoding of heic files (requires libheif >= 1.7 and for
>>      it to have been built with an AV1 encoder/decoder). #2811 #2812 #2814
>>      #2818 (2.3.3.0)
>> * IFF
>>    - Fix broken reads of 16 bit iff files. #2736 (2.3.0.1/2.2.8)
>> * JPEG
>>    - Allow reading of JPEG files with mildly corrupted headers. #2927 (2.3.4)
>> * OpenEXR:
>>    - Fix rare crash that was possible when multithreaded writing openexr
>>      files. #2781 (2.3.2.0)
>>    - Improved error reporting when errors are encountered writing OpenEXR
>>      files. #2783 (2.3.2.0)
>>    - Fix potential crash parsing OpenEXR header that contains Rational
>>      attributes with certain values. #2791 (2.2.10/2.3.2)
>>    - EXPERIMENTAL: When building against OpenEXR 3.1, the OIIO CMake option
>>      `-DOIIO_USE_EXR_C_API=ON` will use a new OpenEXR API that we think
>>      will allow higher performance texture reads in a multithreaded app.
>>      This has not yet been benchmarked or tested thoroughly. #3009 #3027
>>      (2.3.6)
>>    - The reader no longer renames file metadata "version" into the special
>>      "openexr:version" that would indicate the OpenEXR file format version
>>      of the file. That's never what it meant! It really was just arbitrary
>>      metadata. #3044 (2.3.7)
>> * PNG
>>    - Read Exif data from PNG files. #2767 (2.3.1.1/2.2.9)
>> * PSD
>>    - Add support for reading ISD profiles for PSD input. #2788 (2.3.2.0)
>>    - Fix loading PSB files with cinf tags. #2877 (2.2.12/2.3.2)
>> * RAW:
>>    - Additional input configuration hints to control options in the
>>      underlying LibRaw: `"raw:user_flip"` #2769 (2.3.1.0)
>>      `"raw:balance_clamped"`, `"raw:apply_scene_linear_scale"`,
>>      `"raw:camera_to_scene_linear_scale"` #3045 (2.3.7)
>>    - Correctly handle RAW files with Unicode filenames on Windows. #2888
>>      (2.3.3)
>>    - Fix garbled output when `raw:Demosaic` hint is `"none"`. #3045 (2.3.7)
>> * Targa
>>    - Fix potential crash when reading files with no thumbnail. #2903
>>      (2.3.3/2.2.13)
>>    - Fix alpha handling for some files. #3019 (2.3.6)
>> * TIFF:
>>    - Fix broken reads of multi-subimage non-spectral files (such as
>>      photometric YCbCr mode). #2692 (2.3.0.0)
>>    - Fix spec() and spec_dimensions() for MIPmapped TIFF files, they did
>>      not recognize being asked to return the specs for invalid subimage
>>      indices. #2723 (2.3.0.1/2.2.7)
>>    - Add ability to output 1bpp TIFF files. #2722 (2.3.0.1/2.2.7)
>>    - Fix reading TIFF files with "separate" planarconfig and rowsperstrip
>>      more than 1. #2757 (2.3.0.1/2.2.9)
>>    - Fix incorrect reading of tiled TIFF files using certain rare TIFF
>>      features that also have a vertical resolution that is not a whole
>>      multiple of the tile size. #2895 (2.3.3/2.2.13)
>>    - Support IOProxy for reading TIFF files. #2921 (2.3.4)
>>    - TIFF plugin now properly honors caller request for single-threaded
>>      operation. #3016 (2.3.6)
>> * WebP:
>>    - Add support for requesting compression "lossless". #2726 (2.3.0.1/2.2.8)
>>    - Input improvements including: RGB images are kept as RGB instead of
>>      always adding alpha; more efficient by skipping alpha premultiplication
>>      when it's unnecessary; now can read animated WebP images as
>>      multi-subimage files. #2730 (2.3.0.1/2.2.8)
>> * Fix memory leak during decoding of some invalid Exif blocks. #2824
>> * Fix possible divide-by-zero error in read_image/read_scanlines for invalid
>>  image sizes (usually from corrupt files). #2983 (2.3.5/2.2.16)
>> 
>> Developer goodies / internals:
>> * Internals now use C++11 `final` keywords wherever applicable. #2734
>>  (2.3.0.1)
>> * More internals conversion of old Strutil::sprintf to Strutil::fmt::format
>>  and related changes. #2889 (2.3.3)
>> * Redundant format conversion code removed from imageio.cpp #2907 (2.3.4)
>> * Eliminate direct output to std::cerr and std::cout by library calls.
>>  #2923 (2.3.4)
>> * argparse.h:
>>    - ArgParse::abort() lets the response to a command line argument signal
>>      that no further arguments should be parsed. #2820 (2.3.3/2.2.11)
>> * color.h:
>>    - New `ColorConfig::OpenColorIO_version_hex()` returns the hex code for
>>      the version of OCIO we are using (0 for no OCIO support). #2849 (2.3.3)
>> * farmhash.h:
>>    - Clean up all non-namespaced preprocessor symbols that are set
>>      by this header and may pollute the caller's symbols. #3002 
>> (2.2.16/2.3.6)
>> * filesystem.h:
>>    - New Filesystem::generic_filepath() returnss a filepath in generic
>>      format (not OS specific). #2819 (2.3.3/2.2.11)
>>    - Improve exception safety in Filesystem directory iteration. #2998
>>      (2.2.16/2.3.6)
>>    - New `filename_to_regex()` makes a filename "safe" to use as a
>>      regex pattern (for example, properly backslashing any `.` characters).
>>      #3046 (2.3.7)
>>    - Some methods that used to take a `const std::string&` now take a
>>      `string_view`. #3047 (2.3.7)
>> * fmath.h:
>>    - Use CPU intrinsics to speed up swap_ending (by 8-15x when swapping
>>      bytes of large arrays). #2763 (2.3.1.0)
>> * hash.h:
>>    - `farmhash::inlined::Hash` now is constexpr and works for Cuda.
>>      #2843 (2.3.3) #2914 #2930 (2.3.4)
>> * oiioversion.h:
>>    - New macros `OIIO_VERSION_GREATER_EQUAL` and `OIIO_VERSION_LESS`.
>>      #2831 (2.3.3/2.2.11)
>> * platform.h:
>>    - New macro OIIO_INLINE_CONSTEXPR, equivalent to `inline constexpr` for
>>      C++17, but just constexpr for C++ <= 14. #2832 (2.3.3/2.2.11)
>> * simd.h:
>>    - Fix incorrect ARM NEON code in simd.h. #2739 (2.3.0.1/2.2.8)
>> * span.h:
>>    - `std::size()` and `std::ssize()` should work with OIIO::span now.
>>      #2827 (2.3.3/2.2.11)
>> * string_view.h:
>>    - `std::size()` and `std::ssize()` should work with OIIO::string_view
>>      now. #2827 (2.3.3/2.2.11)
>>    - More thorough constexr of string_view methods. #2841 (2.3.3)
>> * strongparam.h:
>>    - New StrongParam helper for disambiguating parameters. #2735 (2.3.2)
>> * strutil.h:
>>    - Strutil `splits()` and `splitsv()` should return no pieces when passed
>>      an empty string. (It previously erroneously returned one piece
>>      consisting of an empty string.) #2712 (2.3.0.0)
>>    - Fix build break when strutil.h was included in Cuda 10.1 code. #2743
>>      (2.3.0.1/2.2.8)
>>    - `strhash()` is now constexpr for C++14 and higher. #2843 (2.3.3)
>>    - New Strutil functions: find, rfind, ifind, irfind #2960 (2.3.4/2.2.14)
>>      contains_any_char #3034 (2.3.7) rcontains, ircontains #3053 (2.3.7)
>> * sysutil.h:
>>    - Extend `getenv()` to take a default if the environment variable is not
>>      found. #3037 #3040 (2.3.7)
>> * typedesc.h:
>>    - `TypeDesc::basetype_merge(a,b)` returns a BASETYPE having the
>>      precision and range to hold the basetypes of either `a` or `b`.
>>      #2715 (2.3.0.0)
>>    - TypeDesc can now describe 2D and 3D bounding boxes, as arrays of 2
>>      VEC2 aggregates (for 2D) or VEC3 aggregates (for 3D) with "BOX"
>>      semantic. The shorthand for these are `TypeBox2`, `TypeBox3` (for
>>      float), and `TypeBox2i` and `TypeBox3i` for integer or pixel coordinte
>>      boxes. #3008 (2.2.17/2.3.6)
>> * unordered_map_concurrent.h:
>>    - New methods find_or_insert, nobin_mask(). #2867 (2.2.12/2.3.3)
>> * ustring.h:
>>    - ustring internals now have a way to ask for the list of ustrings whose
>>      hashses collided.  #2786 (2.2.11/2.3.2.0)
>>    - ustring now guarantees that no two ustrings will return the exact same
>>      value for `hash()`. #2870 (2.3.3)
>> 
>> Build/test system improvements and platform ports:
>> * CMake build system and scripts:
>>    - Instead of defaulting to looking for Python 2.7, the OIIO build now
>>      defaults to whatever Python is found (though a specific one can still
>>      be requested via the PYTHON_VERSION variable). #2705 (2.3.0.0/2.2.8)
>>      #2764 (2.3.0.1/2.2.8)
>>    - Make the OIIO CMake files work properly if OIIO is a subproject. Also
>>      various other CMake script refactoring. #2770 (2.3.1.1/2.2.9)
>>    - Extend checked_find_package with VERSION_MIN and VERSION_MAX #2773
>>      (2.3.1.1/2.2.9), DEFINITIONS and SETVARIABLES #3061 (2.3.7)
>>    - No longer directly link against python libraries when unnecessary.
>>      #2807 (2.2.11/2.3.3)
>>    - On Windows, fix some linkage problems by changing the pybind11
>>      bindings to make a CMake "shared" library rather than "module". Sounds
>>      wrong, but seems to work. We will reverse if this causes problems.
>>      #2830 (2.3.3/2.2.11)
>>    - Improvements to building or linking static libraries. #2854 
>> (2.2.12/2.3.3)
>>    - Change default STOP_ON_WARNING to OFF for release branches (including
>>      this one) so that small change in compiler warnings after our release
>>      don't break anybody's builds. (Though we still stop on warnings for CI
>>      builds). #2861 (2.2.12/2.3.3)
>>    - The pkgconfig OpenImageIO.pc was specifying the include path
>>      incorrectly. #2869 (2.2.12/2.3.3)
>>    - Support for CMake 3.20. #2913 #2931 (2.3.4)
>>    - Be sure to have the namespace include the patch number for pre-release
>>      builds from the master branch. #2948 (2.3.4)
>>    - Use modern style cmake targets for PNG and ZLIB dependencies. #2957
>>      (2.3.4)
>>    - Propagate C++14 minimum requirement to downstream projects via our
>>      cmake config exports. #2965 (2.3.5)
>>    - Fix exported cmake config files, which could fail if Imath and OpenEXR
>>      weren't the at the same version number. #2975 (2.3.5/2.2.15)
>>    - Change default postfix for debug libraries to `_d`. (2.3.5)
>>    - Our CMake `checked_find_package` is now able to be requested to favor
>>      an exported config file, if present, on a package-by-package basis.
>>      #2984 (2.3.5/2.2.15)
>>    - If a package is requested to be disabled, skip its related tests rather
>>      than reporting them as broken. #2988 (2.3.5/2.2.16)
>>    - Finding boost is more flexible when desiring static libraries. #3031
>>      (2.3.7/2.2.17)
>>    - FindTBB.cmake module updated to create proper targets. #3060 (2.3.7)
>> * Dependency version support:
>>    - C++20 is now supported. #2891 (2.3.3)
>>    - Fix deprecation warnings when building with very new PugiXML versions.
>>      #2733 (2.3.0.1/2.2.8)
>>    - Fixes to build against OpenColorIO 2.0. #2765 (2.3.0.1/2.2.8) #2817
>>      #2849 (2.3.3/2.2.11) #2911 (2.3.4)
>>    - Fix to accommodate upcoming OpenColorIO 2.1 deprecation of
>>      parseColorSpaceFromString. #2961 (2.3.5/2.2.15)
>>    - Work to ensure that OIIO will build correctly against Imath 3.0 and
>>      OpenEXR 3.0, as well as Imath 3.1 / OpenEXR 3.1. #2771 (2.3.1.1/2.2.9)
>>      #2876 #2678 #2883 #2894 (2.3.3/2.2.12) #2935 #2941 #2942 #2947 (2.3.4)
>>    - Better finding of OpenJpeg 2.4. #2829 (2.3.3/2.2.11)
>>    - On Mac, libheif 1.10 is very broken. Don't use that version. #2847
>>      (2.3.3/2.2.11)
>>    - Fix build break against changes coming in future libtiff, where it
>>      is changing from some libtiff-defined integer types to the equivalent
>>      stdint.h types. #2848 (2.3.3/2.2.11)
>>    - Fixes to support the libraw 202101 snapshot (their in-progress 0.21.0).
>>      #2850 (2.3.3/2.2.11)
>>    - More clear warnings about using OpenVDB 8+ when building for C++11,
>>      because OpenVDB 8 requires C++14 or higher. #2860  (2.2.12/2.3.3)
>>    - More gracefully handle building against a custom Imath/OpenEXR even
>>      when another exists in the system area. #2876 (2.2.12/2.3.3)
>>    - Minor fixes to build cleanly against the upcoming Imath 3.0. #2878
>>      (2.2.12/2.3.3)
>>    - Remove obsolete dependency on Boost random (now use std::random).
>>      #2896 (2.3.3)
>>    - libtiff 4.3 is supported. #2953 (2.3.4)
>>    - We now include a `build_OpenJPEG.bash` script that can conveniently
>>      build a missing OpenJPEG dependency. (2.3.5/2.2.16)
>>    - Changes to make it build against TBB 2021. #2985 (2.3.5/2.2.15)
>>    - Support for building OIIO with gcc 11. #2995 (2.2.16/2.3.6)
>>    - Fixes to accommodate Imath 3.1 upcoming changes. #2996 (2.2.16/2.3.6)
>>    - Finding FFMpeg now correctly detects the version. #2994 (2.2.16/2.3.6)
>>    - FFMpeg minimum version is now >= 3.0. #2999 (2.3.6)
>>    - Fixes for detecting and using Ptex, among other things got the version
>>      wrong. #3001 (2.2.16/2.3.6)
>>    - Fixes for building against fmt 8.0. #3007 (2.3.6)
>>    - The OpenCV minimum version is now >= 3.0. #3015 (2.3.6)
>>    - Fixes to build properly against the upcoming OpenColorIO 2.1. #3050
>>      (2.3.7)
>>    - All the `src/build_scripts/build_*.bash` scripts now honor an env
>>      variable called `DOWNLOAD_ONLY`, which if set will only do the downloads
>>      but not the builds. #3058 (2.3.7)
>> * Testing and Continuous integration (CI) systems:
>>    - Completely get rid of the old appveyor CI. #2782 (2.3.2.0)
>>    - Test against libtiff 4.2 in the "latest releases" test. #2792 (2.3.2.0)
>>    - Got Windows CI fully working, bit by bit. #2796 #2798 #2805 #2821 #2826
>>      #2834 #2835 #2836 #2838 #2839 #2840 (2.3.3)
>>    - Reduce redundant verbosty in CI output logs during dependency building.
>>    - Modify hash_test to verify correctness and stability of the hashes.
>>      #2853 (2.3.3)
>>    - When building custom OpenEXR with build_openexr.bash, don't have it
>>      build the examples. #2857 (2.2.12/2.3.3)
>>    - Speed up CI by using GitHub 'cache' actions + ccache. #2859 
>> (2.2.12/2.3.3)
>>    - Separate stages (setup, deps, build, test) into separate GHA "steps"
>>      for better logging and understanding of the timing and performance.
>>      #2862 (2.2.12/2.3.3)
>>    - Now actively testing libheif in Linux CI. #2866 (2.2.12/2.3.3)
>>    - Remove the last vestiges of Travis-CI, which we no longer use. #2871
>>      (2.2.12/2.3.3)
>>    - For failed tests, add CMake cache and log part of the saved artifacts.
>>      (2.2.12/2.3.3)
>>    - CI now tests build in C++20 mode. #2891 (2.3.3)
>>    - Our CI clang-format test now uses LLVM/clang-format 11. #2966
>>    - Test the clang11 + C++17 combo. #3004 (2.3.6)
>> * Platform support:
>>    - Fixes for mingw. #2698 (2.3.0.0)
>>    - Windows fix: correct OIIO_API declaration on aligned_malloc,
>>      aligned_free of platform.h. #2701 (2.3.0.0)
>>    - Fix boost linkage problem on Windows. #2727 (2.3.0.1/2.2.8)
>>    - Fix warnings when compiling webpinput.cpp on 32 bit systems. #2783
>>      (2.3.2.0)
>>    - Fix problems with `copysign` sometimes defined as a preprocessor symbol
>>      on Windows. #2800 (2.3.2)
>>    - Fixes related to Mac M1-based systems: Fix crash in ustring internals
>>      #2990 (2.3.5/2.2.15.1)
>> 
>> Notable documentation changes:
>> * Make Readthedocs generate downloadable HTML as well as PDF. #2746
>> * Explain how to read image data into separate per-channel buffers. #2756
>>  (2.3.0.1/2.2.8)
>> * Improve use of breathe and formatting. #2762 (2.3.1.0)
>> * Remove documentation of deprecated ImageBufAlgo functions. #2762 (2.3.1.0)
>> * Document missing texture option fields. #2762 (2.3.1.0)
>> * Starting to use "sphinx_tabs" as a clear way to present how things should
>>  be done for different language bindings. #2768 (2.3.1.0)
>> 
>> --
>> 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

--
Larry Gritz
l...@larrygritz.com




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

Reply via email to