@@ -2,7 +2,7 @@ Introduction
22============
33
44This document contains the release notes for the automatic differentiation
5- plugin for clang Clad, release 2.2 . Clad is built on top of
5+ plugin for clang Clad, release 2.3 . Clad is built on top of
66[ Clang] ( http://clang.llvm.org ) and [ LLVM] ( http://llvm.org> ) compiler
77infrastructure. Here we describe the status of Clad in some detail, including
88major improvements from the previous release and new feature work.
@@ -11,7 +11,7 @@ Note that if you are reading this file from a git checkout,
1111this document applies to the * next* release, not the current one.
1212
1313
14- What's New in Clad 2.2 ?
14+ What's New in Clad 2.3 ?
1515========================
1616
1717Some of the major new features and improvements to Clad are listed here. Generic
@@ -22,88 +22,39 @@ External Dependencies
2222---------------------
2323
2424* Clad now works with clang-11 to clang-21
25- * Removed unused coverage libraries for faster CI builds.
26- * Fixed Python 3.12 linking issue in LLVM 16 installs on macOS.
27- * macOS ARM CI updated to macOS 26.
2825
2926
3027Forward Mode & Reverse Mode
3128---------------------------
32-
33- * Major internal cleanup and generalization of differentiation pipelines.
34- * Unified initialization logic for adjoints and original variables.
35- * Improved compatibility across pointer, tensor, and reference types.
36- * Added support for conversion operators and ` std::reference_wrapper ` .
37- * Enhanced handling of initialization lists, pseudo-destructors, and complex
38- expressions.
39-
29+ *
4030
4131Forward Mode
4232------------
43-
44- * OpenMP Support (Experimental): Introduced basic OpenMP support for forward
45- mode differentiation.
46- * Simplified adjoint and initializer handling for forward-pass variables.
33+ *
4734
4835Reverse Mode
4936------------
50-
51- * Added reverse mode checkpointing for loops, improving memory efficiency in
52- long iterations.
53- * Elidable Reverse Passes: Introduced ` elidable_reverse_forw ` attribute to skip
54- redundant reverse passes for trivially invertible functions.
55- * ` constructor_reverse_forw ` now supports static scheduling and
56- ` elidable_reverse_forw ` .
57- * Added support for ` CompoundLiteralExpr ` and improved differentiation through
58- compound expressions.
59- * Simplified handling of deallocations and memory operations via attributes.
60- * Improved function differentiation sequence by resolving pullbacks before
61- argument differentiation.
62- * Unified differentiation order for pointer and reference types.
63- * Optimized unary operator simplification (removed redundant &* _ d_x patterns).
64-
37+ *
6538
6639CUDA
6740----
41+ *
6842
69- * Extended Thrust differentiation support:
70- - ` thrust::reduce_by_key `
71- - ` thrust::sort_by_key `
72- - ` thrust::adjacent_difference `
73- - segmented scans and prefix-sum operations
74- * Added thrust::device_vector support.
75- * Introduced BoW (Bag-of-Words) logistic regression demo using Thrust.
76- * Replaced iterator-based std::move with CUDA-safe clad::move.
77- * Added generic functor support for Thrust transform.
78-
43+ Error Estimation
44+ ----------------
45+ *
7946
8047Misc
8148----
82-
83- * Added thread-safe tape access functions:
84- - Zero overhead in single-threaded mode.
85- - Controlled locking for multithreaded differentiation.
86- * Improved handling of ill-formed code by skipping Clad runs when Clang
87- compilation fails.
88- * Refined diagnostic messages and simplified deallocation functions through
89- attribute-based design.
90- * Updated testing and build infrastructure:
91- - Added STL test coverage (starting with <cmath >).
92- - Cleaned up coverage configuration.
93- - Enhanced CI stability and performance.
49+ *
9450
9551Fixed Bugs
9652----------
9753
98- [ 679] ( https://github.com/vgvassilev/clad/issues/679 )
99- [ 1413] ( https://github.com/vgvassilev/clad/issues/1413 )
100- [ 1482] ( https://github.com/vgvassilev/clad/issues/1482 )
101- [ 1496] ( https://github.com/vgvassilev/clad/issues/1496 )
102- [ 1521] ( https://github.com/vgvassilev/clad/issues/1521 )
103- [ 1522] ( https://github.com/vgvassilev/clad/issues/1522 )
54+ [ XXX] ( https://github.com/vgvassilev/clad/issues/XXX )
10455
10556 <!-- -Get release bugs. Check for close, fix, resolve
106- git log v2.1 ..master | grep -i "close" | grep '#' | sed -E 's,.*\#([0-9]*).*,\[\1\]\(https://github.com/vgvassilev/clad/issues/\1\),g' | sort -t'[' -k2,2n
57+ git log v2.2 ..master | grep -i "close" | grep '#' | sed -E 's,.*\#([0-9]*).*,\[\1\]\(https://github.com/vgvassilev/clad/issues/\1\),g' | sort -t'[' -k2,2n
10758 --->
10859
10960<!-- - https://github.com/vgvassilev/clad/issues?q=is%3Aissue%20state%3Aclosed%20closed%3A%3E2025-10-01 --->
@@ -118,14 +69,6 @@ FirstName LastName (#commits)
11869
11970A B (N)
12071
121- Petro Zarytskyi (33; reverse mode, loop checkpointing, elidable reverse passes)
122- Abdelrhman Elrawy (9; CUDA/Thrust derivatives, demos, logistic regression)
123- Vassil Vassilev (9; compiler integration, CI, and build infrastructure)
124- Matthew Barton (2; macOS and Python 3.12 CI fixes)
125- Aditi Joshi (1; thread-safe tape access implementation)
126- Max Andriychuk (1; analyses)
127- Errant (1; OpenMP differentiation support)
128-
12972<!-- -Find contributor list for this release
130- git log --pretty=format:"%an" v2.1 ...master | sort | uniq -c | sort -rn | sed -E 's,^ *([0-9]+) (.*)$,\2 \(\1\),'
73+ git log --pretty=format:"%an" v2.2 ...master | sort | uniq -c | sort -rn | sed -E 's,^ *([0-9]+) (.*)$,\2 \(\1\),'
13174--->
0 commit comments