v0.4.2
Added
-
Feat!(matrix): enforce fallible matrix invariants
e26c283 -
Feat!(api): enforce fallible numeric invariants
adfc33b -
Feat!(matrix): make determinant API tolerance-free
11a355c -
Feat!(api): hide finite and symmetry proofs behind matrix APIs
7219336 -
Guard public Rust examples against unwrap
df1130a- Add repository-owned Semgrep rules for unwrap and expect usage in public doctests, examples, and benchmarks.
- Add fixture-based Semgrep rule tests and include them in the lint workflow.
- Update examples and benchmarks to model typed fallible flow or operation-labeled benchmark failures.
-
Feat!(api): enforce finite Matrix and Vector construction
92ba403
Changed
-
Remove redundant cache restore keys for cargo-llvm-cov
f75a01cRemove the broad restore-keys pattern to ensure only exact version matches
are used from the cache, preventing potential version mismatches during
CI runs. -
Revert "ci: modernize tooling checks and example execution"
a4b9f64 -
Reapply "ci: modernize tooling checks and example execution"
758321a -
Encode nonzero mantissas in exact decomposition
7a664ed- Replace the exact-arithmetic zero mantissa sentinel with
Option<NonZeroU64>. - Carry nonzero mantissa proof through matrix/vector decomposition and BigInt scaling.
- Clarify determinant documentation around uncertified
det()bounds. - Keep SPD determinant proptests on the tolerance-aware LU path.
- Replace the exact-arithmetic zero mantissa sentinel with
-
Simplify finite proof wrappers
54b603c- Use the checked proof-wrapper constructors as the single internal path for finite matrices and vectors.
- Remove exact-arithmetic tests that duplicated the matrix and vector non-finite boundary checks.
Dependencies
- Bump taiki-e/install-action from 2.75.18 to 2.75.22
d6c944b - Bump actions/setup-node from 6.3.0 to 6.4.0
1fc57e1 - Bump pastey from 0.2.1 to 0.2.2 in the dependencies group
5b215d5 - Bump taiki-e/install-action from 2.75.22 to 2.77.3
3e5ce42 - Bump actions-rust-lang/setup-rust-toolchain
8532b08 - Bump taiki-e/install-action from 2.77.3 to 2.78.3
bef2caf - Bump the dependencies group across 1 directory with 2 updates
ba01a14 - Bump taiki-e/install-action from 2.78.3 to 2.80.0
480e61b - Bump codecov/codecov-action from 6.0.0 to 6.0.1
3ca8eed
Documentation
-
Document feature requirement for exact APIs
19b10d5 -
Document scalar scope and release roadmap
bfb0393- Clarify that la-stack intentionally supports f64 floating-point APIs plus optional exact rationals, not alternate scalar families.
- Add a roadmap covering the v0.4.x stable-Rust issue sequence and the v0.5.0 generic_const_exprs anchor.
- Refresh generated changelog entries and archived changelog grouping.
-
Document finite RHS solve validation
075aed7- Document that LU and LDLT solve_vec reject non-finite RHS entries with LaError::NonFinite metadata.
- Cite the Bareiss reference in the exact solve helper docs and describe exact-arithmetic growth and complexity.
- Cover finite proof defaults and non-finite RHS solve boundaries in unit tests.
-
Clarify finite solve and norm guarantees
fb71485- State that LU and LDLT solve_vec use floating-point substitution without a certified absolute rounding-error bound.
- Clarify that inf_norm reports NonFinite for unchecked stored NaN/∞ as well as row-sum overflow.
- Exercise the unchecked finite-proof fixture path directly in exact tests.
Fixed
-
Reject overflowed symmetry tolerance scaling
a7b052a-
Enforce the tolerance contract around symmetry checks by surfacing scaled
tolerance overflow as a typed non-finite intermediate error. -
Document finite, non-negative tolerance requirements across tolerance-taking
matrix APIs. -
Add regression coverage for invalid tolerance construction and symmetry
tolerance overflow. -
Update exact examples to propagate typed crate errors instead of unwrapping.
-
-
Harden Semgrep fixture parsing
ac44c07- Ignore non-canonical todoruleid annotations when counting expected rule hits.
- Reject malformed Semgrep JSON results with clear stderr diagnostics instead of propagating KeyError.
-
Revalidate finite proof conversions
419a90fEnsure internal finite proof conversions cannot accept raw Matrix or Vector storage without checking the invariant.
- Revalidate TryFrom<Matrix<D>> and TryFrom<Vector<D>> before constructing finite wrappers.
- Measure exact random percentile benchmarks over repeated corpus timings and cumulative input sets.
- Tighten Codecov status thresholds and extend benchmark workflow timeout.
- Keep Semgrep constructor fixtures aligned with public API guardrails.
-
Revalidate public compute inputs
ffca00e- Parse Matrix and Vector storage into private finite proof-bearing types at public compute boundaries.
- Reject unchecked non-finite storage before LU, LDLT, determinant, norm, dot, and exact-arithmetic paths can proceed.
- Keep unchecked proof-wrapper constructors crate-private for internal paths with local finiteness proofs.
- Document the private proof-bearing invariant model in the API overview and roadmap.
Maintenance
-
Migrate coverage to cargo-llvm-cov
66f2117 -
Align shared security and release tooling
b303509- Run CI through pinned uv and cached Cargo tooling across all supported platforms.
- Add repository Semgrep rules, action allowlist coverage, CodeQL, zizmor, and SARIF workflows.
- Raise the Rust and Python tooling floors to Rust 1.96 and Python 3.12.
- Add archive-aware changelog generation, post-processing, and tag-release tooling.
- Preserve exact arithmetic overflow reporting without non-finite sentinel defaults.
-
Modernize tooling checks and example execution
da626bc- Run examples from prebuilt binaries instead of invoking cargo run for each example.
- Add check/fix recipe aliases and guard documented command ordering with Semgrep.
- Document the Rust-native Markdown, YAML, TOML, spelling, and workflow action policy.
- Tighten Python/tooling setup by pinning pytest, using .python-version in CI, and hardening setup-tool version checks.
- Keep CI running the full just ci workflow across Ubuntu, macOS, and Windows.
Performance
-
Restore checked factorization throughput
f2e6d56- Move LU and LDLT non-finite factor checks out of cubic update loops while preserving completed-storage validation before factors escape.
- Borrow factor rows and finite vector arrays in solve, dot, and norm paths to avoid avoidable copies.
- Refresh v0.4.2 release artifacts, LU solve benchmark docs, and release workflow docs.
- Preserve README benchmark table spacing in the Criterion plot updater.