Skip to content

v0.42.0

Latest

Choose a tag to compare

@Axect Axect released this 06 Jul 12:39

Release 0.42.0 (2026-07-06)

Breaking changes

  • Encapsulate Matrix / ComplexMatrix fields to fix a soundness hole (#101, 2874984)
    • Safe code could set row / col / data directly and reach heap out-of-bounds reads and writes through the internal raw-pointer and BLAS paths
    • Fields are now private and the matrix() / cmatrix() constructors assert data.len() == row * col
    • Migration guide:
      • m.row -> m.nrow()
      • m.col -> m.ncol()
      • m.shape -> m.layout()
      • m.data -> m.as_slice() / m.as_mut_slice() / m.into_vec()
      • Matrix { data, row, col, shape } literal -> matrix(data, row, col, shape)
    • Known follow-up: serde / rkyv deserialization can still bypass the constructor validation; tracked separately

Bug fixes

  • Fix even-order adaptive Gauss-Kronrod rules (G10K21 / G20K41 / G30K61 and their R variants) never early-exiting (#93, febd4e2)
    • The Gauss-sum reconstruction assumed the odd-order node layout, so even-order rules produced a corrupted error estimate and always subdivided to max_iter, even for constant integrands
    • Integrating a cubic over [0, 1] with G10K21(1e-8, 20) drops from about 87 ms to about 70 ns

New features

  • MatrixTrait::shape() returning (usize, usize) (#86, #103 by @ferxades12)
  • Matrix::trace() and ComplexMatrix::trace() (#87, 523185d)
  • ComplexMatrix::h(): Hermitian conjugate (conjugate transpose) (#87)
  • ComplexMatrix::real() / imag(): extract the real or imaginary part as a real Matrix (#87)
  • New accessors on both matrix types: nrow(), ncol(), layout(), into_vec() (#101)

CI / Lint

  • Add cargo-hack feature-combinations job: every feature builds alone, plus the pairwise powerset of the pure-Rust features (#98, fcfd012)
  • Add a blocking cargo fmt --all --check job and format the files added after #96 (bd36784, ec37e61)

Documentation

  • Promote the Quickstart to the top of README.md, condense the feature inventory, and trim the CONTRIBUTING.md source layout to a directory-level table (#99, 72a9e56)
  • Document that O3-accelerate only builds on Apple targets, with cargo-hack exclusion guidance (#98, 6d99f2f)