nabled 0.0.3

A linear algebra library written in Rust with an ndarray-first architecture.
Documentation

🕸️ Nabled

Crates.io Documentation License: Apache 2.0 Build Status Coverage

Nabled is an ndarray-native Rust numerical library focused on production-grade linear algebra and ML-oriented matrix/vector operations.

Install

[dependencies]
nabled = "0.0.3"

Implemented Domains

This list is ever-changing, consult the Rust Docs for the source of truth.

  1. SVD, QR, LU, Cholesky, Eigen, Schur, Polar
  2. Matrix functions (exp/log/power/sign)
  3. Triangular solve, Sylvester/Lyapunov
  4. PCA, regression, iterative solvers
  5. Numerical Jacobian/gradient/Hessian
  6. Statistics utilities
  7. Vector primitives (dot/norm/cosine/pairwise/batched)

Quick Example

use ndarray::arr2;
use nabled::linalg::svd;

fn main() -> Result<(), nabled::linalg::svd::SVDError> {
    let a = arr2(&[[1.0_f64, 2.0], [3.0, 4.0]]);
    let svd = svd::decompose(&a)?;
    println!("singular values = {:?}", svd.singular_values);
    Ok(())
}

Review more examples in nabled.

Namespaced API

  1. nabled::core: shared errors, validation, and prelude exports.
  2. nabled::linalg: linear algebra and decomposition modules.
  3. nabled::ml: ML-oriented numerical routines.

Features

  1. blas: enables ndarray/blas across participating workspace crates.
  2. openblas-system: enables provider-backed LAPACK paths via system OpenBLAS.
  3. openblas-static: enables provider-backed LAPACK paths via statically linked OpenBLAS.
  4. netlib-system: enables provider-backed LAPACK paths via system Netlib LAPACK.
  5. netlib-static: enables provider-backed LAPACK paths via statically linked Netlib LAPACK.
  6. accelerator-rayon: enables selected parallel CPU kernels.
  7. accelerator-wgpu: enables selected WGPU-backed kernels.
[dependencies]
nabled = { version = "0.0.3", features = ["openblas-system"] }

Feature behavior:

  1. openblas-system implies blas.
  2. Provider feature selection (openblas-system, openblas-static, netlib-system, netlib-static) is compile-time and internal to decomposition paths.
  3. Backend acceleration is compile-time and kernel-family-specific.
  4. Provider/toolchain requirements depend on backend choice; openblas-static and netlib-static require native build toolchains (gcc/gfortran/make), and netlib-system requires a system LAPACK/Fortran runtime available to the linker.

Quality Gates

just checks

On macOS, provider-enabled just recipes automatically set PKG_CONFIG_PATH and OPENBLAS_DIR for Homebrew OpenBLAS (/opt/homebrew/opt/openblas). No manual env export is required for those recipes.

Benchmarks

just bench-smoke-report

License

Licensed under either:

  1. MIT license
  2. Apache License, Version 2.0

at your option.