COOLJAPAN
← All posts

SciRS2 0.1.0 Released — A Pure Rust SciPy/NumPy Foundation, First Stable Release

SciRS2 0.1.0, the first stable release — a 100% Pure Rust scientific computing & AI/ML stack with SciPy-compatible APIs, built on OxiBLAS, refactored into clean modules with zero warnings and 10,861 passing tests. No C, no Fortran.

release scirs2 scientific-computing scipy numpy ai machine-learning pure-rust

Scientific computing in Rust, without the C and Fortran toolchain that has followed NumPy and SciPy for thirty years.

Today we released SciRS2 0.1.0 — the first stable release of a Pure Rust scientific computing & AI/ML stack with SciPy-compatible APIs.

No C. No Fortran. No OpenBLAS. No FFTW (by default). NumPy and SciPy are built on layers of C and Fortran — OpenBLAS, LAPACK, sometimes MKL — and that lineage is the reason “just install it” so often turns into a fight with system libraries, compilers, and ABI mismatches. SciRS2 takes a different path: it compiles to a single static binary, BLAS and LAPACK are provided by Pure Rust OxiBLAS, and cargo add scirs2 needs no system library setup at all. Because it is plain Rust, targeting WebAssembly is a real goal and a natural benefit of the design — we keep that claim modest at 0.1.0, but the foundation is there.

Why 0.1.0 matters

If you have ever tried to pin a reproducible NumPy/SciPy environment across machines, you know the install hell: the right C compiler, the right BLAS, the right LAPACK, and version conflicts that surface only at runtime. This first stable release matters because it removes that whole category of problem for a meaningful slice of scientific work.

These are the real numbers from this release. We would rather under-promise here and let the test suite speak.

Technical Deep Dive: how the stack is layered

SciRS2 is a workspace of focused crates, and the architecture as of 0.1.0 falls into a few honest layers.

1. Core layer — scirs2-core. The foundation every other crate builds on. SIMD acceleration via wide, data parallelism via rayon, plus shared memory and profiling utilities. Common abstractions live here so the rest of the stack stays consistent.

2. Scientific computing crates. scirs2-linalg (decompositions, eigensolvers) sits on OxiBLAS; alongside it are scirs2-fft, scirs2-stats, scirs2-optimize, scirs2-integrate (ODE solvers, BVP), scirs2-interpolate (splines), scirs2-signal (FFT, wavelets, filtering), scirs2-sparse, scirs2-spatial (KD-trees, distances), and scirs2-special (Bessel, gamma, elliptic). There are also scirs2-ndimage, scirs2-cluster, scirs2-datasets, and scirs2-io.

3. AI/ML layer. scirs2-autograd provides automatic differentiation in both reverse and forward mode; scirs2-neural builds neural networks on top; scirs2-graph handles graph processing; and scirs2-metrics, scirs2-transform, scirs2-text, scirs2-vision, and scirs2-series cover metrics, data transformation, text processing, computer vision, and time series.

4. Modular workspace design. Every non-core crate is built on the scirs2-core abstractions, so behavior stays uniform and you can depend on just the piece you need.

Getting Started

cargo add scirs2
use scirs2::prelude::*;
use ndarray::Array2;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create a matrix
    let a = Array2::from_shape_vec((3, 3), vec![
        1.0, 2.0, 3.0,
        4.0, 5.0, 6.0,
        7.0, 8.0, 9.0,
    ])?;

    // Singular value decomposition
    let (u, s, vt) = scirs2::linalg::decomposition::svd(&a)?;
    println!("Singular values: {:.4?}", s);

    // Condition number
    let cond = scirs2::linalg::basic::condition(&a, None)?;
    println!("Condition number: {:.4}", cond);

    // Sample from a normal distribution
    let normal = scirs2::stats::distributions::normal::Normal::new(0.0, 1.0)?;
    let samples = normal.random_sample(5, None)?;
    println!("Random samples: {:.4?}", samples);

    Ok(())
}

What’s inside

Tips

This is the foundation

SciRS2 0.1.0 lands among the very first COOLJAPAN projects, and it leans on Pure Rust OxiBLAS for its linear algebra so the whole stack stays free of native dependencies. It is meant to be a base that other early sibling projects can build on.

Repository: https://github.com/cool-japan/scirs

Star the repo if a Pure Rust SciPy/NumPy foundation is something you have been waiting for.

Pure Rust scientific computing is here — fast, safe, and sovereign.

KitaSan at COOLJAPAN OÜ December 29, 2025

↑ Back to all posts