Skip to content

feral v0.10.0

Choose a tag to compare

@jkitchin jkitchin released this 04 Jun 11:54
· 153 commits to main since this release

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

  • Auto now prefers AMF over MetisND at every size (#73, follow-up to #67).
    The AMF_BAND_MAX ceiling is removed: whenever the size rule would pick
    MetisND, choose_adaptive now routes to AMF at every n. 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/clippy now operate on the feral package only. Run
    diagnostics on demand with cargo run -p feral-diagnostics --bin <name>.

Fixed

  • Spurious zero pivots → wrong inertia under Auto scaling on ill-conditioned
    KKTs (#65).
    Inertia-guided MC64 fallback corrects the false-infeasible signal.
  • Arrow/bordered-KKT ordering blow-up (#64). Auto no 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.