Skip to content

Latest commit

 

History

History
271 lines (174 loc) · 11.5 KB

File metadata and controls

271 lines (174 loc) · 11.5 KB

Changelog

v0.6.2 -- 2025-11-15

MSRV specified to 1.82.0, written to Cargo.toml.

Functionality changes:

  • rstsr-core: asarray will not panic when layout is not compact if pass &[T] or &mut [T] to give view/mut-view tensor. However, pass Vec<T> to give owned tensor will still panic if layout is not compact.

v0.6.0 -- 2025-11-03

Refactor:

  • rstsr-core: Split tensor/manuplication.rs into a module with folder. (#67)

API breaking changes:

  • rstsr-core: Supporting type-promotion for assign. (#65)
  • rstsr-dtype-traits: Split previous dtype trait PromotionAPI to two parts DTypePromoteAPI and DTypeCastAPI. (#66)
  • Refactor of some dtype-related traits and impl. (#66)
  • rstsr-core: Add lifetime annotation to TensorRefAPI / TensorRefMutAPI (these two traits are currently not applied to any implementations). (#67)
  • rstsr-common: Added traceback in error-handling, which changed the fundamental data structure of Error of RSTSR. (#67)
  • rstsr-common: DimBaseAPI::const_ndims is method (with &self as argument) now. (#67)

Enhancements:

  • rstsr-dtype-traits: add function isclose. (#66)
  • rstsr-core: add function allclose. (#66)
  • rstsr-core: simplifies some trait bounds for obtaining view of tensor. (#66)
  • rstsr-core: Add macro tensor_from_nested! (similar to ndarray::array!). (#67)
  • rstsr-common: Added rstsr_unwrap to print unwrap with traceback. Added cargo feature traceback in many crates for printing traceback info of place of panic. (#67)
  • rstsr-common: Added normalize_axes_index for development (similar to numpy.normalize_axis_tuple). (#67)
  • rstsr-common: Added Option<i/usize> to AxesIndex trait implementation. (#67)
  • Some API documents updated. (#67)

Fixes:

  • Fixes some possible memory-safety problems of uninitialized_vec in reduce implementations in rstsr-native-impl. (#66)
  • Fix no_std. (#67)
  • Fixed rt::expand_dims and rt::flip in multiple axes cases (accordance to NumPy). (#67)

v0.6.0-alpha.1 -- 2025-09-30

This is not a completed version. May have other API breaking changes before v0.6.0 release.

API breaking changes:

  • Using DeviceRawAPI<MaybeUninit<T>> instead of DeviceRawAPI<T> for output types in device operator traits, changing both parameter types and trait bounds (#60).
  • Using ExtNum, ExtFloat, ExtReal for trait extensions to crate num. Removed previous traits (per-functionality) AbsAPI, ReImAPI, etc. This affects trait bounds (RESTGroup/rstsr/#63).
  • Using data type promotion rules in several common functions in CPU device, changing trait bounds (#64).

Enhancements:

  • Added TBLIS plugin (#60). Now Einstein summation is available from rt::tblis::einsum (with cargo feature rstsr/tblis enabled, and linkage of libtblis.so).
  • Added uninit, assume_init (#61).
  • Added take, all, any, count_nonzero, nextafter, reciprocal (#63).
  • Using data type promotion rules for several common functions in CPU device implementations (sin, greater, etc., making comparasion of different types, or sin to integer list be evaluatable) (#64).

Refactor:

  • Changed most internal device implementation that works with empty_impl to uninit_impl (#61).
  • Changed directory structure for device implementations (currently BLAS devices are categorized to directory crates-device) (#62).
  • Removed previous rstsr-book in this repository (#63).

Parts of API document also updated.

v0.5.1 -- 2025-09-01

MSRV specified:

  • 1.84.1: with crate faer built;
  • 1.82.0: other cases (due to crate half and rust language usage of unsafe extern "C").

Code refactor:

  • Revert MSRV from 1.87 to 1.84/1.82 (#59).

v0.5.0 -- 2025-08-26

API breaking changes:

  • Revert to non-default for dynamic loading (#57)

Fixes (with API breaking behavior change):

v0.4.1 -- 2025-08-05

Enhancements:

  • Added CPU devices (backends) MKL (#48), BLIS (#49), AOCL (#51), KML (#53)

Possible API breaking change:

  • For conversion between CBLAS flags and RSTSR flags (defined in crate rstsr-common), previously CBLAS flags are in crate rstsr-lapack-ffi. Now those flags are defined in rstsr-cblas-base, and been applied in all FFI crates (at RESTGroup/rstsr-ffi).

Actions:

  • Added ARM support (#52)

v0.4.0 -- 2025-07-25

API breaking change: Supporting dynamic loading for OpenBLAS (#47)

  • Update rstsr-lapack-ffi and rstsr-openblas-ffi version to v0.4.
  • Default to dynamic_loading for using OpenBLAS.
  • Changes internal ways to call BLAS and LAPACK functions.

If compile time and disk usage becomes very large for rstsr-openblas-ffi, you may wish to set those options in Cargo.toml:

[profile.dev.package.rstsr-lapack-ffi]
opt-level = 0
debug = false

[profile.dev.package.rstsr-openblas-ffi]
opt-level = 0
debug = false

v0.3.10 -- 2025-07-22

Fix:

  • Fix unpack_tri signature
  • Fix gemm/syrk bug when k=0 (#46)

v0.3.9 -- 2025-07-07

Enhancements:

  • Feature with optional dependencies. Now in main crate rstsr, using feature faer and openblas along with linalg and sci should be ok, without explicitly declaring rstsr-linalg-traits and rstsr-sci-traits as dependencies.

v0.3.8 -- 2025-07-04

Bug Fix:

  • Tested complex linalgs for Faer and OpenBLAS devices.

Enhancements:

  • DeviceFaer: generalized eigen, triangular solve (#44)

v0.3.7 -- 2025-06-25

Bug Fix:

  • Fix panic when layout iterator size is zero (#42)

Enhancements:

  • Add common function numa_refb and refb_numa implementation (#42)
  • Implement clone for Tensor and TensorCow (#42)
  • Added into_pack_array, into_unpack_array as associated function of TensorAny (#42)
  • linalg: Solve-related functions supports vector (Ix1) RHS (#43)

v0.3.6 -- 2025-06-05

Bug Fix:

  • OpenBLAS device OpenMP get_num_thread function (#40)
    • Note that threading control is not stablized. There may be an incoming API breaking change on this feature for v0.4+.

Enhancements:

  • Feature addition (meshgrid, concat, stack, bool_select) (#38)
  • Feature addition (cdist, lebedev_rule) (#39)

Refactor:

  • Eliminate Error: From<I::Error> trait bound (#38)

v0.3.5 -- 2025-05-22

Bug Fix:

  • Fix too strict stride check (#36)

API Breaking Change:

  • Remove into_slice_mut (#35)

Enhancements:

  • Diagonal arguments now allows i32 as input

v0.3.4 -- 2025-05-20

Bug Fix:

  • Fix rayon parallel in op_muta_refb_func_cpu_rayon (#32)
  • Fix for conversion to self-device (#33)

v0.3.3 -- 2025-05-19

Bug Fix:

  • Fix Faer linalg functions when tensor offset != 0 (#30).

v0.3.2 -- 2025-05-19

Summary

  • Added linalg functions for DeviceFaer (#28).

API Breaking Change (user should not feel that):

  • updates Faer version to v0.22, seems that v0.20/v0.21 changes handling logic for complex values
  • Conversion from/to Faer made simple (but API breaking)
  • Matmul made simple (but API breaking), now requires faer::traits::ComplexField type (trait impl based), instead of manually dispatch types (macro_rules based)

Enhancements:

  • Functions added: cholesky, det, eigh (does not include generalized eigh), eigvalsh (same to eigh), inv, pinv, solve_general, svdvals

v0.3.1 -- 2025-05-16

API Breaking Change:

  • Remove ge, gt, ne, ... in traits TensorGreaterAPI, TensorNotEqualAPI, ... (#25)

Enhancements:

  • linalg: functions added: slogdet, det, svd, eigvalsh, svdvals, pinv (#23)
  • Summation to boolean tensor (#25)
  • Basic advanced indexing function index_select (#26)
  • Added TensorCow support for binary arithmetic operations (#22)

Something for fun:

  • Changed logo to be ABBA-like style (#24)

v0.3.0 -- 2025-05-09

API Breaking Change:

  • Now rt::linalg::eigh returns EighResult, instead of simple 2-element tuple (eigenvalues, eigenvectors) (#18).
  • Now Lapack bindings will use Lapack (Fortran FFI) instead of LAPACKE (C FFI) by default (#18).

Enhancements:

  • Now TensorCow can perfrom binary arithmetic operations, such like 2.0 * a.reshape((2, 3, 4)). Note that in some cases, rust compiler/rust-analyzer may not be able to deduce type of this result #22.
  • Performed various refactor to linalg functions.
  • Lapack (Fortran FFI) is supported and used by default. It is implemented like LAPACKE (but in rust), and many codes are generated by AI (#18).

Various code refactors:

  • Move more macro_rule implementatios to duplicate.

v0.2.7 -- 2025-04-15

Internal refactor:

  • Move out crate rstsr-openblas-ffi to rstsr-ffi repository, changes FFI bindings (#19).
  • Now row_major and col_major features are mutually exclusive in complie time.

v0.2.6 -- 2025-04-02

Feature addition:

  • Column major is now supported (#16).

v0.2.5 -- 2025-03-31

Bug fix:

  • fix pack_tril (correctness fix for col-major case).

v0.2.4 -- 2025-03-25

Bug fix:

  • fix pack_tril (correctness fix, trait bound fix).

v0.2.2 -- 2025-03-25

API breaking changes:

  • Rayon thread pool getter function get_pool changed, added get_current_pool, removed get_serial_pool (#14).

Code style changes (#15)

v0.2.1 -- 2025-03-24

Bug fix:

  • fix rayon pool memory blow up (#13)

v0.2.0 -- 2025-03-11

This release features on BLAS and linalg implementations. Currently, functions such as cholesky, eigh, solve_general in rstsr-linalg-traits have been implemented.

Also many enhancements in rstsr-core.

v0.1.0

Initial release. Most features in Python Array API has been implemented.