COOLJAPAN
← All posts

SciRS2 0.1.5 Released — A Consistency & Dependency-Hygiene Follow-up to 0.1.4

Pure-Rust SciPy/NumPy replacement. 0.1.5 is a polish release — workspace version alignment, strict scirs2-core import policy, correct GPU feature wiring, and a leaner dependency tree. OxiFFT stays the Pure Rust default. No C, no Fortran, no system dependencies.

release scirs2 scientific-computing ai pure-rust numpy scipy

A quick consistency-and-polish follow-up to last week’s 0.1.4 — fewer dependencies, stricter imports, and a workspace that lines up end to end.

Today we released SciRS2 0.1.5 — a fast follow-up that tightens workspace consistency and dependency hygiene across all 27 crates.

No C. No Fortran. No NumPy system dependencies. Where the scientific Python stack leans on NumPy, SciPy, FFTW, and OpenBLAS — each pulling in its own native toolchain — SciRS2 is 100% Pure Rust by default. BLAS and LAPACK run through OxiBLAS (no OpenBLAS, no MKL), FFT runs through OxiFFT (no FFTW, no C), and everything stays memory-safe. It compiles to a single static binary (or WASM) and runs everywhere — Linux, macOS, Windows, and the browser.

Why 0.1.5 matters

Right after the larger 0.1.4 release — which landed the SIMD work, Delaunay improvements, and the move to OxiFFT — we wanted a cleanup pass before moving on. 0.1.5 is exactly that: it makes the workspace fully consistent and lean, with nothing new to learn and nothing to migrate.

Here is why a maintenance release earns its own version:

Technical Deep Dive: The scirs2-core single-dependency architecture

SciRS2 is built around one rule we call the SCIRS2 POLICY: scirs2-core is the only crate allowed to carry external dependencies. Every other crate in the workspace imports ndarray, rand, and friends through core — scirs2_core::ndarray for array types, scirs2_core::random for RNGs — rather than depending on those crates directly.

The payoff is that there is exactly one place where the version of ndarray (or rand) is decided. No member crate can drift onto a different version, no transitive duplicate sneaks in, and upgrading the whole stack is a single edit in one Cargo.toml. It also means the public surface every crate uses is the abstraction scirs2-core exposes, not whatever the upstream crate happens to ship that week.

0.1.5 finishes enforcing this in one of the last places it had slipped: scirs2-neural’s batch operations. Their doc examples previously wrote use ndarray::...; now they write use scirs2_core::ndarray::..., bringing neural fully in line with the rest of the workspace.

On top of core sit 27 crates, organized by Cargo feature flags through the scirs2 meta-crate:

The FFT backend follows the same Pure-Rust-by-default principle established in 0.1.4: OxiFFT is the default, 100% Pure Rust, and rustfft remains available behind an optional feature purely for backward compatibility. You opt into the C-adjacent path; you never get it by accident.

This release ships with 11,400+ tests passing, ~1.69M lines of Rust (1.95M total), and zero warnings.

Getting Started

cargo add scirs2

That pulls in the standard feature set by default. For optional performance backends:

cargo add scirs2 --features oxifft,cuda

A small example using the umbrella crate — array types come through scirs2_core::ndarray, staying policy-compliant:

use scirs2_core::ndarray::array;
use scirs2::stats::{mean, std};

fn main() {
    let data = array![2.0_f64, 4.0, 4.0, 4.0, 5.0, 5.0, 7.0, 9.0];

    let m = mean(&data.view()).expect("mean");
    let s = std(&data.view(), 0).expect("std");

    println!("mean = {m:.3}, std = {s:.3}");
}

What’s New in 0.1.5

Tips

This is the foundation

SciRS2 sits in the growing COOLJAPAN pure-Rust stack. Its numeric foundations are OxiBLAS (BLAS/LAPACK) and OxiFFT (FFT) — both 100% Pure Rust — and optimization lives in the independent OptiRS project (the former scirs2-optim now has its own home). Alongside NumRS2 and PandRS, it’s part of a coherent, C-free scientific computing ecosystem in Rust.

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

Star the repo if you want a scientific computing stack that compiles to a single static binary with no native toolchain in sight.

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

KitaSan at COOLJAPAN OÜ February 8, 2026

↑ Back to all posts