Skip to content

Releases

v0.10.0

Choose a tag to compare

@jolars jolars released this 05 Nov 06:28
2d1c800

This version introduces row normalization for dense and sparse matrices, along
with ordered normalization recipes. To support both axes consistently, I have
reworked the API and taken the opportunity to simplify how matrices store and
expose fitted parameters. This brings several breaking changes to the Rust API:

  • Normalization, NormalizationParams, and NormalizationStats are renamed
    ColumnNormalization, ColumnNormalizationParams, and
    ColumnNormalizationStats. The name NormalizationParams now denotes a trait
    shared by fitted column, row, and chain parameters.
  • LazyMatrix<M, F> and EagerMatrix<M, F> now take a fitted parameter type as
    their second generic argument. For example, use
    LazyMatrix<M, ColumnNormalizationParams<F>> for column normalization or
    LazyMatrix<M, RowNormalizationParams<F>> for row normalization.
  • LazyMatrix::from_normalization(data, params) becomes
    LazyMatrix::from_parts(data, params). The old
    from_parts(data, centers, scales) becomes from_column_parts(...), with
    from_row_parts(...) available for rows. The with_centers and with_scales
    shortcuts are removed.
  • Both matrix wrappers expose fitted centers and scales through
    normalization().centers() and normalization().scales() instead of
    matrix-level accessors.
  • Both wrappers now return (data, params) from into_parts() instead of
    (data, centers, scales).
  • Column and row parameter into_parts() methods now return
    (dimension, centers, scales), preserving the dimension even when both
    vectors are absent.
  • Submatrix<'a, O> now borrows a logical parent operator instead of storing
    column normalization separately. Read the parent through as_inner() and
    selection bounds through row_range() and column_range(). The submatrix's
    centers() and scales() accessors are removed; inspect the parent's
    normalization() instead.
  • ColumnNormalization and RowNormalization are non-exhaustive. Construct
    custom recipes with new(center, scale) instead of struct literals.
  • Chain fitting now uses public recipe and fitted-parameter bounds, with
    fit::<M, P>() and fit_apply::<M, P>() replacing scalar generic arguments.

Normalization recipes can now fit parameters separately with .fit() or fit and
wrap data with .fit_apply(). Fitted parameters can own their vectors or share
them through .view(), so training and validation operators can reuse column
normalization without copying parameters or refitting.

Recipes also compose with .then(), with each stage fitting the output of its
predecessors. For new samples, .for_new_samples() reuses training column
parameters and refits row stages, while .apply_frozen() reapplies all fitted
stages unchanged. Chains containing row stages currently require dense storage.

Breaking changes

  • stabilize normalization and submatrix APIs (d4a63cd)
  • support sparse row normalization (8965030)
  • simplify normalization constructors (6e72816)
  • unify normalization operators (5d12a79)
  • name column normalization types explicitly (0fc8486)

Features

  • stream row normalization over Zarr chunks (18b8ba4)
  • stabilize normalization and submatrix APIs (d4a63cd)
  • add optional BLAS support for ndarray (64133ec)
  • support sparse row normalization (8965030)
  • compose ordered normalization recipes (ac6d718)
  • add owned and borrowed parameter application (c58d6c1)
  • expose normalization recipe fitting (e8c71f8)
  • add dense row normalization (6bd0e0d)
  • python: expose normalization methods and parameters (c416f6d)
  • add raw indexed row selections (7d406a2)
  • support borrowed faer CSC views (ae3a867)

Bug Fixes

  • ci: match the pest psm pin in MSRV checks (3c7a273)
  • ci: pin psm for Rust 1.87 checks (af0b8f8)

Performance Improvements

  • accelerate vector and weighted column reductions (517be91)
  • accelerate faer and nalgebra column reductions (3d784e0)
  • accelerate contiguous ndarray column reductions (e66623a)

python-v0.3.0

Choose a tag to compare

@jolars jolars released this 05 Nov 06:28
2d1c800

Breaking changes

  • simplify normalization constructors (6e72816)
  • unify normalization operators (5d12a79)
  • name column normalization types explicitly (0fc8486)

Features

  • python: expose normalization methods and parameters (c416f6d)

Dependencies

  • updated lazymatrix to v0.10.0

v0.9.0

Choose a tag to compare

@jolars jolars released this 29 Oct 12:18
4c72c38

Breaking changes

  • support sample standard deviation (1398bf4)

Features

  • add native PyTorch normalization layer (b1cff22)
  • add borrowed transpose operator views (3655898)
  • support sample standard deviation (1398bf4)
  • add named normalization presets (98826eb)
  • add median and quantile-range normalization (d862c8a)
  • add Zarr and weighted submatrix operations (646bed8)
  • add batched matrix products (82ea2b5)
  • add borrowed contiguous submatrices (0f34c0e)

Performance Improvements

  • borrow unscaled forward inputs (ac6938c)
  • optimize stable centered dense products (5f1b76a)

python-v0.2.0

Choose a tag to compare

@jolars jolars released this 29 Oct 12:18
4c72c38

Breaking changes

  • support sample standard deviation (1398bf4)

Features

  • add native PyTorch normalization layer (b1cff22)
  • support sample standard deviation (1398bf4)

Dependencies

  • updated lazymatrix to v0.9.0

v0.8.1

Choose a tag to compare

@jolars jolars released this 26 Oct 14:15
10e5887

Bug Fixes

  • ci: remove unsupported sdist flag (6b348da)

v0.8.0

Choose a tag to compare

@jolars jolars released this 26 Oct 12:59
6ca84d5

Breaking changes

Features

  • add dense faer weighted Gram and column sums (a65a4dc)
  • add zarrs 0.23 support (a589d43)
  • lower MSRV to 1.84 (5a327d6)
  • add Python bindings and coordinated releases (4e44fa2)

Bug Fixes

  • pin uuid for Rust 1.87 checks (f663e68)
  • security: update undici (c44d7a2)
  • ci: select compatible sprs for MSRV checks (fd13e87)
  • stabilize centered dense products (3a1fa16)

python-v0.1.1

Choose a tag to compare

@jolars jolars released this 26 Oct 14:15
10e5887

Dependencies

  • updated lazymatrix to v0.8.1

python-v0.1.0

Choose a tag to compare

@jolars jolars released this 26 Oct 12:59
6ca84d5

Features

  • add Python bindings and coordinated releases (4e44fa2)

Dependencies

  • updated lazymatrix to v0.8.0

Python package releases are versioned independently of the Rust crate.

v0.7.0

Choose a tag to compare

@jolars jolars released this 21 Oct 10:40
4825e3e

Features

  • add CSR operators and sparse SGD example (ded5211)
  • serve Markdown to website agents (cbe6d61)
  • add website agent discovery header (d0505ff)
  • add project website and benchmark comparisons (b6aba62)

Bug Fixes

  • make logos transparent (a651788)
  • wait for benchmark controls to become ready (9a448ca)
  • update website build dependencies (8b11f26)
  • invoke the website deployment script (7efaaa9)

v0.6.0

Choose a tag to compare

@jolars jolars released this 08 Oct 20:46
5c790e3

Features

  • add eager normalization and dense conversion (519190a)
  • add normalized product hooks and bounded CSR Gram kernels (42a6aef)