This release improves Probdiffeq's API considerably. Hard-to-access quantities, such as standard deviations of the solution estimate, are now accessible. Global states have been removed, making the library more predictable and "hackable." Some of these changes are not backwards-compatible, but they should be easy to fix (see below).
Key updates:
- Improved access to derivatives, standard deviations, and samples ([786](https://github.com/pnkraemer/probdiffeq/pull/786))
- More robust initialisation: `ode_shape` and `num_derivatives` are now determined automatically. Simply compute the Taylor coefficients and use them to initialise the SSM ([786](https://github.com/pnkraemer/probdiffeq/pull/786)).
- Simplified API: The solution object is no longer iterable ([800](https://github.com/pnkraemer/probdiffeq/pull/800)).
- Cleaner solver instantiation: Instead of `solver(strategy(prior, correction))`, use `solver(strategy, prior, correction)`.
- Updated Python support: Now compatible with **Python 3.12+** (dropped support for 3.9 to align with JAX's policy).
Refer to the PR descriptions below or check the updated documentation for guidance on resolving breaking changes. Most issues should be easy to fix, but feel free to reach out if needed.
<!-- Release notes generated using configuration in .github/release.yaml at main -->
What's Changed
Breaking changes
* Turn `tcoeffs` into arguments to `prior_ibm` to reduce error potential by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/785
* Remove the need for declaring `ode_shape` and `num_derivatives` before simulating by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/786
* Separate strategies from priors and corrections by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/797
* Move ivpsolve.adaptive and ivpsolve.control* to ivpsolvers because they are solver components by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/798
* Remove iterability from the Solution object because it is mathematically ill-defined by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/800
New features
* Increase python versions to include 3.12 and 3.13, and to match JAX's minimum requirement by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/804
Improvements to the documentation
* Add release.yaml to custom-format release notes by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/803
* Add 'general troubleshooting' and 'Pleiades-NaNs' to the troubleshooting site by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/805
Internals
* Replace probdiffeq.util.linop_util with jax.Arrays to improve hackability by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/787
* Use vulture to detect dead code and remove what the command found by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/788
* Flatten the directory structure in the tests to mirror the module structure in the source by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/789
* Remove the pytest-coverage setup because we don't use it (and haven't for a while) by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/790
* Internal: Simplify the implementation of extrapolations by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/791
* Internal: Reduce unnecessary complexity in correction code by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/792
* Internal: Condense strategies into a single class to simplify the source-code by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/793
* Internal: Simplify the probabilistic-solver implementation by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/794
* Internal: Move error-scaling (by the error contraction rate) outside of the controller implementations by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/795
* Internal: Improve function order in ivpsolvers.py and remove residual pytest-cov references by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/796
* Internal: Remove private `select`-style functions because we have easier ways of accessing derivatives now by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/799
Other Changes
* Fix a typo in release.yaml by pnkraemer in https://github.com/pnkraemer/probdiffeq/pull/806
**Full Changelog**: https://github.com/pnkraemer/probdiffeq/compare/v0.5.1...v0.6.0