All notable changes to XAD will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.7.0 - 2024-11-30
This release features extensive performance improvements.
- Template Variables: Added support for C++17 type traits such as
std::is_floating_point_v
(#127). - CI/CD Workflows: Updated workflows to target the C++17 standard (#127).
- New Sample: Introduced a Monte-Carlo swaption portfolio pricer, including path-wise derivative calculations (#126).
-
Performance Improvements (#150):
- Optimised
OperationsContainer
for handling slots and multipliers. - Enhanced iteration efficiency in
computeAdjoints
by avoiding redundant operations. - Implemented joint tape appending for multipliers and slots in a single operation.
- Removed the overhead of
std::fma
calls, relying on compiler-level optimisations. - Added pre-checks to skip derivative calculations when tape is not required.
- Provided branch prediction hints using
XAD_LIKELY
andXAD_UNLIKELY
. - Introduced a paired operations container variant for improved performance at a slight memory cost, with a
XAD_REDUCED_MEMORY
CMake option to toggle memory usage.
- Optimised
-
Documentation Updates: Improved and expanded documentation (#125).
-
CMake Module Renaming: Renamed helper modules to avoid name clashes (by @raneamri, #123).
- Move Behaviour of ChunkContainer Fixed move behaviour of
ChunkContainer
(by @rghouzra, #152)
1.6.0 - 2024-07-17
This release mainly adds support for more architectures and compilers and provides higher level derivative functions as well as examples.
- Support for Mac M1+ architecture (ARM) as well as AppleClang 15 support (by @raneamri #116)
- High level functions to compute Jacobian and Hessian matrices (by @raneamri #117)
- Moved website to its own repository and keeping only the reference manual #112
1.5.2 - 2024-04-04
This patch release is for matching versions with xad-py.
- Moved Python bindings into its own repository (new Python package name is xad)
- Reorganised website
- Upgraded CI/CD actions
1.5.1 - 2024-03-28
This is a patch release to allow interoperability with the QuantLib-Risks Python package.
- added static functions to
Tape
to activate and deactivate a specific tape instance
1.5.0 - 2024-03-25
- Python bindings as xad-autodiff
- Added
std::is_signed
trait toStdCompatibility.hpp
header for consistency - Support for enhanced debugger visualisations in Visual Studio (@dholden3)
- Improved documentation for QuantLib-Risks build
- Cleaned up output of Swap Pricer example
1.4.1 - 2024-01-10
This is a patch release to ensure compatibility with QuantLib 1.33.
- support for
hypot
math function
- avoid overflow with complex
abs
function when real / imaginary parts are large
1.4.0 - 2024-01-09
- Supporting Clang version 16 and added to CI/CD
- Adding complex arithmetics between complex XAD types and
std::complex<double>
- Documentation updates
1.3.0 - 2023-08-16
- Improved CI/CD workflows with better caching and latest compilers
- Documentation updates
- Fixed missing include of
<memory>
inChunkContainer.hpp
1.2.0 - 2023-05-24
- More CI/CD workflows for all supported compiler versions
- Added math function
copysign
- Revamped documentation site using mkdocs
- Improved tests and testing infrastructure
- Throw exception when no tape is set on
derivative
calls - Some test errors with GCC versions not previously tested
1.1.0 - 2022-11-17
- QuantLib integration by means of the QuantLib-Risks integration module
- Full MacOS support
- Better CI pipeline with more platforms and compilers tested
- Code coverage and quality measured on pull requests and reported in README.md
- More tests to improve code coverage
- Status badges in README.md
- Documentation updates
- Code quality improvements
- Better use of caching in CI/CD pipelines for faster builds
1.0.0 - 2022-07-07
Initial open-source release