Repository navigation
v2.0.0
Highlights
Basin 2.0 revises the core API and removes interfaces deprecated in 1.x, and has introduced a large number of breaking changes. The migration guide covers the upgrade.
Your objective and residual types now need to implement ProblemConstraints, even for unconstrained problems. A typed constraint set replaces the old constraint traits. Solvers now keep their own models, history, and workspace, while shared progress states replace the algorithm-specific state types.
Numerical tolerances now belong on the solver, and execution limits belong on the executor. TerminationCriterion and terminate_on have been removed. Results now carry a structured termination report, so result handling, observers, and custom solvers need updating. State counters also report individual evaluation categories, which may change how you set evaluation budgets.
Some solver names and defaults have changed too. Trf is now BoundedLevenbergMarquardt. Nelder-Mead enables simplex convergence by default, bounded f64 L-BFGS uses new stopping defaults, and LM uses trust-region damping.
No features are enabled by default, so you need to add problems if you use the test functions. Backend aliases also now select the newest supported version (rather than a frozen one). If you pick nalgebra you now get Nalgebra 0.35, which requires Rust 1.89; the other supported features still work with Rust 1.87.
Many public records and enums are now non-exhaustive to allow future additions. Use constructors or builders for records, and a fallback arm when matching enums.
Saved runs also need attention. Basin 1.x exact checkpoints cannot be resumed in 2.0, and the legacy bincode readers have been removed. Export parameters from the old application and start a fresh run when upgrading.
Breaking changes
- compact constraint-violation reports (
1ae01c8) - add typed constraint-violation reports (
c3cccb7) - make state shape errors non-exhaustive (
32fffb6) - make line-search configurations non-exhaustive (
ec8efbc) - make stopping records non-exhaustive (
088ed78) - make solver publications non-exhaustive (
77697ef) - make results and diagnostics non-exhaustive (
d5fd2de) - make
EvalCountsnon-exhaustive (59a0306) - rename
TrftoBoundedLevenbergMarquardt(75c4476) - default LM to trust-region damping (
056d844) - unify problem-side constraint declarations (
6cb52d8) - adopt tested L-BFGS-B stopping defaults (
5172776), refs #109 - enable paired Nelder-Mead convergence defaults (
955d0dd), refs #109 - add structured termination reports (
c7f2869) - remove criterion compatibility bridges (
a759b7c) - remove legacy inner gradient stops (
ad3fbdc) - state: migrate solvers to shared progress (
878a4b7) - make the
problemsfeature opt-in (9485f01) - termination: remove legacy criterion API (
b9380fd) - checkpoint: remove legacy checkpoint formats (
192426d)
Features
- add configurable BFGS inverse Hessian seeds (
cd3dc0e) - add Nelder-Mead cost standard deviation check (
fa90199) - add typed constraint-violation reports (
c3cccb7) - make state shape errors non-exhaustive (
32fffb6) - make line-search configurations non-exhaustive (
ec8efbc) - make stopping records non-exhaustive (
088ed78) - make solver publications non-exhaustive (
77697ef) - make results and diagnostics non-exhaustive (
d5fd2de) - default LM to trust-region damping (
056d844) - unify problem-side constraint declarations (
6cb52d8) - adopt tested L-BFGS-B stopping defaults (
5172776), refs #109 - enable paired Nelder-Mead convergence defaults (
955d0dd), refs #109 - web: negotiate markdown for agents (
3def87b) - add structured termination reports (
c7f2869) - make backend aliases track latest versions (
934bd0f) - observer: expose solver diagnostics to observers (
f57be9c) - make the
problemsfeature opt-in (9485f01)
Bug Fixes
- prepare Basin 2.0 release handoff (
7a59b97) - preserve convergence at extreme scales (
8f60a22) - harden convergence and expose solver diagnostics (
39983b0), refs #109 - stop non-finite legacy TRF models (#116) (
8d0b22a) - web: update vulnerable transitive dependencies (
4e72a4a) - web: complete SvelteKit 3 migration (
0e08ac0) - invalidate convergence caches after steps (
5303d67)
Performance Improvements
- compact constraint-violation reports (
1ae01c8)