Files
UnrealEngine/Engine/Source/ThirdParty/Imath/Imath-3.1.12/CHANGES.md
2025-05-18 13:04:45 +08:00

35 KiB

Imath Release Notes

Version 3.1.12 (September 9, 2024)

Patch release with a small fix:

  • Support for compiling half.h with hip-runtime-amd

Also, the v3.1.11 release had improper versioning in its cmake and pkgconf configuration files. This is now fixed.

Merged Pull Requests

  • [#426] Fix redefinition of half when using with hip-runtime-amd
  • [#425] Bump actions/upload-artifact from 4.3.6 to 4.4.0
  • [#422] Bump actions/upload-artifact from 4.3.5 to 4.3.6
  • [#416] Bump ossf/scorecard-action from 2.3.3 to 2.4.0
  • [#421] Add codeql workflow
  • [#419] Bump actions/upload-artifact from 4.3.4 to 4.3.5
  • [#420] Fix GHA CI after they upgraded nodejs
  • [#398] Updated CI workflow to 2024 images.
  • [#413] Bump github/codeql-action from 3.25.1 to 3.25.12
  • [#414] Bump sphinx from 7.2.6 to 7.4.2
  • [#411] Bump actions/upload-artifact from 4.3.2 to 4.3.4
  • [#401] Bump ossf/scorecard-action from 2.3.1 to 2.3.3
  • [#415] Bump sigstore/gh-action-sigstore-python from 2.1.1 to 3.0.0
  • [#390] Bump actions/upload-artifact from 4.3.1 to 4.3.2
  • [#389] Bump github/codeql-action from 3.24.10 to 3.25.1
  • [#387] Bump sphinx from 5.3 to 7.2.6
  • [#385] Bump github/codeql-action from 2.2.4 to 3.24.10
  • [#386] Bump actions/upload-artifact from 3.1.0 to 4.3.1
  • [#384] Improve workflow files
  • [#383] Add dependabot.yml
  • [#382] Updated docker images to 2024.
  • [#378] Add preview link to readthedocs build to PR description
  • [#380] Add website workflows and improve ci workflow filter
  • [#379] Add custom website footer with ASWF logo and proper copyright
  • [#377] Pin sphinx to 5.3
  • [#376] 🔗 Fix install URLs
  • [#363] Update install instructions to reflect new SO versioning policy
  • [#375] Remove -Dsonar.login from sonar-scanner command line

Version 3.1.11 (February 28, 2024)

Patch release with small build fix:

  • Add explicit std:: namespace for isfinite in ImathFun.cpp

This release also introduces the practice of signing release artifacts via sigstore.

Merged Pull Requests

  • [#371] ImathFun.cpp: add std:: to isfinite in remaining cases (#371)
  • [#369] Add workflow to sign release artifacts with Sigstore
  • [#368] Add std:: to isfinite in ImathFun.cpp

Version 3.1.10 (January 26, 2024)

Patch release with various build/bug fixes.

Build fixes:

  • Fix a problem where downstream projects using Imath would build python bindings even if they weren't requested.

  • Fix for missing std::bit_cast

  • Fix missing/necessary use of IMATH_HOSTDEVICE

  • IMATH_INSTALL_PKG_CONFIG is now on by default, even on Windows

  • Fix calling default constructor by uniform init in TypeTraits

  • Fix redundant PYIMATH_EXPORTS causing compile issues on Windows Clang

  • Update to SO versioning policy:

    This change adopts a policy of appending the MAJOR.MINOR.PATCH software release name to the SONAME to form the real name of the shared library.

    See website/install.rst and PR #339 for more details.

Bug fixes:

  • Fix half to float giving wrong results on older x86_64 CPUs on Windows

Other changes:

  • succ()/pred() now use std::nextafter().
  • Expand epsilon bounds for m44x pyImath test.
  • Rename "docs" to "website".
  • Add missing copyright/license identifiers.

Merged Pull Requests

  • [#363] Update install instructions to reflect new SO versioning policy

  • [#362] Require sphinx 5.0

  • [#361] src/python/config/ModuleDefine.cmake: do not install a cmake file exporting targets for dependent projects

  • [#358] Fix half to float giving wrong results on older x86_64 CPUs on Windows

  • [#353] Changed implementation of succ and pred to use std::nextafter.

  • [#350] Fix check for the availability of std::bit_cast

  • [#349] IMATH_INSTALL_PKG_CONFIG is on by default, even on Windows

  • [#347] Export Imath from the build tree and so on.

  • [#344] rm unnecessary IMATH_HOSTDEVICE attributes.

  • [#342] Add missing copyright/license identifiers

  • [#341] Remove unnecessary files

  • [#340] Fix calling default constructor by uniform init.

  • [#339] Update and simply SO versioning policy

  • [#338] Rename "docs" to "website"

  • [#333] Expand epsilon bounds for m44x pyImath test

  • [#331] Fixed redundant PYIMATH_EXPORTS causing compile issues on Windows Clang

  • [#326] Use security@openexr.com for consistency

  • [#320] Add missing IMATH_HOSTDEVICE to Matrix33::invert(bool)

Version 3.1.9 (May 31, 2023)

Patch release that fixes an correct .so version number introduced in v3.1.8. All Imath library functionality is compatible with v3.1.8.

This release also reverts #305, which inadvertently introduced additional python bindings in v3.1.8 that altered the ABI of libPyImath. libPyImath is now ABI-compatible with v3.1.7 and previous releases.

Version 3.1.8 (May 22, 2023)

NOTE: this version has an incorrect .so number and should not be used. Use v3.1.9 instead.

Patch release that addresses miscellaneous minor compiler/build/doc issues and extends test coverage.

Merged Pull Requests

  • [#318] Separate CI job for docs
  • [#317] fix the macro switching half-precision floating-point format implementation.
  • [#315] Updated Mac and Windows jobs for VFX platform 2023.
  • [#314] Remove duplicate IMATH_HOSTDEVICE
  • [#313] IMATH_EXPORT for Rand32::nextf()
  • [#310] Extend test coverage
  • [#309] Undo #307, restore array-based Matrix constructors
  • [#308] Fix run_gcov.sh to use proper _build/_coverage dirs
  • [#307] Conditionally include Matrix constructors duplicated by interop declarations
  • [#306] Fix coverage analysis for .c files
  • [#305] Extend test code coverage and add missing python bindings
  • [#303] Remove unused variables
  • [#302] In testMatrix(), call fabs() instead of fabsf() for double values
  • [#300] Check return status of extractSHRT in computeRSMatrix

Version 3.1.7 (March 1, 2023)

NOTE: this version has an incorrect .so number and should not be used. Use v3.1.9 instead.

Patch release with miscellaneous bug/doc/build fixes. In particular:

  • Support for relative prefix in pkg-config
  • Reorganization of documentation at https://imath.readthedocs.io
  • Add a trace() method on Matrix types

Merged Pull Requests

  • [#296] Move index to bottom of main page; remove top-level link
  • [#295] Fix doc typo
  • [#294] Fix documentation glitches and symbol visibility table
  • [#293] Reorganize repo/readthedocs documentation
  • [#292] Add missing licenses/copyrights
  • [#291] Support relative prefix in pkg-config
  • [#282] Remove MACOSX_RPATH forcing
  • [#280] Add trace function for matrix types
  • [#279] Define BOOST_BIND_GLOBAL_PLACEHOLDERS to suppress pragma message
  • [#278] Use Py_ssize_t in place of size_t where appropriate to avoid warnings
  • [#277] Update CONTRIBUTING.md to be consistent with OpenEXR
  • [#275] Remove export attribute from inline half functions

Version 3.1.6 (November 7, 2022)

Patch release with miscellaneous bug/doc/build fixes.

  • [#269] fix memory leak in V3fArrayFromBuffer
  • [#268] Add for int64_t
  • [#263] Initialize x in testRoots.cpp:solve() to suppress compiler warning
  • [#262] Fix gcc compiler warning in testFun.cpp
  • [#261] Test return value of extractSHRT to avoid uninitialized reference
  • [#260] Fix example code so it compiles as is
  • [#259] Cuda safety in several headers
  • [#256] Fix markdown and typos in README.md
  • [#255] Do not warn if half.h has already being included
  • [#250] Fix compiler warnings on windows
  • [#249] Remove irrelevant cvs ignore files
  • [#248] Update sphinx version

Version 3.1.5 (March 28, 2022)

Patch release with miscellaneous bug/doc/build fixes.

In particular, this fixes an issue that could lead to incorrect values for numeric_limits<half>. This also updates the CI workflow matrix to VFX-CY2022.

  • [#246] Update CI workflow matrix for VFX-CY2022
  • [#245] Use _WIN32 instead of _MSC_VER to fix mingw build
  • [#244] Fix 32-bit x86 build failure with 16c instructions
  • [#241] Move numeric_limits<half> specializations into half.h
  • [#236] Change references to "master" branch to "main"

Version 3.1.4 (January 21, 2022)

Patch release with miscellaneous bug/doc/build fixes.

  • [#229] Remove some simple typos in the code
  • [#228] Added missing check _M_IX86 or _M_X64 when using __lzcnt.
  • [#224] SolveNormalizedCubic fix to return proper real root
  • [#223] Add docs target only if not a subproject
  • [#222] Fix docs race condition and make installation optional
  • [#220] Remove dead PyImath code and references to ilmbase
  • [#219] Use equalWithAbsError instead of equal operator for float
  • [#218] Fix sphinx warnings and man page filenames
  • [#215] Adding missing stdexcept header
  • [#214] Use .x instead of operator[] for better SIMD auto-vectorization
  • [#213] Remove extra project layer for the pyimath code
  • [#209] Successor/predecessor functions use isnan() and isinf()
  • [#207] Fix python imath export
  • [#202] Cuda safety fixes
  • [#185] Sort Imath source files
  • [#182] Fix formatting in release notes

Version 3.1.3 (September 2, 2021)

Patch release with miscellaneous fixes

  • [#204] Fix undefined access of a vector when empty
  • [#203] Require sphinx 4.0.3
  • [#201] Build sphinx/doxygen docs with CMake
  • [#200] Use PYIMATH_OVERRIDE_PYTHON_INSTALL_DIR to specify destination python modules
  • [#199] Guard __has_attribute for compilers that don't support it
  • [#198] Cuda safety fixes
  • [#194] Replace stray Imath:: with IMATH_INTERNAL_NAMESPACE::

Version 3.1.2 (July 31, 2021)

Patch release that fixes a Windows header issue.

  • [#190] Improve handling of #include <*intrin.h>

Version 3.1.1 (July 20, 2021)

Patch release that fixes a build failure on ARM64 macOS

  • [#184] Include <x86intrin.h> only if __x86_64__

Version 3.1.0 (July 13, 2021)

Minor release with new features:

  • Optimized half-to-float and float-to-half conversion, using F16C SSE instruction set if available. Non-SSE conversion eliminates the float-to-half exponent lookup table, and half-to-float conversion provides a compile-time-optional bit shifting that is slower but eliminates the need for the lookup table, for applications where memory is limited.

    Half-to-float and float-to-half conversion is also available as C-language functions imath_half_to_float() and imath_float_to_half().

    All new conversions produced identical results, and new options are off by default to ensure backwards compatibility. See https://imath.readthedocs.io for more info.

  • noexcept specifier can be eliminated at compile-time via the IMATH_USE_NOEXCEPT CMake option.

  • Python bindings:

    • FixedArray objects support a "read only" state.
    • FixedArray objects support python buffer protocol.
  • Optimized 4x4 matrix multiplication.

Merged Pull Requests

  • [#181] Clean up half lookup-table options and related docs
  • [#179] Remove dead code from half
  • [#178] Update Imath docs for 3.1
  • [#177] v3.1.0 release notes
  • [#175] Clean up library VERSION and SOVERSION
  • [#173] Update README.md and INSTALL.md for 3.1
  • [#172] Use CMAKE_INSTALL_FULL_LIBDIR/INCLUDEDIR for pkgconfig
  • [#169] Add testInterop to test list in define_imath_test()
  • [#168] Push/pop Windows warning pragma
  • [#167] Clean up cmake lib symlink message
  • [#166] Fix non-versioned library symlinks in debug build.
  • [#165] Use CMAKE__POSTFIX for .pc file lib suffix.
  • [#162] silence a few warnings noticed with -Weverything
  • [#160] Clean up analysis_workflow.yml
  • [#159] Add new macros to Doxyfile PREDEFINED
  • [#158] Improve 4x4 matrix multiplication
  • [#157] IMATH_NOEXCEPT macro to make noexcept a compile-time option
  • [#156] PyImath read-only FixedArray state & python buffer protocol support
  • [#155] Release notes for v3.0.4
  • [#153] Configure ImathTest as optional standalone program
  • [#150] Add version attr to imath and imathnumpy python modules
  • [#141] Enable C and lighter weight half <-> float conversion

Version 3.0.5 (June 29, 2021)

Patch release that fixes problems with library symlinks and pkg-config. Otherwise, no code changes.

  • [#172] Use CMAKE_INSTALL_FULL_LIBDIR/INCLUDEDIR for pkgconfig
  • [#166] Fix non-versioned library symlinks in debug build.
  • [#165] Use CMAKE__POSTFIX for .pc file lib suffix.

Version 3.0.4 (June 1, 2021)

Patch release that corrects a problem with the release version number of v3.0.2:

  • [#147] Add #define for IMATH_VERSION_RELEASE_TYPE
  • [#145] Set IMATH_VERSION from Imath_VERSION instead of CMAKE_PROJECT_VERSION

Version 3.0.2 (May 16, 2021)

Patch release with miscellaneous bug/build fixes:

  • [#142] Fix order of ${IMATH_SOVERSION}.${IMATH_SOREVISION}.${IMATH_SOAGE}
  • [#140] Fix regression in succf()/predf()
  • [#139] Clean up setting of Imath version
  • [#137] Don't impose C++14 on downstream projects
  • [#135] Add section on python bindings
  • [#133] Lib version

Version 3.0.1 (April 1, 2021)

First release of Imath independent of OpenEXR.

See the porting guide for details about differences from previous releases.

Summary:

  • Imath includes the half type, formerly in a separate Half library.
  • Headers are installed in Imath/ subdirectory.
  • All appropriate methods are marked constexpr, noexcept
  • Appropriate declaration include CUDA __host__ and __device__ directives.
  • Throwing methods throw std exceptions instead of Iex.
  • New Vec and Matrix interoperability constructors for conversion from other similar type objects.
  • Symbol linkage visibility is limited to specific public symbols.
  • python bindings are off by default, available by setting PYTHON=ON.
  • Deprecated features:
    • std::numeric_limits replaces Imath::limits.
    • Int64 and SInt64 are deprecated in favor of uint64_t and int64_t.

Version 3.0.1-beta (March 28, 2021)

Beta patch release:

  • [#131] #if IMATH_FOREIGN_VECTOR_INTEROP around type detectors

  • [#130] Forward declarations only if header is not included

Version 3.0.0-beta (March 15, 2021)

First release of Imath independent of OpenEXR.

See the porting guide for details about differences from previous releases.

Summary and Key Changes:

  • Imath includes the half type, formerly in a separate Half library.
  • Headers are installed in Imath/ subdirectory.
  • Header files have been pruned of extraneous #include's, which may require updates to application source code.
  • All appropriate methods are marked constexpr, noexcept
  • Appropriate declaration include CUDA __host__ and __device__ directives.
  • Throwing methods throw std exceptions instead of Iex.
  • New Vec and Matrix interoperability constructors for conversion from other similar type objects.
  • Symbol linkage visibility is limited to specific public symbols.
  • Python bindings are off by default, available by setting PYTHON=ON.
  • Deprecated features:
    • std::numeric_limits replaces Imath::limits.
    • Int64 and SInt64 are deprecated in favor of uint64_t and int64_t.

Merged Pull Requests

  • [#119] Enable policy 77 if possible.
  • [#117] Add/fix rst source for readthedocs
  • [#116] Add/fix doxygen comments
  • [#115] Add =delete for the int64_t Vec specializations
  • [#114] Disable analysis on PR/push
  • [#113] Clean up cmake/config
  • [#111] Rename IMATH_IMATH_NAMESPACE option to IMATH_NAMESPACE
  • [#110] Remove PyImathConfigInternal
  • [#109] build one python binding only
  • [#107] Add int64_t specializations of Vec and Box.
  • [#106] Replace Int64/SInt64 with uint64_t/int64_t
  • [#103] Drop support for exception-handling in PyImath
  • [#102] cmake improvements and fixes
  • [#100] Replace Iex::OverflowExc with std::invalid_argument
  • [#98] constexpr Vec2, Vec3, Vec4 constructors
  • [#97] restore original behavior of Matrix33::setScale()
  • [#95] Build fixups for Visual Studio 2015
  • [#94] Add background and file/class-specific details to porting guide
  • [#93] Fix typo in comment in testHalfLimits
  • [#92] Replace ILMBASE_HAVE_LARGE_STACK with IMATH_HAVE_LARGE_STACK
  • [#91] Interoperability constructors
  • [#90] Fix compiler errors from recent changes
  • [#89] First stab at Imath 2->3 porting guide
  • [#88] PyImath installs headers into Imath subdirectory
  • [#87] constexpr as much of half as possible
  • [#83] Replace NOTICE with STATUS for CMake messages
  • [#82] Clean up Imath::Limits and numeric_limits issues
  • [#81] Reformat all Imath header comments to doxygen style
  • [#77] Change copyright notices to standard SPDX format
  • [#76] Incorrect constexpr in Imath::limits, and missing test.
  • [#75] CI: add VFX2021 jobs, enable coverage analysis
  • [#74] noexcept all the things
  • [#73] Simplify definition of IMATH_RESTRICT for modern supported compilers
  • [#72] Eliminate normalize and length methods for Vec
  • [#70] Adding missing header
  • [#69] [#bugfix] Install error on windows #68
  • [#67] Fix two typos in m22 tests causing out of bounds references
  • [#66] Use likely/unlikely to improve certain vector ops
  • [#65] Deprecate Math in favor of std::
  • [#60] Make Matrix implementation more SIMD friendly
  • [#59] Imath::Vec -- omit exception-throwing methods from Cuda side
  • [#58] Make separate test calls for each test
  • [#57] Fixes the subproject test
  • [#56] Initial support for C wrappers
  • [#55] Fix non-linux platform CI
  • [#54] Combination of Half/Imath and HalfTest/ImathTest directories.
  • [#53] Stoped sonar cloud from running on PR
  • [#52] Fix problems with ImathInterval, and add test
  • [#51] First pass at sphinx/breathe/doxygen documentation
  • [#50] Removed all references to PYIMATH_VERSION, as it is redundant.
  • [#48] Set version to 3.0.0 and SOCURRENT to 26
  • [#47] Added Exc variants of all methods in frustum that required them.
  • [#46] Movement of all source directories into one top level src/
  • [#44] Fix copy/paste typos in Doxyfile and conf.py
  • [#43] Initial Doxygen/sphinx/breathe/readthedocs configuration
  • [#42] Made various Imath/ header methods inline
  • [#41] host device CUDA macro added to all header functions under Imath/
  • [#40] Update INSTALL info on namespaces and cmake options
  • [#39] Clean up of repo docs.
  • [#38] Added CUDA host device with macro to Vector, Matrix, Limits, \xe2\x80\xa6
  • [#37] Add .git-blame-ignore-revs to ignore reformatting
  • [#36] Disable clang-format for python bindings
  • [#32] Tune .clang-format to match existing style
  • [#30] Changed analysis sonarcloud tests, run on pull request.
  • [#29] Added CI testing and made necessary changes to pass those tests.
  • [#27] Simplest CUDA half type conflict resolution implementation.
  • [#25] Used macros to allow compilation with C++11 and constexpr
  • [#24] b"removed pragma to disable clang's -Wself-assign-overloaded"
  • [#23] changed assert()] to throw, which is what the original Iex macro ASSERT()] macro did
  • [#21] First pass at adding constexpr where useful
  • [#20] Speedtest and Inversion python bindings for Arrays
  • [#19] clean up Imath repo docs
  • [#18] Transfer of PyImath history and source to Imath
  • [#17] fixed typo in README.md
  • [#15] further edits of README.md
  • [#14] First complete draft of README.md for the Imath project

Inherited History from OpenEXR

History dated before May 9th, 2020 has been inherited from https://github.com/AcademySoftwareFoundation/openexr, omitting commits (via git-filter-repo) not pertaining to files now a part of the Imath project.