Skip to content

Latest commit

 

History

History
308 lines (258 loc) · 20.6 KB

CHANGES.md

File metadata and controls

308 lines (258 loc) · 20.6 KB

Imath Release Notes

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.