# Release v0.12.0
## Breaking Changes
- This library requires C++23 from this version.
- Removed concepts in `base` module that are implemented by concepts in C++ standard library.
- Separated `constants` module into existing `base` and `functions` module.
- Constants are in `base` module.
- Mathematical functions are in `functions` module and they are updated for use in both compile time and runtime (for runtime, they use functions in C++ standard library).
## Features
- `logging` module
- Asynchronous logging (see documentation of logging configuration).
- `multi_double` module
- Added some mathematical functions for `num_collect::multi_double::quad` class.
- `rbf` module
- Computation of first, second, third, and fourth-order derivatives of RBF interpolation (classes in `num_collect::rbf::operators` namespace and `evaluate` function in classes of RBF interpolation).
- Thin plate spline (`num_collect::rbf::thin_plate_spline_interpolator` class).
- RBFs derived from Gaussian RBF for better precision when used with constant and polynomial terms (`num_collect::rbf::rbfs::gaussian_m1_rbf`, `num_collect::rbf::rbfs::gaussian_from_square_rbf` classes).
- Support of more vector types in `rbf` module.
- `regularization` module
- Approximate L-curve (`num_collect::regularization::approx_l_curve` class).
- `util` module
- Faster implementation of vectors for trivially copyable types (`num_collect::util::trivial_vector` class).
- This implementation is automatically used in `num_collect::util::vector` class if possible.
- Some algorithms may work faster thanks to this implementation.
- Nearest neighbor search (`num_collect::util::nearest_neighbor_searcher` class).
- This class is a wrapper of nanoflann library to use in algorithms in this project.
- CSRBF interpolation in `rbf` module uses this class for better performance.
## Improvements
- Common improvements
- Refactored some implementations and documentations.
- `multi_double` module
- Fixed accuracy issue of `num_collect::multi_double::quad` class in some cases.
- Some existing operators in `num_collect::multi_double::quad` class are now invocable at compile time.
- `opt` module
- Prevent sampling of duplicate points in `num_collect::opt::gaussian_process_optimizer` class.
- `rbf` module
- Performance improvements of `rbf` module using parallelization via OpenMP.
- `regularization` module
- Performance improvements of `num_collect::regularization::tv_admm` and `num_collect::regularization::tgv2_admm` classes.