Skip to content

v0.4.2

Choose a tag to compare

@acgetchell acgetchell released this 04 Jun 05:25
· 35 commits to main since this release
Immutable release. Only release title and notes can be modified.

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 f75a01c

    Remove 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.
  • 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 419a90f

    Ensure 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.