NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4738 most downloaded on crates.io
Numerical optimization in pure Rust
Last release 1 years ago
28 Sep 2025
Release timing varies
gaps range from 9 days to 1.6 years
Some releases are documented
notes for 26 of 45 stable releases
1 version withdrawn
withdrawn after publishing
9 years old
47 releases · first in 2018
Finally released v0.11.0. Sincere and huge thank you to everyone who contributed, to those who pushed me to make a release, and to those who supported
Finally released v0.11.0. Sincere and huge thank you to everyone who contributed, to those who pushed me to make a release, and to those who supported me in getting the release over the finish line.
This release, together with argmin-math v0.5.0 brings support for new ndarray and algebra versions as well as faer.
Even though I tried hard, due to the long time since the last release, I might have overlooked contributions. If that is the case, please get in touch and I'll update the release notes as well as the changelog accordingly.
Full Changelog: argmin-v0.10.0...argmin-v0.11.0
One column per quarter.
Remove vulnerable ip package from website by @stefan-k in #466
IterState, adapted GaussNewton accordingly by @gmilleramilar in #343GaussNewton by @stefan-k in #392FileCheckpoint, removed SerializeAlias and DeserializeOwnedAlias by @stefan-k in #395Executor by @stefan-k in #405KeyboardInterrupt to Interrupt by @stefan-k in #413crates directory by @stefan-k in #415Full Changelog: argmin-v0.9.0...argmin-v0.10.0
SlogLogger moved into argmin-observer-slog (@stefan-k, #311)WriteToFile was renamed to ParamWriter and moved into argmin-observer-paramwriter (@stefan-k, #395)FileCheckpoint moved into argmin-checkpointing-file (@stefan-k, #311)state to observe_init of Observe trait (@stefan-k, #311)crates directory (@stefan-k, #415)examples directory. (@stefan-k, #387)SerializeAlias and DeserializeAlias traits since they are not necessary anymore (@stefan-k, #395)IterState (@stefan-k, #408)SIGINT, SIGTERM and SIGHUP and KeyboardInterrupt was renamed to Interrupt (@stefan-k, #413)LBFGS was slightly improved (@stefan-k, #416)KvValue::get_float(&self) now works for all kinds of KvValue (@stefan-k, #311)GaussNewton (@gmilleramilar, @stefan-k, #343, #392)Added a simple example of Nelder-Mead usage (@cjordan, #359)
Mentioned cobyla in docs and README (@relf)
cobyla in docs and README (@relf)Added a full feature which enables all features (@stefan-k)
full feature which enables all features (@stefan-k)nalgebra math backend (@stefan-k)nalgebra math backend (@stefan-k)TerminationStatus which can either be Terminated(TerminationReason) or NotTerminatedTerminationReason enum were reduced to cases potentially relevant to any solver. Solver-specific cases can be handled with SolverExit(String).TerminationReason::KeyboardInterrupt and TerminationReason::ConvergedKvValue), which means that observers can now use the actual numbers (in the past those values were only dyn Display and as such could only be printed)make_kv! renamed to kv!Serialize anymore when serde1 feature is enabled. This was an oversight reported by @relf and fixed by @stefan-kExecutor (@TheIronBorn)L1 regularization added to L-BFGS (also known as OWL-QN). L-BFGS now has more trait bounds, please consult the documentation if this causes problems.
ArgminL1Norm trait was added by @vbkaisetsu for the L1 regularization in L-BFGS. In order to make the L2 norm more consistent, the corresponding trait was renamed from ArgminNorm to ArgminL2Norm and the norm method was renamed to l2_norm. (#253, @stefan-k)ndarray-linalg dependency in argmin-math. This leads to problems in downstream crates which do not need the functionality of ndarray-linalg and want to avoid linking angainst a BLAS. In this version, this functionality was added again. Please consult the documentation of argmin-math for details on the available backends and their configuration. (#243, #249, @stefan-k)This is a rather large release with many (breaking) changes.
This is a rather large release with many (breaking) changes.
argmin-math crate. This crate offers now the traits related to math operations as well as their implementations for various backends (vec, ndarray, nalgebra). The backends can be turned on and off as needed. It also supports different versions of the backends.serde dependency is now optional and feature-gated via serde1. Disabling the serde1 feature disables checkpointing and some logging.ArgminOp trait was removed and replaced with more specialized traits such as Operator, CostFunction, Gradient, Jacobian, Hessian, Anneal.
All of the above mentioned traits come with bulk_* methods which allow one to compute cost function, gradients,... in parallel as long as the rayon feature is enabled. This is so far used in Particle Swarm Optimization.State trait now which defines the basic functionality that a state must offer.ArgminResult was renamed to OptimizationResult and also has a more useful API now. It returns the solver, the problem and the final internal state.Solver trait was redesignedconfigure method on Executordyn Display. This avoids unnecessarily stringifying variables when no observer is used.OpWrapper was renamed to Problem and has now a more consistent interface. It still keeps track of the function evaluations, but to be flexible enough to support future or user-defined traits, these are stored in a HashMap now.PopulationState was introduced which replaces IterState in PSOunwraps and instead return errors with meaningful error messages (for instance when something isn't initialized properly)stdweb dependency was removedlib.rs file anymore.ArgminError is now non_exhaustive.termination_reaosn method of State to terminate_with*grad* methods of IterState to *gradient*Nothing published for this version
Nothing published for this version
support faer 0.22 and 0.23 by @Ravenslofty in #627
Full Changelog: argmin-math-v0.5.0...argmin-math-v0.5.1
Added compatibility with ndarray 0.16 with the ndarray_v0_16 and ndarray_v0_16-nolinalg features, updating latest. [ @npatsakula and @amfaber #546 ]
Full Changelog: argmin-math-v0.4.0...argmin-math-v0.5.0
Moved to Github actions (#130, @stefan-k)
updated dependencies (#121, #123, #129, @stefan-k):
Squash warnings for Nalgebra 0.26.x (#118, #117, @CattleProdigy)
Finally started writing a changelog.
Downgraded argmin-rand to 0.13 to match ndarray 0.14
Fix lazy evaluation of gradients in line searches (#101, @w1th0utnam3)
- Typo
Implemented ArgminInv for f32/f64 (1D) (@sdrap, #346)
ArgminRandom::rand_from_range(..) now also takes a random number generator. This allows for setting the seed manually (@jonboh, #383)*-serde features were removed, as they are not necessary anymore. (@stefan-k, #387)remove finitediff from ndarrayl feature (#61, @optozorax)
(BREAKING) Fixed typo McCorminck to McCormick ( @JosiahKane , #616 , typo found by @airwoodix )
- Brent's method (#22, @xemwebe)
Particle Swarm Optimization (@jjbayer)
- CG improvements (@stefan-k)
Nothing published for this version
Nothing published for this version
Added ArgminMinMax and ArgminSignum implementation for nalgebra types. Now the L-BFGS should work work with the nalgebra backend again. (#257, #258, @
[BREAKING] Moved to Result based error handling [ @stefan-k , #481 ]
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Initial release.
Initial release.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
The first version of a Python wrapper around argmin_testfunctions was released.
argmin_testfunctions was released.argmin_testfunctions' version number.Your coding agent can read these notes before it upgrades. Set up the MCP server →