SciRS2 0.2.0 is a stabilization leap: 200+ compilation errors driven to zero, a 100% Pure Rust FFT backend by default, and the first time SciRS2 runs in your browser.
Today we released SciRS2 0.2.0 — a complete workspace restoration that takes the whole stack to zero compile errors, makes Pure Rust OxiFFT the default FFT backend, and ships the first WebAssembly bindings.
No C. No Fortran. No NumPy system dependencies. No build hell. No version conflicts. For decades, scientific computing has meant fighting the same toolchain: NumPy and SciPy bolted onto OpenBLAS, FFTW, and a tangle of native shared libraries that break differently on every machine. SciRS2 throws that out. It is a pure-Rust scientific computing and AI/ML library — a NumPy, SciPy, and scikit-learn replacement — that compiles to a single static binary (or WASM) and runs everywhere: from laptops to browsers to edge devices to cloud clusters.
Why SciRS2 0.2.0 is a game changer
The incumbents make you pay a tax before you write a single line of math. Installing the SciPy stack means C and Fortran build chains, system BLAS hunts, FFTW linkage, and version conflicts that surface only in production. The native libraries underneath are memory-unsafe by construction, and none of them target the browser — WASM-hostile C code is a wall, not a path.
SciRS2 0.2.0 removes the tax and adds reach. Concrete wins from this release:
- 200+ errors → 0. A complete reconstruction and modernization brought every crate in the workspace back to full functionality. Zero compilation errors, zero clippy warnings.
- OxiFFT is now the 100% Pure Rust default. The FFT backend no longer depends on any C library;
rustfftis now optional behind arustfft-backendfeature for anyone who still wants it. - The neural stack was fully reconstructed — transformer encoder/decoder rebuilt, every optimizer fixed (Adam, SGD, RAdam, RMSprop, AdaGrad, Momentum), and the architecture modules (BERT, GPT, CLIP, Mamba, ViT, MLPMixer) repaired.
- First WebAssembly bindings. A new
scirs2-wasmmember runs SciRS2 in the browser and in Node.js. - Zero warnings, and all 789 examples compile and run. Quality is enforced across the entire codebase: ~11,400 tests passing over roughly 1.9M lines of Rust.
And the most important part for existing users: there are zero breaking changes. Every fix maintains backward compatibility. No migration required.
Technical Deep Dive: How We Rebuilt the Stack to Zero Errors in Pure Rust
0.2.0 was a ground-up reconstruction across four layers of the workspace, all of it in Pure Rust.
Layer 1 — Core (scirs2-core). The foundation was modernized end to end: migrated to the OpenTelemetry 0.30 API, gave GpuBuffer<T> proper Debug and Clone (Arc-based sharing), added Debug for GpuContext, and introduced 16 new GPU methods for autograd compatibility, along with enhanced GPU backend reductions and manipulation. Underneath it all, the trait discipline was tightened — SimdUnifiedOps and NumAssign bounds were added systematically so the type system, not runtime checks, guarantees correctness.
Layer 2 — FFT and scientific computing. The headline of this layer is the full OxiFFT migration. Ten FFT files (~1,707 lines changed) moved off rustfft: nufft, plan_cache, large_fft, optimized_fft, strided_fft, memory_efficient, plan_serialization, auto_tuning, performance_profiler, and algorithm_selector. Plan caching, SIMD acceleration, and memory efficiency were all preserved, with zero breaking changes to public APIs. rustfft is now strictly opt-in via rustfft-backend. Linear algebra (scirs2-linalg) continues to run on OxiBLAS, so the entire scientific path — BLAS, LAPACK, and FFT — is now Pure Rust by default.
Layer 3 — AI/ML. scirs2-neural was the largest reconstruction: 2,097 NumAssign trait-bound errors fixed across 46 files, the transformer encoder/decoder rebuilt, the Loss trait API corrected (compute → forward, gradient → backward), every optimizer fixed, and the BERT/GPT/CLIP/Mamba/ViT/MLPMixer architectures repaired. Alongside it, scirs2-autograd got real higher-order differentiation fixes — proper ReduceSum gradient broadcasting and Concat gradient splitting, plus corrected Hessian (diagonal/trace/HVP) and nth-order gradient tests — improving to 313/315 tests passing.
Layer 4 — WASM and integration. Two new workspace members landed. scirs2-wasm provides the first official WebAssembly target for SciRS2, with WasmMatrix, WASM SIMD, and web-worker parallelism for the browser and Node.js. scirs2-integration-tests adds a cross-crate integration suite so the whole stack is validated together, not just per crate. Across the board, code quality was modernized for Rust 2024: all rng.gen() calls became rng.random(), and the drop(&ref) anti-pattern was fixed.
Getting Started
cargo add scirs2
That is the whole install. No system BLAS, no FFTW, no Fortran compiler — the default standard feature set is 100% Pure Rust.
use scirs2::linalg::{matmul, solve};
use scirs2::stats::{mean, std_dev};
use scirs2::fft::fft;
use ndarray::array;
fn main() {
// Linear algebra on OxiBLAS — no OpenBLAS required.
let a = array![[2.0_f64, 1.0], [1.0, 3.0]];
let b = array![[1.0_f64], [2.0]];
let x = solve(&a.view(), &b.view()).expect("solve failed");
println!("solution = {:?}", x);
let product = matmul(&a.view(), &a.view()).expect("matmul failed");
println!("a * a = {:?}", product);
// Basic statistics.
let samples = array![1.0_f64, 2.0, 3.0, 4.0, 5.0];
println!("mean = {:.3}, std = {:.3}",
mean(&samples.view()).expect("mean failed"),
std_dev(&samples.view(), 1).expect("std failed"));
// FFT on the Pure Rust OxiFFT backend — no FFTW.
let signal = array![0.0_f64, 1.0, 0.0, -1.0];
let spectrum = fft(&signal.view(), None).expect("fft failed");
println!("spectrum = {:?}", spectrum);
}
Want GPU acceleration or the legacy FFT backend? Opt in:
cargo add scirs2 --features oxifft,cuda
What’s New in 0.2.0
- Complete Workspace Restoration: 200+ compilation errors fixed down to zero — full functionality restored across every crate.
- OxiFFT is the default FFT backend: 100% Pure Rust FFT, no C dependency.
rustfftis now optional viarustfft-backend(backward compatible). - Neural stack rebuilt: transformer encoder/decoder, all optimizers (Adam, SGD, RAdam, RMSprop, AdaGrad, Momentum), and BERT/GPT/CLIP/Mamba/ViT/MLPMixer architectures repaired.
scirs2-coremodernized: OpenTelemetry 0.30 API,GpuBuffer<T>Debug + Clone,GpuContextDebug, and 16 new GPU methods for autograd.- Autograd higher-order differentiation: improved to 313/315 tests passing, with correct
ReduceSumbroadcasting,Concatgradient splitting, and fixed Hessian/HVP. - New
scirs2-wasmmember: the first WebAssembly bindings for SciRS2 —WasmMatrix, WASM SIMD, and web-worker parallelism. - New
scirs2-integration-testsmember: cross-crate integration test suite. - Rust 2024 modernization: all
rng.gen()replaced withrng.random();drop(&ref)anti-pattern fixed. - Zero breaking changes: every fix maintains backward compatibility — no migration required.
Tips
- OxiFFT is already the default. You only add
rustfft-backendif you specifically need rustfft; for everyone else, the Pure Rust path needs no flags. - Target the browser by building
scirs2-wasmforwasm32-unknown-unknown:cargo build -p scirs2-wasm --target wasm32-unknown-unknown --release - Upgrading from 0.1.x needs no code changes — 0.2.0 ships zero breaking changes, so it is a drop-in bump.
- Use
rng.random(), not the deprecatedrng.gen(), to stay Rust-2024 compatible across the whole workspace. - Pick feature groups to keep builds lean. Use
standardfor the common path,fullfor everything, oraiwhen you only need the machine-learning stack:cargo add scirs2 --features ai
This is the foundation
SciRS2 sits at the center of the growing COOLJAPAN pure-Rust stack. It builds on OxiBLAS for BLAS and LAPACK and on OxiFFT for FFT — the Pure Rust foundations that, as of this release, power SciRS2 by default. It pairs naturally with OptiRS, the independent optimizer project (the former scirs2-optim), and with the wider pure-Rust data and numerics ecosystem alongside NumRS2 and PandRS. One language, one toolchain, no native build hell — all the way down.
Repository: https://github.com/cool-japan/scirs
Star the repo if you believe scientific computing should be memory-safe, dependency-free, and run anywhere — from the cloud to the browser.
Pure Rust scientific computing is here — fast, safe, and sovereign.
— KitaSan at COOLJAPAN OÜ February 16, 2026