feral v0.10.0
Ordering-routing release. No open issues at cut; 20 commits since v0.9.0.
This is a minor release (not a patch) because the headline change is a
deliberate change to default Auto ordering behavior, not just a bug fix.
Changed
Autonow prefers AMF over MetisND at every size (#73, follow-up to #67).
TheAMF_BAND_MAXceiling is removed: whenever the size rule would pick
MetisND,choose_adaptivenow routes to AMF at everyn. The #50 powerflow
guard (n > 100k && avg_deg < 5 → Amd) and the #64 arrow/dense-border catch
still fire first, so only the uniformly-thin would-be-MetisND population is
affected. The #73 A/B (factor+solve) showed AMF winning on every measured
matrix in the n>100k thin regime (dtoc2 2.49×, cont5_1_l 2.75×, nql180 2.05×,
pinene 1.18×, YATP1NE 2.13×) — including a case where MetisND had smaller
symbolic fill yet was 2× slower, so a fill-guarded race was rejected.- 144 diagnostic binaries relocated to
crates/feral-diagnostics(#71). Root
cargo build/test/clippynow operate on theferalpackage only. Run
diagnostics on demand withcargo run -p feral-diagnostics --bin <name>.
Fixed
- Spurious zero pivots → wrong inertia under
Autoscaling on ill-conditioned
KKTs (#65). Inertia-guided MC64 fallback corrects the false-infeasible signal. - Arrow/bordered-KKT ordering blow-up (#64).
Autono longer picks MetisND on
arrow/bordered patterns that caused ~7× fill blow-up (r05 LP); routes to AMF.
Compatibility
Public Rust API and C ABI unchanged. Functional changes are confined to the root
feral package; the ordering plugin crates are unchanged (stay at 0.2.0).
See CHANGELOG.md for the full per-change detail.