feral 0.11.0
Highlights
- Unsymmetric LU basis engine (
feral::lu, #81) — general square
A = P L U Qfactorization withftran/btransolves and simplex-style
product-form column updates, auto-routing between a dense and a sparse
engine. Exposed in Python asLuFactor. - Expanded Python interface (all additive, backward-compatible):
LuFactor; factor access viaSolver.factors()(unit-lowerLas
CSC / optional scipy, block-diagonalD,perm/scalingfor 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 notebook05_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.1so crates.io picks up the API-compatible fixes and perf
work accumulated since0.2.0(they had been silently skipped at publish
across0.3.0–0.10.0).feral'sversion = "0.2"requirement resolves
to0.2.1unchanged. 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.