Skip to content

Latest commit

 

History

History
410 lines (338 loc) · 27.3 KB

CHANGES.md

File metadata and controls

410 lines (338 loc) · 27.3 KB

Imath Release Notes

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.