- Version 3.1.9 May 31, 2023
- Version 3.1.8 May 22, 2023
- Version 3.1.7 March 1, 2023
- Version 3.1.6 November 7, 2022
- Version 3.1.5 March 28, 2022
- Version 3.1.4 January 21, 2022
- Version 3.1.3 September 2, 2021
- Version 3.1.2 July 31, 2021
- Version 3.1.1 July 20, 2021
- Version 3.1.0 July 13, 2021
- Version 3.0.5 June 29, 2021
- Version 3.0.4 June 1, 2021
- Version 3.0.2 May 16, 2021
- Version 3.0.1 April 1, 2021
- Version 3.0.1-beta March 28, 2021
- Version 3.0.0-beta March 15, 2021
- Inherited History from OpenEXR
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.
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.
- [#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
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
- [#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
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
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"
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
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::
Patch release that fixes a Windows header issue.
- [#190]
Improve handling of
#include <*intrin.h>
Patch release that fixes a build failure on ARM64 macOS
- [#184] Include
<x86intrin.h>
only if__x86_64__
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()
andimath_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 theIMATH_USE_NOEXCEPT
CMake option. -
Python bindings:
- FixedArray objects support a "read only" state.
- FixedArray objects support python buffer protocol.
-
Optimized 4x4 matrix multiplication.
- [#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
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.
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
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
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
replacesImath::limits
.Int64
andSInt64
are deprecated in favor ofuint64_t
andint64_t
.
Beta patch release:
-
[#131] #if IMATH_FOREIGN_VECTOR_INTEROP around type detectors
-
[#130] Forward declarations only if header is not included
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
replacesImath::limits
.Int64
andSInt64
are deprecated in favor ofuint64_t
andint64_t
.
- [#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
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.