Skip to content

feral v0.11.0

Latest

Choose a tag to compare

@jkitchin jkitchin released this 12 Jun 15:10
· 6 commits to main since this release

feral 0.11.0

Highlights

  • Unsymmetric LU basis engine (feral::lu, #81) — general square
    A = P L U Q factorization with ftran/btran solves and simplex-style
    product-form column updates, auto-routing between a dense and a sparse
    engine. Exposed in Python as LuFactor.
  • Expanded Python interface (all additive, backward-compatible):
    LuFactor; factor access via Solver.factors() (unit-lower L as
    CSC / optional scipy, block-diagonal D, perm/scaling for the
    L D Lᵀ = P (S A S) Pᵀ reconstruction); symbolic analysis via
    feral.analyze(...) / Solver.symbolic(); and introspection plus new
    Solver(...) tuning knobs (ordering, profiling, mc64_cache, …),
    pivot-magnitude and MC64 counters, last_factor_stats(),
    profile_report(), scaling_info.
  • Documentation — new mdBook Python chapter sections, a new executed
    example notebook 05_lu_and_introspection, and a refreshed top-level
    README (LU engine, production-ready Status framing).

Packaging

  • The six fill-reducing ordering crates (feral-ordering-core, feral-amd,
    feral-amf, feral-metis, feral-scotch, feral-kahip) are bumped
    0.2.0 → 0.2.1 so crates.io picks up the API-compatible fixes and perf
    work accumulated since 0.2.0 (they had been silently skipped at publish
    across 0.3.00.10.0). feral's version = "0.2" requirement resolves
    to 0.2.1 unchanged. A release-checklist guard now flags this staleness
    class so it cannot recur.

Correctness & performance campaign

This release also folds in the repo-review campaign: a large set of
correctness fixes (inertia reporting, MC64 partial-singular fallback,
sparse/dense LU singularity handling, MTX-reader validation, CSC validation,
2×2 D-block gating, static-pivot scale-invariance) and ordering-crate
algorithm fixes (real SHEM coarsening and true GGP gain in feral-metis,
vertex-weight flow balancing and n_components in feral-kahip,
separator-FM in feral-scotch, sorted-rows invariant in
feral-ordering-core), plus several performance improvements (pooled scratch
reuse, borrow-not-clone in feral_factor, linear default postorder).

See CHANGELOG.md
for the complete, itemized list (every fix is tagged with its finding ID).

Inertia remains validated against the feral + MUMPS 5.8.2 + SPRAL/SSIDS
consensus oracle; 705 tests passing.