Callback effects can change the state. The effect runs after the step has been
shortened to the crossing and committed, so what it leaves in ode.y is what the
integration continues from; it was overwritten immediately before. Callback::effect
takes &mut self, Problem::with_callback takes &mut dyn Callback, and Controller
requires a reset method, all of which are breaking. A jump records the state on
both sides of itself and resets the step size controller, interpolating at one
reports the state the effect left, stop ends the solution at the crossing without
disturbing t_end, and the earliest of two events in one step is the one that fires.
Runtime integrator selection. The structural facts on Integrator move from
associated constants to &self methods, which is a breaking change for anyone
implementing the trait or reading ORDER, STAGES, ADAPTIVE or DENSE. In exchange
Method dispatches to any of the four integrators as a value, and MethodName
names one in a configuration file.
The Tolerances trait: the a_tol, a_tol_full and r_tol setters move off the
inherent impls onto a trait, with absolute_tolerance and relative_tolerance
getters, so code generic over the integrator can set and read them.
- repository pointed at the old host and the old repo name; this is the link
crates.io and docs.rs display
- the readme example imported `differential_equations`, so it could not
compile under the crate's published name
- `cargo bench` did not build: `Solution` borrows the ODE, so `.solve()`
cannot be called on a temporary `Problem`. Bind it first.
Bumps the version to 0.3.0 and keeps the roadmap notes out of the published
artifact. No source changes: this tags the BS3, Vern7, Rosenbrock23 and
PIDController work that has accumulated on main since 0.2.3.