SciRS2 - Scientific Computing and AI in Rust., providing SciPy-compatible APIs while leveraging Rust's performance, safety, and concurrency features. Unlike traditional scientific libraries
See the codeProduction-Ready Pure Rust Scientific Computing • No System Dependencies • 10-100x Performance Gains
SciRS2 is a comprehensive scientific computing and AI/ML infrastructure in Pure Rust, providing SciPy-compatible APIs while leveraging Rust's performance, safety, and concurrency features. Unlike traditional scientific libraries, SciRS2 is 100% Pure Rust by default with no C/C++/Fortran dependencies required, making installation effortless and ensuring cross-platform compatibility.
# Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Add SciRS2 to your project
cargo add scirs2
# Build your project - no system libraries needed!
cargo build --release
✨ Pure Rust: Zero C/C++/Fortran dependencies (OxiBLAS for BLAS/LAPACK, OxiFFT for FFT)
⚡ Ultra-Fast: 10-100x performance improvements through SIMD optimization
🔒 Memory Safe: Rust's ownership system prevents memory leaks and data races
🌍 Cross-Platform: Linux, macOS, Windows, WebAssembly - identical behavior
🧪 Battle-Tested: 38,768 tests (all-features) / 36,989 (default-features) + 5,136 doc-tests — workspace-wide via cargo nextest — plus 3.1M+ lines of Rust code, 29 workspace crates
📊 Comprehensive: Linear algebra, statistics, ML, FFT, signal processing, computer vision, and more
SciRS2 provides a complete ecosystem for scientific computing, data analysis, and machine learning in Rust, with production-grade quality and performance that rivals or exceeds traditional C/Fortran-based libraries.
Latest Stable Release - v0.6.5 (July 31, 2026) 🚀
cargo nextest, across 29 workspace cratesWhat's New in 0.6.5 — Ignore-Audit Bug Hunt: the Live Backward Pass Was Mostly Dead Code:
Op::grad() implementation first, converting roughly 223 wrong-or-absent gradients to correct ones — including every elementary math function (sqrt/exp/ln/trig/hyperbolic-trig/log2/log10/abs) and activation (softplus/elu/swish/gelu/mish). Also fixed: reduce_sum/transpose/gather were only correct under an all-ones cotangent, reduce_mean lost its 1/N factor, sigmoid_cross_entropy and BatchMatMul were misidentified by fragile substring matching, concat/einsum/tensordot panicked during backprop, and SymmetricEigenOp now genuinely diagonalizes via cyclic Jacobi instead of separate per-size special cases. The public custom-gradient API (custom_op, scale_gradient, selective_stop_gradient, detach) was a complete no-op regardless of the user's backward closure — now genuinely functional.decomposition::schur, lapack::eig, and eigen::advanced_precision_eig, replacing per-call implementations that either never checked for convergence or only worked on already-diagonal input.polyfit, a self-deadlocking ErrorMonitor, and garbage-output Niederreiter/Sobol QMC sequence generators.watts_strogatz_graph no longer hangs on ~99.8% of seeds at p > 0 (its rewiring step checked has_node, always true, instead of has_edge).out_of_core streaming hang/unbounded-memory-growth/double-count, fixed inverted octree/quadtree k-NN BinaryHeap ordering (was returning the farthest candidates) and an always-zero A* path cost, a mmap loader that ignored its own file header (shifting every element), and gamma(x) silently returning inf for x in ~[140.5, 171].ShortTimeFFT-class STFT port — and deleted ~167 unreachable legacy/duplicate files (541 total .rs files, 255 unreachable — 47% of the crate).#[ignore]-legitimacy audit — every ignored test workspace-wide actually run and root-caused, not just read — dropping the count from 132 (~31% bare/no-reason) to 59, every one now reason-tagged (requires-gpu:/requires-env:/slow:/bench:/not-implemented:) and enforced going forward by a new cargo-scirs2-policy lint.See CHANGELOG.md [0.6.5] for the complete list.
What's New in 0.6.4 — wasm32 Follow-Up Fix:
oxifft 0.4.1 added a hard compile_error! when its threading (rayon) feature is active on wasm32 targets. scirs2-fft and scirs2-signal now declare oxifft via target-gated [target.'cfg(...)'.dependencies] tables — full defaults off-wasm, default-features = false, features = ["std"] on wasm32 — resolving the error.scirs2-fft/scirs2-signal artifacts crates.io already had at that version. They catch up at 0.6.4.See CHANGELOG.md [0.6.4] for the complete list.
What's New in 0.6.3 — Windows-Compatibility Hardening:
scirs2-spatial's DistancePool allocated cache-aligned buffers via a raw System.alloc call, then freed them through Box<[f64]>'s default-aligned Drop — an alloc/dealloc layout mismatch that is undefined behavior. glibc's allocator tolerated it; Windows' does not, corrupting the heap (STATUS_HEAP_CORRUPTION). Now allocates through plain Vec/Box<[f64]>. scirs2-stats's AdaptiveMemoryManager had a related bug: it re-derived the deallocation strategy from config instead of the strategy allocate actually resolved for that pointer, so Adaptive-configured pools could be freed through the wrong allocator; allocate now records the resolved strategy per pointer for deallocate to look up.scirs2-symbolic's EmlNode gained an explicit iterative Drop impl — the compiler-derived recursive one overflowed the stack when a deep expression tree (e.g. a 10,000-node chain) went out of scope, fitting in Linux's 8 MB default thread stack but not Windows' 1 MB default (STATUS_STACK_OVERFLOW).scirs2-transform's AdvancedMemoryPool::prewarm_common_sizes eagerly pre-allocated up to ~5.5 GB of spare buffers just to construct an AdvancedPCA; Linux's overcommit hid the cost, Windows backed the whole reservation up front and aborted. Pre-warming is now capped by a 64 MB budget.scirs2-core's CrossPlatformValidator::validate_windows_path flagged the drive-letter colon in any absolute Windows path (e.g. C:\Users\...) as an invalid character, rejecting every such path.scirs2-signal's Francis double-shift QR (ESPRIT phase estimation) had two bugs letting eigenvalues silently drift from the input matrix's; n4sid_estimate's least-squares solve used normal equations, which silently returned bogus huge-norm solutions for rank-deficient (non-persistently-exciting) inputs instead of erroring — both now go through an SVD-based minimum-norm solve.oxifft 0.3.2→0.4.1, oxicuda-* 0.5.1→0.5.3, oxiz 0.2.4→0.3.0.See CHANGELOG.md [0.6.3] for the complete list.
What's New in 0.6.2 — Pure Rust Hardening: HDF5, Tracy, NUMA & OpenCL:
EnhancedMatFile/V73MatFile no longer require a system libhdf5. The in-tree hdf5_lite reader (2,697 lines) is retired in favor of oxih5, which widens format coverage (superblock v2/v3, fractal heaps, extensible arrays, virtual datasets, szip) and fixes a critical silent-data-loss bug where compressed-dataset writes were silently dropped, plus a mis-parsed version-2 dataspace header that had been self-concealed by a buggy test fixture.hdf5 (C-linked), libnuma, tracy-client (C++) and opencl3 are all gone from the dependency graph. scirs2-core's Tracy profiling is now a pure-Rust Chrome-Trace-Event exporter; NUMA topology discovery reads real /sys data instead of estimating "8 cores per node"; OpenCL support now runtime-dlopens the system ICD instead of linking at build time. scirs2-spatial's NumaTopology::detect() had the same fabricated-data problem (hardcoded core/memory estimates) — it now reads the real Linux sysfs topology, with an honest single-node fallback elsewhere.reqwest/ureq now build with rustls-no-provider, dropping the C aws-lc-rs/ring backends; SciRS2 auto-installs a pure-Rust oxitls-rustcrypto-provider on first use unless the application already installed its own CryptoProvider.oxicuda-nvrtc crate (runtime dlopen, zero build-time CUDA SDK dependency).oxih5/oxih5-core 0.1.3→0.2.2, oxisql-* 0.3.2→0.4.0, oxiz 0.2.3→0.2.4, oxicuda-* 0.5.0→0.5.1 (+new oxicuda-nvrtc), Cranelift 0.133→0.134 (fixes a memmap2 unsound advisory, RUSTSEC-2026-0186).See CHANGELOG.md [0.6.2] for the complete list.
What's New in 0.6.1 — Real Codegen, DLPack Safety & GPU-Dispatch Honesty:
scirs2-neural's ModelPackager::package() now genuinely compiles a Rust project via cargo/rustc for native binaries (PackageFormat::Native) and C-shared-library (PackageFormat::CSharedLibrary) targets, replacing the previous placeholder byte-writing stubs; new serving module split into mod.rs/types.rs/packager.rs/codegen.rs/tests.rs.#[repr(C)] on to_dlpack's BackingStore in scirs2-python caused a process-crashing SIGBUS whenever the DLPack capsule was garbage-collected; also fixed a double-consumption bug in the capsule destructor and a stride-handling bug in from_dlpack that silently produced wrong data for non-contiguous/transposed tensors.scirs2-datasets's AdvancedGpuOptimizer now performs real wgpu/GpuNdarray GPU dispatch instead of a simulated mock (minor breaking change: BenchmarkResult.gpu_time_ms/.speedup are now Option<f64>, None when no real GPU dispatch ran); scirs2-core's PlatformCapabilities::detect() now runtime-probes for real NVIDIA/Metal GPU hardware instead of hardcoding cuda_available to false; scirs2-special's permanently-failing execute_kernel GPU path now has a real CPU fallback for gamma/bessel_j0/erf; wgpu adapter/device discovery across 7 crates now restricts to Backends::PRIMARY (Vulkan/Metal/DX12/BrowserWebGPU) instead of Backends::all(), so a broken secondary GL backend can no longer report false availability and then die on first use.F distribution ppf() (inverse CDF) in scirs2-stats, plus opt-in real memory tracking in its SciPy benchmark framework; hamming() distance in scirs2-spatial; finance facades (AdvancedMonteCarloEngine, RealTimeRiskMonitor, ExoticOptionPricer, RiskAnalyzer) in scirs2-integrate; training_history() on scirs2-core's generative-sampling models (NormalizingFlow and others) and export_data() on ProductionProfiler; simd_distance_squared_euclidean on SimdUnifiedOps.scirs2-autograd's gradient-dispatch engine now actually invokes CondOp/LogDetOp backward rules (previously dead code behind op-name string dispatch), plus a proper Wielandt-deflation SVD fix and a condition-number computation fix; scirs2-signal's waverec now reconstructs to the correct original length (was 2x for non-Haar filters) with real perfect-reconstruction verification; restored SIMD paths for scirs2-interpolate's weighted_sum/squared_euclidean_distance (previously always fell back to scalar); fixed a GEMM operand-layout bug in the scirs2-datasets/scirs2-interpolate/scirs2-optimize CUDA paths (mistagged ColMajor, but oxicuda-blas requires RowMajor); two Miri-detected undefined-behavior fixes (unaligned-reference UB in cast_bytes_to_slice, a missing-else branch in a SIMD kernel).scirs2-stats; split 3 oversized (>2000-line) files into module directories via SplitRS (scirs2-io's advanced_coordinator.rs/hdf5/mod.rs, scirs2-series's utils.rs); dependency bumps — oxiarc-archive/-lz4/-bzip2/-zstd/-deflate/-snappy/-brotli 0.3.3 → 0.3.6 (the 0.3.4 regression this was previously pinned around is fixed upstream as of 0.3.5), oxisql-core/-sqlite-compat 0.3.1 → 0.3.2, oxicuda-* 0.4.0 → 0.5.0; cargo-scirs2-policy's --format flag is now a validated enum instead of silently falling back on typos.See CHANGELOG.md [0.6.1] for the complete list.
What's New in 0.6.0 — Pure-Rust CUDA Decentralization:
oxicuda-* CUDA backends: introduced a direct, per-crate, off-by-default, runtime-probed cuda feature across 10 crates — scirs2-fft, scirs2-symbolic, scirs2-interpolate, scirs2-special, scirs2-stats, scirs2-graph, scirs2-linalg, scirs2-optimize, scirs2-datasets, scirs2-vision — decentralizing GPU acceleration out of scirs2-core. Every path is f64-native, real CUDA PTX→driver JIT (not a CPU/wgpu simulation), and additive alongside the existing wgpu portability story.wgpu name (was wgpu_backend/gpu_wgpu/wgpu_fft/wgpu_kernels/wgpu_rbf).scirs2-core's cudarc-based CUDA backend entirely, dropping the cudarc dependency; GpuBackend::Cuda now directs users to the per-crate oxicuda-* features.See CHANGELOG.md [0.6.0] for the complete list.
What's New in 0.5.1 — Correctness, API-Stability & Pure Rust Hardening:
TraceBackwardOp (reverse-mode gradient for trace) and a tensor_ops/decomposition_backward.rs module with exact spectral gradients — matrix-sqrt (Sylvester equation), matrix-log/matrix-power (Daleckii–Krein divided differences), and reduced-SVD VJP (degenerate-singular-value detection). Previously these returned all-zeros or wrong shapes.#[non_exhaustive] attribute on scirs2-core's CoreError (lost previously); a new core_error_non_exhaustive compile-fail test in scirs2-stability-tests now guards the contract.BackendNotAvailable / NotImplemented / Option<f64> metrics when no real device or measurement exists, instead of returning fabricated contexts or invented throughput numbers.pub mod zarr) — directory stores, codec pipeline, and chunk-boundary slice I/O.rug, C-backed rusqlite, tokenizers, and external either/hex/urlencoding/data-encoding crates — arbitrary precision now on oxinum-*, SQLite on oxisql-sqlite-compat, blake3 built with its no-ASM pure feature. Ecosystem dep bumps: OxiArc 0.3.3, OxiSQL 0.3.1, OxiNum 0.1.2, OxiH5 0.1.3, OxiZ 0.2.3, OxiCode 0.2.4, plus OxiEML 0.1.2.What's New in 0.5.0 — CAS & Symbolic Mathematics + GPU Acceleration (Waves 53–77):
Core EML/CAS substrate (Waves 53–57):
eml::tree, LoweredOp flat IR, stack-safe evaluator, symbolic differentiation (grad/hessian/jacobian), algebraic simplification with fixed-point rewritingcas::canonicalize — EML-native canonical form with 7 algebraic rewrite rules; e-graph equality saturation; cas::pattern engine; cas::identity_db (11 trig/log identities)cas::smt — OxiZ QF_NRA SMT integration: EmlSmtSolver, structural-hash fast path, Ackermann transcendental encoding for 16 ops, certified rewriting with RAII safetycompile::to_jit — Cranelift CPU JIT for LoweredOp; to_jit_auto auto-dispatches CPU/GPU by batch size thresholdcompile::to_gpu — WGSL compute shader JIT from LoweredOp tape; real wgpu submission via eval_batch (Wave 75)eml::to_latex: \frac, \cdot, a^{b}, \sqrt, \pi/e exact constants, \operatorname{arcsinh} — stack-safe on deeply nested treeswith_constraints (SMT-pruned BoundedOutput + Monotonic); discover_multi, discover_ode (SINDy-style); NUMA-aware parallel predictscirs2.symbolic sub-namespace: PyEmlTree, PyCanonical, lower/simplify/grad/eval_real/discover; GIL-releasing discoversymbolic feature — eml_scalar_op creates differentiable scalar tensors; float-tape ↔ EML gradient parity; criterion benchmark suitesymbolic::newton (exact Hessian/gradient), symbolic::lagrangian/build_kkt (Lagrangian+KKT Newton), L-BFGS symbolic, trust-region symbolicAdvanced CAS (Waves 59–70):
cas::solve/solve_system/solve_ode — algebraic solver, 3-tier system solver (Bareiss/Gröbner/transcendental), 5 ODE family solverscas::integrate_rational — Risch-LITE rational integrationcas::moments_catalog/expected_fisher_catalog/noether_conservation — closed-form statistical moments, Fisher information, Noether conservation lawscas::series — Taylor + Padé approximants in EML formcas::cse_dag::CseDag — structural-hash CSE DAG with topological-order evaluationdiffgeom module — Tensor/Metric/christoffel/ricci/einstein/covariant_derivative/Riemann tensor/Weyl tensorscirs2-linalg::symbolic — det_symbolic, eigenvalues_symbolic_2x2, expm_symbolic, StructureKind recognition, spectral dispatchscirs2-stats::mle_symbolic — gradient-descent MLE from symbolic PDFscirs2-neural::symbolic::rope_attention — closed-form RoPE attention logitWave 73–77 GPU + Algorithms:
par_map_chunks (Linux pthread affinity pin, rayon fallback Darwin/WASM); GpuNdarray<f32> (7 WGSL kernels: elementwise, matmul, sum, transpose); concat_axis.wgsl (axis>0) + reduce_sum_axis.wgsl (rank≥3)alibi_slope, alibi_bias_expr, verify_symbolic_vs_numerical); SR-as-prior for time series (discover_series_prior, series_prior_regularization); SymbolicPriorLoss in scirs2-neuralbitflags 0.6.0 patch; refined ARM NEON pathfinder_simd build patchzip crate from dependency treedirs crate with custom platform_dirs modulePython::with_gil -> Python::attach)from_py_object attribute usage to resolve deprecation warningscriterion::black_box with std::hint::black_box across all benchmarksSee SCIRS2_POLICY.md for architectural details and CHANGELOG.md for complete release history.
SciRS2 is 100% Pure Rust by default - no C, C++, or Fortran dependencies required!
Unlike traditional scientific computing libraries that rely on external system libraries (OpenBLAS, LAPACK), SciRS2 provides a completely self-contained Pure Rust implementation:
Benefits:
cargo add scirs2 - no system library setup requiredOptional Performance Enhancements (not required for functionality):
oxifft feature: High-performance Pure Rust FFT with FFTW-compatible algorithmsmpsgraph feature: Apple Metal GPU acceleration (macOS only, Objective-C)cuda feature: NVIDIA CUDA GPU accelerationarbitrary-precision feature: GMP/MPFR for arbitrary precision arithmetic (C library)Enable with: cargo add scirs2 --features oxifft,cuda
By default, SciRS2 provides a fully functional, Pure Rust scientific computing stack that rivals the performance of traditional C/Fortran-based libraries while offering superior safety, portability, and ease of use.
scirs2-linalg): Matrix operations, GMRES/PCG/BiCGStab iterative solvers, Lanczos/Arnoldi factorizations, CP-ALS/Tucker tensor decompositions, matrix functions (expm/logm/sqrtm), control theory (Riccati/Lyapunov)scirs2-stats): Distributions (stable, GPD, von Mises-Fisher, Tweedie), Bayesian methods (NUTS/HMC/SMC), Gaussian processes, survival analysis (Cox/KM/AFT), copulas, Bayesian networks, causal inferencescirs2-optimize): MIP/SDP/SOCP solvers, Bayesian optimization, NSGA-III multi-objective, stochastic (SGD/Adam/SVRG), metaheuristics (ACO/SA/DE/Harmony), convex (ADMM/proximal), combinatorialscirs2-integrate): ODE/BVP/DAE solvers, PDE (FEM/LBM/DG), SDE/SPDE solvers, BEM, phase-field (Cahn-Hilliard/Allen-Cahn), port-Hamiltonian systems, QMC/IMEX methodsscirs2-interpolate): RBF, MLS, PCHIP, spherical harmonics, kriging, B-spline surfaces, tensor product, natural neighbor, barycentricscirs2-special): Mathieu, Coulomb wave functions, spherical harmonics, Wigner 3j/6j/9j, Jacobi theta, Fox H-function, Heun, Appell, q-analogs, Weierstrass, polylogarithmscirs2-signal): Matched filter, CFAR radar detection, Kalman/EKF/UKF state estimation, compressed sensing (OMP/ISTA/CoSaMP), MFCC, EMD/HHT, source separation (ICA/NMF), adaptive filtering (LMS/RLS)scirs2-sparse): LOBPCG/IRAM eigensolvers, AMG, BCSR/ELLPACK formats, block preconditioners (Jacobi/SPAI/Schwarz), GCRO-DR recycled Krylov, domain decompositionscirs2-spatial): R*-Tree, Fortune's Voronoi, WGS84/UTM geodata projections, spatial statistics, trajectory analysis, sweep-line algorithms, 3D convex hullscirs2-ndimage): Gabor/SIFT/HOG feature detection, watershed/SLIC/GrabCut segmentation, optical flow (Farneback/LK), 3D morphology, medical imaging, texture analysis (GLCM/LBP)scirs2-cluster): GMM, SOM, HDBSCAN, Dirichlet process, kernel k-means, biclustering (Cheng-Church/FABIA), topological (Mapper/TDA), deep clustering (DEC), stream/online (CluStream/DenStream)scirs2-fft): Sparse FFT, Prony method, MUSIC/ESPRIT, Lomb-Scargle, NTT, CZT/FRFT, polyphase filterbank, all DCT/DST variants, wavelet packets, reassigned spectrogramscirs2-io): Protobuf/msgpack/CBOR/BSON/Avro serialization, Parquet/Feather/ORC columnar formats, streaming JSON/CSV/Arrow, cloud storage abstraction, HDF5-lite, schema management, ETL pipelinescirs2-datasets): Text/NER/QA, medical imaging, graph benchmarks, recommendation, anomaly detection, time series (UCR-compatible), synthetic generatorsscirs2-validation): Distribution validation utilities and reference values for statistical testing, PDF/CDF/PPF testing across 15+ distributionsscirs2-autograd): Custom gradient rules, gradient checkpointing, JVP/VJP (forward/reverse mode), implicit differentiation, mixed precision (FP16/BF16), distributed gradient, Hessian computationscirs2-neural): Transformers (GPT-2/T5/SWIN), GNNs (GCN/GAT/GraphSAGE/GIN), diffusion models (DDPM/DDIM), VAE, GAN, capsule networks, SNN, PPO/DPO RL, MoE, ViT/CLIP/ConvNeXt, knowledge distillation, quantization, pruning, meta-learning (MAML)scirs2-graph): Louvain/Girvan-Newman community detection, VF2 isomorphism, Node2Vec embeddings, maximum flow (Dinic/push-relabel), temporal graphs, hypergraphs, force-directed layout, SVG visualizationscirs2-transform): UMAP, Barnes-Hut t-SNE, sparse PCA, persistent homology (TDA), optimal transport (Wasserstein/Sinkhorn), archetypal analysis, metric learning (LMNN/ITML), multiview (CCA/deep CCA)scirs2-metrics): Detection (IoU/AP/mAP/NMS), ranking (NDCG/MAP/MRR), generative (FID/IS/LPIPS), fairness (demographic parity/equalized odds), segmentation, streaming metricsscirs2-text): BPE/WordPiece tokenizers, CRF/HMM sequence labeling, FastText, NER, topic modeling (LDA/NMF), coreference resolution, knowledge graph extraction, RST discourse analysisscirs2-vision): Stereo depth estimation, ICP point cloud registration, PnP camera pose, dense optical flow, video processing, SLAM framework, panoptic/semantic/instance segmentation, 3D reconstruction (SfM)scirs2-series): TFT/N-BEATS/DeepAR deep learning forecasting, VAR/VECM/DFM models, EGARCH/FIGARCH volatility, FDA (functional data analysis), conformal prediction, online ARIMA, Granger causality, hierarchical reconciliationunwrap() in production codeSciRS2 is a large-scale scientific computing ecosystem with comprehensive coverage:
cargo nextestThis demonstrates the comprehensive nature and production-ready maturity of the SciRS2 ecosystem.
SciRS2 adopts a modular architecture with separate crates for different functional areas, using Rust's workspace feature to manage them:
/
# Core Scientific Computing Modules
├── Cargo.toml # Workspace configuration
├── scirs2-core/ # Core utilities and common functionality
├── scirs2-autograd/ # Automatic differentiation engine
├── scirs2-linalg/ # Linear algebra module
├── scirs2-integrate/ # Numerical integration
├── scirs2-interpolate/ # Interpolation algorithms
├── scirs2-optimize/ # Optimization algorithms
├── scirs2-fft/ # Fast Fourier Transform
├── scirs2-stats/ # Statistical functions
├── scirs2-special/ # Special mathematical functions
├── scirs2-signal/ # Signal processing
├── scirs2-sparse/ # Sparse matrix operations
├── scirs2-spatial/ # Spatial algorithms
# Advanced Modules
├── scirs2-cluster/ # Clustering algorithms
├── scirs2-ndimage/ # N-dimensional image processing
├── scirs2-io/ # Input/output utilities
├── scirs2-datasets/ # Sample datasets and loaders
├── scirs2-validation/ # Distribution validation utilities and reference values
# AI/ML Modules
├── scirs2-neural/ # Neural network building blocks
# Note: scirs2-optim separated into independent OptiRS project
├── scirs2-graph/ # Graph processing algorithms
├── scirs2-transform/ # Data transformation utilities
├── scirs2-metrics/ # ML evaluation metrics
├── scirs2-text/ # Text processing utilities
├── scirs2-vision/ # Computer vision operations
├── scirs2-series/ # Time series analysis
# Main Integration Crate
└── scirs2/ # Main integration crate
├── Cargo.toml
└── src/
└── lib.rs # Re-exports from all other crates
This modular architecture offers several advantages:
The core module (scirs2-core) provides several advanced features that are leveraged across the ecosystem:
use scirs2_core::gpu::{GpuContext, GpuBackend, GpuBuffer};
// Create a GPU context with the default backend
let ctx = GpuContext::new(GpuBackend::default())?;
// Allocate memory on the GPU
let mut buffer = ctx.create_buffer::<f32>(1024);
// Execute a computation
ctx.execute(|compiler| {
let kernel = compiler.compile(kernel_code)?;
kernel.set_buffer(0, &mut buffer);
kernel.dispatch([1024, 1, 1]);
Ok(())
})?;
use scirs2_core::memory::{ChunkProcessor2D, BufferPool, ZeroCopyView};
// Process large arrays in chunks
let mut processor = ChunkProcessor2D::new(&large_array, (1000, 1000));
processor.process_chunks(|chunk, coords| {
// Process each chunk...
});
// Reuse memory with buffer pools
let mut pool = BufferPool::<f64>::new();
let mut buffer = pool.acquire_vec(1000);
// Use buffer...
pool.release_vec(buffer);
use scirs2_core::memory::metrics::{track_allocation, generate_memory_report};
use scirs2_core::profiling::{Profiler, Timer};
// Track memory allocations
track_allocation("MyComponent", 1024, 0x1000);
// Time a block of code
let timer = Timer::start("matrix_multiply");
// Do work...
timer.stop();
// Print profiling report
Profiler::global().lock().unwrap().print_report();
Each module has its own README with detailed documentation and is available on crates.io.
| Crate | Description | docs.rs |
|---|---|---|
| scirs2 | Main integration crate — re-exports from all subcrates | |
| scirs2-core | Foundational infrastructure: work-stealing scheduler, NUMA par_map_chunks, HAMT, cache-oblivious algorithms, GPU backends, GpuNdarray<f32> (wgpu), distributed ops | |
| scirs2-linalg | Linear algebra: iterative solvers (GMRES/PCG/BiCGStab), tensor decompositions (CP-ALS/Tucker), matrix functions (expm/logm), control theory | |
| scirs2-stats | Statistics: 40+ distributions, NUTS/HMC/SMC Bayesian inference, Gaussian processes, survival analysis (Cox/KM/AFT), Bayesian networks, copulas | |
| scirs2-optimize | Optimization: MIP/SDP/SOCP, Bayesian BO, NSGA-III multi-objective, stochastic (SGD/Adam/SVRG), ACO/SA/DE metaheuristics, ADMM/proximal, GPU CG/Newton/L-BFGS (wgpu) | |
| scirs2-integrate | Numerical integration: ODE/BVP/DAE, PDE (FEM/LBM/DG), SDE/SPDE, BEM, phase-field, port-Hamiltonian, IGA, QMC | |
| scirs2-interpolate | Interpolation: RBF (with wgpu GPU acceleration), PCHIP, MLS, kriging, spherical harmonics, B-spline surfaces, tensor product, natural neighbor, barycentric | |
| scirs2-fft | FFT and spectral: sparse FFT, Prony, MUSIC, Lomb-Scargle, NTT, CZT, FRFT, DCT/DST all variants, wavelet packets, polyphase filterbank | |
| scirs2-signal | Signal processing: matched filter, CFAR radar, Kalman/EKF/UKF, OMP/ISTA compressed sensing, MFCC, EMD/HHT, ICA/NMF source separation | |
| scirs2-sparse | Sparse matrices: LOBPCG/IRAM eigensolvers, AMG, BCSR/ELLPACK formats, block preconditioners (Jacobi/SPAI/Schwarz), recycled Krylov (GCRO-DR) | |
| scirs2-special | Special functions: Mathieu, Coulomb wave, spherical harmonics, Wigner 3j/6j/9j, Jacobi theta, Fox H-function, Heun, Appell, q-analogs | |
| scirs2-spatial | Spatial: R*-Tree, Fortune's Voronoi, WGS84/UTM geodata, spatial statistics, trajectory analysis, sweep-line algorithms, 3D convex hull | |
| scirs2-cluster | Clustering: GMM, SOM, HDBSCAN, Dirichlet process, kernel k-means, biclustering (FABIA), topological (Mapper/TDA), deep clustering (DEC) | |
| scirs2-ndimage | N-dim image processing: Gabor/SIFT/HOG, watershed/SLIC/GrabCut, optical flow, 3D morphology, medical imaging, GLCM/LBP texture | |
| scirs2-io | Data I/O: Protobuf/msgpack/CBOR/BSON/Avro, Parquet/Feather/ORC, streaming JSON/CSV/Arrow, cloud storage abstraction, HDF5-lite, ETL pipeline | |
| scirs2-datasets | Datasets: text/NER/QA, medical imaging, graph benchmarks, recommendation, anomaly detection, time series (UCR-compatible), synthetic generators | |
| scirs2-autograd | Automatic differentiation: JVP/VJP, custom gradients, checkpointing, mixed precision (FP16/BF16), distributed gradient, Hessian, tape-based AD | |
scirs2-symbolic | Symbolic mathematics: EML-IR CAS, symbolic diff/hessian/jacobian, canonicalize, e-graphs, SMT (OxiZ), Cranelift JIT, GPU WGSL eval, diffgeom (Riemann/Weyl), ALiBi, SR engine, LaTeX export | — |
| scirs2-neural | Neural networks: GPT-2/T5/SWIN/ViT/CLIP/ConvNeXt transformers, GCN/GAT/GIN GNNs, DDPM diffusion models, SNN, capsule, PPO/DPO RL, MoE | |
| scirs2-graph | Graph algorithms: Louvain/Leiden/Girvan-Newman community detection, VF2 isomorphism, Node2Vec, Dinic max-flow, temporal graphs, SVG visualization; GPU BFS/SSSP/delta-stepping (wgpu) | |
| scirs2-transform | Dimensionality reduction: UMAP, Barnes-Hut t-SNE, sparse PCA, persistent homology (TDA), optimal transport (Wasserstein/Sinkhorn), metric learning | |
| scirs2-metrics | ML metrics: IoU/AP/mAP detection, NDCG/MAP/MRR ranking, FID/IS/LPIPS generative, fairness (equalized odds), segmentation, streaming metrics | |
| scirs2-text | NLP: BPE/WordPiece tokenizers, CRF/HMM sequence labeling, FastText, NER, LDA topic modeling, coreference resolution, RST discourse analysis | |
| scirs2-vision | Computer vision: stereo depth, ICP point cloud, PnP camera pose, dense optical flow, SLAM, panoptic/semantic/instance segmentation, SfM | |
| scirs2-series | Time series: TFT/N-BEATS/DeepAR forecasting, VAR/VECM/DFM, EGARCH/FIGARCH volatility, FDA, conformal prediction, online ARIMA, Granger causality | |
| scirs2-wasm | WebAssembly bindings: WasmMatrix JS/TS API, TypeScript type definitions, WASM SIMD (128-bit), Web Worker parallel computation, streaming | |
| scirs2-python | Python bindings via PyO3: 15+ modules including linalg, stats, neural, autograd with NumPy interoperability (optional, feature-gated) | — |
Note: scirs2-optim has been separated into the independent OptiRS project.
We follow a phased approach:
All modules in the SciRS2 ecosystem are expected to leverage functionality from scirs2-core:
scirs2-core::validation for parameter checkingscirs2-core::error::CoreErrorscirs2-core::numeric for generic numeric functionsscirs2-core::simdscirs2-core::parallelscirs2-core::memoryscirs2-core::cacheSciRS2 uses workspace inheritance for consistent dependency versioning:
Cargo.tomlworkspace = trueworkspace = true with optional = true# In workspace root Cargo.toml
[workspace.dependencies]
ndarray = { version = "0.16.1", features = ["serde", "rayon"] }
num-complex = "0.4.3"
rayon = "1.7.0"
# In module Cargo.toml
[dependencies]
ndarray = { workspace = true }
num-complex = { workspace = true }
rayon = { workspace = true, optional = true }
[features]
parallel = ["rayon"]
SciRS2 follows the COOLJAPAN Pure Rust Policy. All default dependencies are 100% Pure Rust.
oxiblas: Pure Rust BLAS/LAPACK implementation (no C/Fortran, no OpenBLAS/MKL required)oxifft: Pure Rust FFT with FFTW-comparable performance (no FFTW/CLFFT C library required)oxiarc-archive/oxiarc-*: Pure Rust archive/compression (replaces zip/zlib C bindings)oxicode: Pure Rust serialization (replaces bincode)ndarray: Multidimensional array operations (via scirs2-core abstraction)num: Numeric abstractionsrayon: Data-parallel processingserde/serde_json: Serialization/deserializationthiserror/anyhow: Error handlingtokio: Async runtime (for async IO utilities)petgraph: Graph data structuresimage: Image encoding/decoding utilitiescuda feature: NVIDIA CUDA GPU accelerationmpsgraph feature: Apple Metal GPU acceleration (macOS only)arbitrary-precision feature: GMP/MPFR arbitrary precision arithmeticMajor Feature Release
Major Feature Release
Interpolation & Python Bindings
FFT Migration & SIMD Performance
v0.6.5 uses Pure Rust dependencies only - No system libraries required! 🎉
SciRS2 is 100% Pure Rust with OxiBLAS (Pure Rust BLAS/LAPACK implementation). You don't need to install:
Just install Rust and build:
# That's it! No system dependencies needed.
cargo build --release
SciRS2 and all its modules are available on crates.io. You can add them to your project using Cargo:
# Add the main integration crate for all functionality
[dependencies]
scirs2 = "0.6.5"
Or include only the specific modules you need:
[dependencies]
# Core utilities
scirs2-core = "0.6.5"
# Scientific computing modules
scirs2-linalg = "0.6.5"
scirs2-stats = "0.6.5"
scirs2-optimize = "0.6.5"
# AI/ML modules
scirs2-neural = "0.6.5"
scirs2-autograd = "0.6.5"
# Note: For ML optimization algorithms, use the independent OptiRS project
// Using the main integration crate
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
])?;
// Perform matrix operations
let (u, s, vt) = scirs2::linalg::decomposition::svd(&a)?;
println!("Singular values: {:.4?}", s);
// Compute the condition number
let cond = scirs2::linalg::basic::condition(&a, None)?;
println!("Condition number: {:.4}", cond);
// Generate random samples from a 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(())
}
use scirs2_neural::layers::{Dense, Layer};
use scirs2_neural::activations::{ReLU, Sigmoid};
use scirs2_neural::models::sequential::Sequential;
use scirs2_neural::losses::mse::MSE;
use scirs2_neural::optimizers::sgd::SGD;
use ndarray::{Array, Array2};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create a simple feedforward neural network
let mut model = Sequential::new();
// Add layers
model.add(Dense::new(2, 8)?);
model.add(ReLU::new());
model.add(Dense::new(8, 4)?);
model.add(ReLU::new());
model.add(Dense::new(4, 1)?);
model.add(Sigmoid::new());
// Compile the model
let loss = MSE::new();
let optimizer = SGD::new(0.01);
model.compile(loss, optimizer);
// Create dummy data
let x = Array2::from_shape_vec((4, 2), vec![
0.0, 0.0,
0.0, 1.0,
1.0, 0.0,
1.0, 1.0
])?;
let y = Array2::from_shape_vec((4, 1), vec![
0.0,
1.0,
1.0,
0.0
])?;
// Train the model
model.fit(&x, &y, 1000, Some(32), Some(true));
// Make predictions
let predictions = model.predict(&x);
println!("Predictions: {:.4?}", predictions);
Ok(())
}
use scirs2_core::gpu::{GpuContext, GpuBackend};
use scirs2_linalg::batch::matrix_multiply_gpu;
use ndarray::Array3;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create GPU context
let ctx = GpuContext::new(GpuBackend::default())?;
// Create batch of matrices (batch_size x m x n)
let a_batch = Array3::<f32>::ones((64, 128, 256));
let b_batch = Array3::<f32>::ones((64, 256, 64));
// Perform batch matrix multiplication on GPU
let result = matrix_multiply_gpu(&ctx, &a_batch, &b_batch)?;
println!("Batch matrix multiply result shape: {:?}", result.shape());
Ok(())
}
SciRS2 v0.6.5 (July 31, 2026) has been tested on the following platforms:
| Platform | Architecture | Test Status | Notes |
|---|---|---|---|
| macOS | Apple M3 (ARM64) | ✅ All tests passing (38,768 tests, all-features) | macOS 15.6.1, 24GB RAM |
| Linux | x86_64 | ✅ All tests passing (38,768 tests, all-features) | With required dependencies |
| Linux + CUDA | x86_64 + NVIDIA GPU | ✅ All tests passing (38,768 tests, all-features) | CUDA support enabled |
| Platform | Architecture | Test Status | Notes |
|---|---|---|---|
| Windows | x86_64 | ⚠️ Build succeeds; several known crash bugs fixed in v0.6.3 | Windows 11 Pro - see known issues below |
To run the full test suite with all features:
# No system dependencies required - Pure Rust!
cargo nextest run --nff --all-features # 38,768 tests
# Build works successfully
cargo build
# v0.6.3 fixed several Windows-specific crash bugs (heap corruption from
# alignment-mismatched deallocation, stack overflow from recursive Drop glue,
# process abort from non-overcommitted eager allocation, and a path validator
# that rejected every absolute Windows path) — see CHANGELOG.md `[0.6.3]`.
# Full Windows CI validation of the complete suite is still pending.
cargo test
### Running Tests
**Recommended test runner**: Use `cargo nextest` instead of `cargo test` for better performance and output:
```bash
# Install nextest
cargo install cargo-nextest
# Run all tests
cargo nextest run --nff --all-features
cargo buildAll 29 workspace crates are production-ready with comprehensive test coverage (38,768 tests all-features, 36,989 default-features, + 5,136 doc-tests).
scirs2-linalg): Full decompositions, iterative solvers (GMRES/PCG/BiCGStab/MINRES), tensor decompositions, matrix functions, control theoryscirs2-stats): 40+ distributions, Bayesian inference (NUTS/HMC/SMC), Gaussian processes, survival analysis, Bayesian networks, copulas, causal inferencescirs2-optimize): MIP/SDP/SOCP, Bayesian optimization, NSGA-III, stochastic (SGD/Adam/SVRG), metaheuristics, convex (ADMM/proximal), combinatorialscirs2-integrate): ODE/PDE/SDE/SPDE solvers, LBM, DG, phase-field, BEM, port-Hamiltonian, IGA, QMCscirs2-interpolate): RBF, PCHIP, MLS, kriging, spherical harmonics, B-spline surfaces, tensor product, natural neighborscirs2-signal): CFAR radar, Kalman/EKF/UKF, compressed sensing, MFCC, EMD/HHT, source separation, adaptive filtering, system identificationscirs2-fft): Standard/sparse/fractional FFT, NTT, Lomb-Scargle, MUSIC, Prony, DCT/DST all variants, wavelet packetsscirs2-sparse): LOBPCG/IRAM eigensolvers, AMG, BCSR/ELLPACK/DIA/SELL-C-sigma, recycled Krylov, domain decompositionscirs2-special): Mathieu, Coulomb, spherical harmonics, Wigner 3j/6j/9j, Jacobi theta, Fox H-function, Heun, Appell, q-analogs, Weierstrassscirs2-spatial): R*-Tree, Fortune's Voronoi, geodata projections, trajectory analysis, spatial statistics, 3D convex hullscirs2-cluster): GMM, SOM, HDBSCAN, Dirichlet process, biclustering, topological (Mapper), deep clustering, stream/onlinescirs2-transform): UMAP, Barnes-Hut t-SNE, sparse PCA, persistent homology, optimal transport, metric learning, multiview learningscirs2-metrics): IoU/AP/mAP detection, NDCG ranking, FID/IS generative, fairness, segmentation, streaming metricsscirs2-ndimage): Gabor/SIFT/HOG, watershed/SLIC segmentation, optical flow, 3D morphology, medical imaging, texture analysisscirs2-io): Protobuf/msgpack/CBOR/BSON/Avro, Parquet/Feather/ORC, streaming JSON/CSV/Arrow, cloud storage, HDF5-lite, ETL pipelinescirs2-datasets): Text/NER/QA, medical imaging, graph benchmarks, recommendation, anomaly, time series (UCR-compatible), synthetic generatorsscirs2-autograd): JVP/VJP, custom gradients, checkpointing, mixed precision, distributed gradient, Hessianscirs2-neural): Transformers (GPT-2/T5/SWIN/ViT/CLIP/ConvNeXt), GNNs, diffusion models, SNN, capsule networks, PPO/DPO, MoE, knowledge distillation, quantizationscirs2-graph): Louvain/Leiden community detection, VF2 isomorphism, Node2Vec, max-flow (Dinic), temporal graphs, hypergraphs, SVG visualizationscirs2-text): BPE/WordPiece tokenizers, CRF/HMM labeling, FastText, NER, topic modeling (LDA), coreference, knowledge graph extractionscirs2-vision): Stereo depth, ICP, PnP, dense optical flow, SLAM, panoptic/semantic/instance segmentation, SfM reconstructionscirs2-series): TFT/N-BEATS/DeepAR forecasting, VAR/VECM/DFM, EGARCH/FIGARCH, FDA, conformal prediction, online ARIMAscirs2-wasm): WasmMatrix operations, TypeScript type bindings, WASM SIMD, Web Worker parallel computationSciRS2 provides:
All SciRS2 modules are available on crates.io. Add the modules you need to your Cargo.toml:
[dependencies]
scirs2 = "0.6.5" # Core library with all modules
# Or individual modules:
scirs2-linalg = "0.6.5" # Linear algebra
scirs2-stats = "0.6.5" # Statistics
# ... and more
For development roadmap and contribution guidelines, see TODO.md and CONTRIBUTING.md.
SciRS2 prioritizes performance through several strategies:
Performance benchmarks on core operations demonstrate significant improvements:
| Operation Category | Operation | SciRS2 | Baseline | Speedup |
|---|---|---|---|---|
| SIMD Operations | Element-wise (1M elements) | 0.71 ms | 10.05 ms | 14.17× |
| Signal Processing | Convolution (bandwidth-saturated) | 2.1 ms | 52.5 ms | 25.0× |
| Statistics | Statistical Moments | 1.8 ms | 45.3 ms | 25.2× |
| Monte Carlo | Bootstrap Sampling | 8.9 ms | 267.0 ms | 30.0× |
| Quasi-Random | Sobol Sequence Generation | 3.2 ms | 48.7 ms | 15.2× |
| FFT | Fractional Fourier Transform | 4.5 ms | 112.3 ms | 24.9× |
| Linear Algebra | Matrix Multiply (1000×1000) | 18.5 ms | 23.2 ms | 1.25× |
| Decomposition | SVD (500×500) | 112.3 ms | 128.7 ms | 1.15× |
| FFT | Standard FFT (1M points) | 8.7 ms | 11.5 ms | 1.32× |
| Random | Normal Distribution (10M samples) | 42.1 ms | 67.9 ms | 1.61× |
| Clustering | K-means (100K points, 5 clusters) | 321.5 ms | 378.2 ms | 1.18× |
Key Takeaways:
Performance may vary based on hardware, compiler optimization, and workload characteristics.
Following the SciRS2 Ecosystem Policy, all SciRS2 modules now follow a strict layered architecture:
scirs2-core uses external dependencies directly// ❌ FORBIDDEN in non-core crates
use rand::*;
use ndarray::Array2;
use num_complex::Complex;
// ✅ REQUIRED in non-core crates
use scirs2_core::random::*;
use scirs2_core::array::*;
use scirs2_core::complex::*;
This policy ensures ecosystem consistency and enables better optimization across the entire SciRS2 framework.
For detailed development plans, upcoming features, and contribution opportunities, see:
Current Branch: 0.6.5 (July 31, 2026)
Release Status: All major features through v0.6.5 have been implemented and tested (Waves 53–78, plus the 0.6.0 CUDA-decentralization, 0.6.1 hardening, 0.6.2 Pure-Rust dependency-elimination, 0.6.3 Windows-compatibility hardening, 0.6.4 wasm32 follow-up fix, and 0.6.5 ignore-audit bug-hunt cycles):
par_map_chunks, lock-free data structures, GpuNdarrayoxicuda-* CUDA backend across 10 crates (0.6.0), real model-serving codegen + DLPack safety fixes (0.6.1), hdf5/tracy/libnuma/opencl3 C-dependency removal (0.6.2), Windows heap-corruption/stack-overflow/path-validation fixes (0.6.3), oxifft wasm32-threading compile-error fix enabling scirs2-wasm/scirs2 meta-crate to resume publishing (0.6.4), full #[ignore]-legitimacy audit fixing autograd's mostly-dead-code live backward pass (0.6.5)Next Steps:
Status: ✅ Functional - scirs2-python provides Python integration via PyO3
cargo build --features python (requires PyO3 setup)All platforms benefit from:
All items from the v0.4.0 roadmap have been implemented:
Planned for upcoming releases:
See TODO.md for the complete development roadmap.
#[ignore] as of the 0.6.5 ignore-legitimacy audit, each carrying a requires-gpu: / requires-env: / slow: / bench: / not-implemented: reason so the taxonomy is machine-checked by cargo-scirs2-policy's ignore_audit lint) to optimize build times. Run with cargo test -- --ignored to execute the full test suite including benchmarks.--all-features (35,668 with default features; plus 5,000 doc-tests)--all-features)For the most up-to-date information on limitations and ongoing development, please check our GitHub Issues.
Contributions are welcome! Please see our CONTRIBUTING.md for guidelines.
See our TODO.md for specific tasks and project roadmap.
SciRS2 is developed and maintained by COOLJAPAN OU (Team Kitasan).
The COOLJAPAN Ecosystem represents one of the largest Pure Rust scientific computing efforts in existence — spanning 40+ projects, 500+ crates, and millions of lines of Rust code across scientific computing, machine learning, quantum computing, geospatial analysis, legal technology, multimedia processing, and more. Every line is written and maintained by a small dedicated team committed to a C/Fortran-free future for scientific software.
If you find SciRS2 or any COOLJAPAN project useful, please consider sponsoring to support continued development.
https://github.com/sponsors/cool-japan
Your sponsorship helps us:
Licensed under the Apache License Version 2.0.
SciRS2 builds on the shoulders of giants:
SciRS2 is part of the COOLJAPAN Ecosystem - a comprehensive collection of production-grade Rust libraries for scientific computing, machine learning, and data science. All ecosystem projects follow the SciRS2 POLICY for consistent architecture, leveraging scirs2-core abstractions for optimal performance and maintainability.
NumPy-compatible N-dimensional arrays in pure Rust
Pandas-compatible DataFrames for high-performance data manipulation
Quantum computing library in pure Rust
Advanced ML optimization algorithms extending SciRS2
PyTorch-compatible deep learning framework in pure Rust
TensorFlow-compatible ML framework with dual execution modes
scikit-learn compatible machine learning library
Hugging Face Transformers in pure Rust for production deployment
Pure-Rust neural speech synthesis (Text-to-Speech)
Semantic Web platform with SPARQL 1.2, GraphQL, and AI reasoning
Pure Rust SMT solver - Z3-compatible constraint solving engine
Pure Rust Interactive Theorem Prover — Calculus of Inductive Constructions
Pure Rust Geospatial Data Abstraction Library — Production-Grade GDAL Alternative
Rust Framework for Parsing, Analyzing, and Simulating Legal Statutes — "Governance as Code, Justice as Narrative"
LegalResult<T> typeFour-Layer RAG Engine with SMT-Based Logic Verification and Knowledge Graph Support
Graph-Based LLM Workflow Orchestration Platform in Pure Rust
Pure Rust Gaussian Avatar Reconstruction from Monocular Videos
Pure Rust reconstruction of OpenCV + FFmpeg — Patent-free multimedia and computer vision framework
All Cool Japan Ecosystem projects share:
Getting Started: Each project includes comprehensive documentation, examples, and migration guides. Visit individual project repositories for detailed installation instructions and tutorials.
SciRS2 continues to evolve with ambitious goals:
For detailed development status and contribution opportunities, see TODO.md.
We welcome contributions from the community! Whether you're:
Your participation helps make SciRS2 better for everyone.
If you use SciRS2 in your research, please cite:
@software{scirs2_2026,
title = {SciRS2: Scientific Computing and AI in Pure Rust},
author = {{COOLJAPAN OU (Team KitaSan)}},
year = {2026},
url = {https://github.com/cool-japan/scirs},
version = {0.6.5}
}
SciRS2 builds on the shoulders of giants:
Special thanks to the scientific computing and machine learning communities for their continuous innovation and open collaboration.
Built with ❤️ by COOLJAPAN OU (Team KitaSan)
Part of the Cool Japan Ecosystem - Production-Grade Rust Libraries for Scientific Computing and AI
1,854 followers · starred Apr 2025
1,062 followers · starred Jul 2026
711 followers · starred Jan 2026
565 followers · starred Jul 2025
SciRS2 - Scientific Computing and AI in Rust., providing SciPy-compatible APIs while leveraging Rust's performance, safety, and concurrency features. Unlike traditional scientific libraries
See the codeProduction-Ready Pure Rust Scientific Computing • No System Dependencies • 10-100x Performance Gains
SciRS2 is a comprehensive scientific computing and AI/ML infrastructure in Pure Rust, providing SciPy-compatible APIs while leveraging Rust's performance, safety, and concurrency features. Unlike traditional scientific libraries, SciRS2 is 100% Pure Rust by default with no C/C++/Fortran dependencies required, making installation effortless and ensuring cross-platform compatibility.
# Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Add SciRS2 to your project
cargo add scirs2
# Build your project - no system libraries needed!
cargo build --release
✨ Pure Rust: Zero C/C++/Fortran dependencies (OxiBLAS for BLAS/LAPACK, OxiFFT for FFT)
⚡ Ultra-Fast: 10-100x performance improvements through SIMD optimization
🔒 Memory Safe: Rust's ownership system prevents memory leaks and data races
🌍 Cross-Platform: Linux, macOS, Windows, WebAssembly - identical behavior
🧪 Battle-Tested: 38,768 tests (all-features) / 36,989 (default-features) + 5,136 doc-tests — workspace-wide via cargo nextest — plus 3.1M+ lines of Rust code, 29 workspace crates
📊 Comprehensive: Linear algebra, statistics, ML, FFT, signal processing, computer vision, and more
SciRS2 provides a complete ecosystem for scientific computing, data analysis, and machine learning in Rust, with production-grade quality and performance that rivals or exceeds traditional C/Fortran-based libraries.
Latest Stable Release - v0.6.5 (July 31, 2026) 🚀
cargo nextest, across 29 workspace cratesWhat's New in 0.6.5 — Ignore-Audit Bug Hunt: the Live Backward Pass Was Mostly Dead Code:
Op::grad() implementation first, converting roughly 223 wrong-or-absent gradients to correct ones — including every elementary math function (sqrt/exp/ln/trig/hyperbolic-trig/log2/log10/abs) and activation (softplus/elu/swish/gelu/mish). Also fixed: reduce_sum/transpose/gather were only correct under an all-ones cotangent, reduce_mean lost its 1/N factor, sigmoid_cross_entropy and BatchMatMul were misidentified by fragile substring matching, concat/einsum/tensordot panicked during backprop, and SymmetricEigenOp now genuinely diagonalizes via cyclic Jacobi instead of separate per-size special cases. The public custom-gradient API (custom_op, scale_gradient, selective_stop_gradient, detach) was a complete no-op regardless of the user's backward closure — now genuinely functional.decomposition::schur, lapack::eig, and eigen::advanced_precision_eig, replacing per-call implementations that either never checked for convergence or only worked on already-diagonal input.polyfit, a self-deadlocking ErrorMonitor, and garbage-output Niederreiter/Sobol QMC sequence generators.watts_strogatz_graph no longer hangs on ~99.8% of seeds at p > 0 (its rewiring step checked has_node, always true, instead of has_edge).out_of_core streaming hang/unbounded-memory-growth/double-count, fixed inverted octree/quadtree k-NN BinaryHeap ordering (was returning the farthest candidates) and an always-zero A* path cost, a mmap loader that ignored its own file header (shifting every element), and gamma(x) silently returning inf for x in ~[140.5, 171].ShortTimeFFT-class STFT port — and deleted ~167 unreachable legacy/duplicate files (541 total .rs files, 255 unreachable — 47% of the crate).#[ignore]-legitimacy audit — every ignored test workspace-wide actually run and root-caused, not just read — dropping the count from 132 (~31% bare/no-reason) to 59, every one now reason-tagged (requires-gpu:/requires-env:/slow:/bench:/not-implemented:) and enforced going forward by a new cargo-scirs2-policy lint.See CHANGELOG.md [0.6.5] for the complete list.
What's New in 0.6.4 — wasm32 Follow-Up Fix:
oxifft 0.4.1 added a hard compile_error! when its threading (rayon) feature is active on wasm32 targets. scirs2-fft and scirs2-signal now declare oxifft via target-gated [target.'cfg(...)'.dependencies] tables — full defaults off-wasm, default-features = false, features = ["std"] on wasm32 — resolving the error.scirs2-fft/scirs2-signal artifacts crates.io already had at that version. They catch up at 0.6.4.See CHANGELOG.md [0.6.4] for the complete list.
What's New in 0.6.3 — Windows-Compatibility Hardening:
scirs2-spatial's DistancePool allocated cache-aligned buffers via a raw System.alloc call, then freed them through Box<[f64]>'s default-aligned Drop — an alloc/dealloc layout mismatch that is undefined behavior. glibc's allocator tolerated it; Windows' does not, corrupting the heap (STATUS_HEAP_CORRUPTION). Now allocates through plain Vec/Box<[f64]>. scirs2-stats's AdaptiveMemoryManager had a related bug: it re-derived the deallocation strategy from config instead of the strategy allocate actually resolved for that pointer, so Adaptive-configured pools could be freed through the wrong allocator; allocate now records the resolved strategy per pointer for deallocate to look up.scirs2-symbolic's EmlNode gained an explicit iterative Drop impl — the compiler-derived recursive one overflowed the stack when a deep expression tree (e.g. a 10,000-node chain) went out of scope, fitting in Linux's 8 MB default thread stack but not Windows' 1 MB default (STATUS_STACK_OVERFLOW).scirs2-transform's AdvancedMemoryPool::prewarm_common_sizes eagerly pre-allocated up to ~5.5 GB of spare buffers just to construct an AdvancedPCA; Linux's overcommit hid the cost, Windows backed the whole reservation up front and aborted. Pre-warming is now capped by a 64 MB budget.scirs2-core's CrossPlatformValidator::validate_windows_path flagged the drive-letter colon in any absolute Windows path (e.g. C:\Users\...) as an invalid character, rejecting every such path.scirs2-signal's Francis double-shift QR (ESPRIT phase estimation) had two bugs letting eigenvalues silently drift from the input matrix's; n4sid_estimate's least-squares solve used normal equations, which silently returned bogus huge-norm solutions for rank-deficient (non-persistently-exciting) inputs instead of erroring — both now go through an SVD-based minimum-norm solve.oxifft 0.3.2→0.4.1, oxicuda-* 0.5.1→0.5.3, oxiz 0.2.4→0.3.0.See CHANGELOG.md [0.6.3] for the complete list.
What's New in 0.6.2 — Pure Rust Hardening: HDF5, Tracy, NUMA & OpenCL:
EnhancedMatFile/V73MatFile no longer require a system libhdf5. The in-tree hdf5_lite reader (2,697 lines) is retired in favor of oxih5, which widens format coverage (superblock v2/v3, fractal heaps, extensible arrays, virtual datasets, szip) and fixes a critical silent-data-loss bug where compressed-dataset writes were silently dropped, plus a mis-parsed version-2 dataspace header that had been self-concealed by a buggy test fixture.hdf5 (C-linked), libnuma, tracy-client (C++) and opencl3 are all gone from the dependency graph. scirs2-core's Tracy profiling is now a pure-Rust Chrome-Trace-Event exporter; NUMA topology discovery reads real /sys data instead of estimating "8 cores per node"; OpenCL support now runtime-dlopens the system ICD instead of linking at build time. scirs2-spatial's NumaTopology::detect() had the same fabricated-data problem (hardcoded core/memory estimates) — it now reads the real Linux sysfs topology, with an honest single-node fallback elsewhere.reqwest/ureq now build with rustls-no-provider, dropping the C aws-lc-rs/ring backends; SciRS2 auto-installs a pure-Rust oxitls-rustcrypto-provider on first use unless the application already installed its own CryptoProvider.oxicuda-nvrtc crate (runtime dlopen, zero build-time CUDA SDK dependency).oxih5/oxih5-core 0.1.3→0.2.2, oxisql-* 0.3.2→0.4.0, oxiz 0.2.3→0.2.4, oxicuda-* 0.5.0→0.5.1 (+new oxicuda-nvrtc), Cranelift 0.133→0.134 (fixes a memmap2 unsound advisory, RUSTSEC-2026-0186).See CHANGELOG.md [0.6.2] for the complete list.
What's New in 0.6.1 — Real Codegen, DLPack Safety & GPU-Dispatch Honesty:
scirs2-neural's ModelPackager::package() now genuinely compiles a Rust project via cargo/rustc for native binaries (PackageFormat::Native) and C-shared-library (PackageFormat::CSharedLibrary) targets, replacing the previous placeholder byte-writing stubs; new serving module split into mod.rs/types.rs/packager.rs/codegen.rs/tests.rs.#[repr(C)] on to_dlpack's BackingStore in scirs2-python caused a process-crashing SIGBUS whenever the DLPack capsule was garbage-collected; also fixed a double-consumption bug in the capsule destructor and a stride-handling bug in from_dlpack that silently produced wrong data for non-contiguous/transposed tensors.scirs2-datasets's AdvancedGpuOptimizer now performs real wgpu/GpuNdarray GPU dispatch instead of a simulated mock (minor breaking change: BenchmarkResult.gpu_time_ms/.speedup are now Option<f64>, None when no real GPU dispatch ran); scirs2-core's PlatformCapabilities::detect() now runtime-probes for real NVIDIA/Metal GPU hardware instead of hardcoding cuda_available to false; scirs2-special's permanently-failing execute_kernel GPU path now has a real CPU fallback for gamma/bessel_j0/erf; wgpu adapter/device discovery across 7 crates now restricts to Backends::PRIMARY (Vulkan/Metal/DX12/BrowserWebGPU) instead of Backends::all(), so a broken secondary GL backend can no longer report false availability and then die on first use.F distribution ppf() (inverse CDF) in scirs2-stats, plus opt-in real memory tracking in its SciPy benchmark framework; hamming() distance in scirs2-spatial; finance facades (AdvancedMonteCarloEngine, RealTimeRiskMonitor, ExoticOptionPricer, RiskAnalyzer) in scirs2-integrate; training_history() on scirs2-core's generative-sampling models (NormalizingFlow and others) and export_data() on ProductionProfiler; simd_distance_squared_euclidean on SimdUnifiedOps.scirs2-autograd's gradient-dispatch engine now actually invokes CondOp/LogDetOp backward rules (previously dead code behind op-name string dispatch), plus a proper Wielandt-deflation SVD fix and a condition-number computation fix; scirs2-signal's waverec now reconstructs to the correct original length (was 2x for non-Haar filters) with real perfect-reconstruction verification; restored SIMD paths for scirs2-interpolate's weighted_sum/squared_euclidean_distance (previously always fell back to scalar); fixed a GEMM operand-layout bug in the scirs2-datasets/scirs2-interpolate/scirs2-optimize CUDA paths (mistagged ColMajor, but oxicuda-blas requires RowMajor); two Miri-detected undefined-behavior fixes (unaligned-reference UB in cast_bytes_to_slice, a missing-else branch in a SIMD kernel).scirs2-stats; split 3 oversized (>2000-line) files into module directories via SplitRS (scirs2-io's advanced_coordinator.rs/hdf5/mod.rs, scirs2-series's utils.rs); dependency bumps — oxiarc-archive/-lz4/-bzip2/-zstd/-deflate/-snappy/-brotli 0.3.3 → 0.3.6 (the 0.3.4 regression this was previously pinned around is fixed upstream as of 0.3.5), oxisql-core/-sqlite-compat 0.3.1 → 0.3.2, oxicuda-* 0.4.0 → 0.5.0; cargo-scirs2-policy's --format flag is now a validated enum instead of silently falling back on typos.See CHANGELOG.md [0.6.1] for the complete list.
What's New in 0.6.0 — Pure-Rust CUDA Decentralization:
oxicuda-* CUDA backends: introduced a direct, per-crate, off-by-default, runtime-probed cuda feature across 10 crates — scirs2-fft, scirs2-symbolic, scirs2-interpolate, scirs2-special, scirs2-stats, scirs2-graph, scirs2-linalg, scirs2-optimize, scirs2-datasets, scirs2-vision — decentralizing GPU acceleration out of scirs2-core. Every path is f64-native, real CUDA PTX→driver JIT (not a CPU/wgpu simulation), and additive alongside the existing wgpu portability story.wgpu name (was wgpu_backend/gpu_wgpu/wgpu_fft/wgpu_kernels/wgpu_rbf).scirs2-core's cudarc-based CUDA backend entirely, dropping the cudarc dependency; GpuBackend::Cuda now directs users to the per-crate oxicuda-* features.See CHANGELOG.md [0.6.0] for the complete list.
What's New in 0.5.1 — Correctness, API-Stability & Pure Rust Hardening:
TraceBackwardOp (reverse-mode gradient for trace) and a tensor_ops/decomposition_backward.rs module with exact spectral gradients — matrix-sqrt (Sylvester equation), matrix-log/matrix-power (Daleckii–Krein divided differences), and reduced-SVD VJP (degenerate-singular-value detection). Previously these returned all-zeros or wrong shapes.#[non_exhaustive] attribute on scirs2-core's CoreError (lost previously); a new core_error_non_exhaustive compile-fail test in scirs2-stability-tests now guards the contract.BackendNotAvailable / NotImplemented / Option<f64> metrics when no real device or measurement exists, instead of returning fabricated contexts or invented throughput numbers.pub mod zarr) — directory stores, codec pipeline, and chunk-boundary slice I/O.rug, C-backed rusqlite, tokenizers, and external either/hex/urlencoding/data-encoding crates — arbitrary precision now on oxinum-*, SQLite on oxisql-sqlite-compat, blake3 built with its no-ASM pure feature. Ecosystem dep bumps: OxiArc 0.3.3, OxiSQL 0.3.1, OxiNum 0.1.2, OxiH5 0.1.3, OxiZ 0.2.3, OxiCode 0.2.4, plus OxiEML 0.1.2.What's New in 0.5.0 — CAS & Symbolic Mathematics + GPU Acceleration (Waves 53–77):
Core EML/CAS substrate (Waves 53–57):
eml::tree, LoweredOp flat IR, stack-safe evaluator, symbolic differentiation (grad/hessian/jacobian), algebraic simplification with fixed-point rewritingcas::canonicalize — EML-native canonical form with 7 algebraic rewrite rules; e-graph equality saturation; cas::pattern engine; cas::identity_db (11 trig/log identities)cas::smt — OxiZ QF_NRA SMT integration: EmlSmtSolver, structural-hash fast path, Ackermann transcendental encoding for 16 ops, certified rewriting with RAII safetycompile::to_jit — Cranelift CPU JIT for LoweredOp; to_jit_auto auto-dispatches CPU/GPU by batch size thresholdcompile::to_gpu — WGSL compute shader JIT from LoweredOp tape; real wgpu submission via eval_batch (Wave 75)eml::to_latex: \frac, \cdot, a^{b}, \sqrt, \pi/e exact constants, \operatorname{arcsinh} — stack-safe on deeply nested treeswith_constraints (SMT-pruned BoundedOutput + Monotonic); discover_multi, discover_ode (SINDy-style); NUMA-aware parallel predictscirs2.symbolic sub-namespace: PyEmlTree, PyCanonical, lower/simplify/grad/eval_real/discover; GIL-releasing discoversymbolic feature — eml_scalar_op creates differentiable scalar tensors; float-tape ↔ EML gradient parity; criterion benchmark suitesymbolic::newton (exact Hessian/gradient), symbolic::lagrangian/build_kkt (Lagrangian+KKT Newton), L-BFGS symbolic, trust-region symbolicAdvanced CAS (Waves 59–70):
cas::solve/solve_system/solve_ode — algebraic solver, 3-tier system solver (Bareiss/Gröbner/transcendental), 5 ODE family solverscas::integrate_rational — Risch-LITE rational integrationcas::moments_catalog/expected_fisher_catalog/noether_conservation — closed-form statistical moments, Fisher information, Noether conservation lawscas::series — Taylor + Padé approximants in EML formcas::cse_dag::CseDag — structural-hash CSE DAG with topological-order evaluationdiffgeom module — Tensor/Metric/christoffel/ricci/einstein/covariant_derivative/Riemann tensor/Weyl tensorscirs2-linalg::symbolic — det_symbolic, eigenvalues_symbolic_2x2, expm_symbolic, StructureKind recognition, spectral dispatchscirs2-stats::mle_symbolic — gradient-descent MLE from symbolic PDFscirs2-neural::symbolic::rope_attention — closed-form RoPE attention logitWave 73–77 GPU + Algorithms:
par_map_chunks (Linux pthread affinity pin, rayon fallback Darwin/WASM); GpuNdarray<f32> (7 WGSL kernels: elementwise, matmul, sum, transpose); concat_axis.wgsl (axis>0) + reduce_sum_axis.wgsl (rank≥3)alibi_slope, alibi_bias_expr, verify_symbolic_vs_numerical); SR-as-prior for time series (discover_series_prior, series_prior_regularization); SymbolicPriorLoss in scirs2-neuralbitflags 0.6.0 patch; refined ARM NEON pathfinder_simd build patchzip crate from dependency treedirs crate with custom platform_dirs modulePython::with_gil -> Python::attach)from_py_object attribute usage to resolve deprecation warningscriterion::black_box with std::hint::black_box across all benchmarksSee SCIRS2_POLICY.md for architectural details and CHANGELOG.md for complete release history.
SciRS2 is 100% Pure Rust by default - no C, C++, or Fortran dependencies required!
Unlike traditional scientific computing libraries that rely on external system libraries (OpenBLAS, LAPACK), SciRS2 provides a completely self-contained Pure Rust implementation:
Benefits:
cargo add scirs2 - no system library setup requiredOptional Performance Enhancements (not required for functionality):
oxifft feature: High-performance Pure Rust FFT with FFTW-compatible algorithmsmpsgraph feature: Apple Metal GPU acceleration (macOS only, Objective-C)cuda feature: NVIDIA CUDA GPU accelerationarbitrary-precision feature: GMP/MPFR for arbitrary precision arithmetic (C library)Enable with: cargo add scirs2 --features oxifft,cuda
By default, SciRS2 provides a fully functional, Pure Rust scientific computing stack that rivals the performance of traditional C/Fortran-based libraries while offering superior safety, portability, and ease of use.
scirs2-linalg): Matrix operations, GMRES/PCG/BiCGStab iterative solvers, Lanczos/Arnoldi factorizations, CP-ALS/Tucker tensor decompositions, matrix functions (expm/logm/sqrtm), control theory (Riccati/Lyapunov)scirs2-stats): Distributions (stable, GPD, von Mises-Fisher, Tweedie), Bayesian methods (NUTS/HMC/SMC), Gaussian processes, survival analysis (Cox/KM/AFT), copulas, Bayesian networks, causal inferencescirs2-optimize): MIP/SDP/SOCP solvers, Bayesian optimization, NSGA-III multi-objective, stochastic (SGD/Adam/SVRG), metaheuristics (ACO/SA/DE/Harmony), convex (ADMM/proximal), combinatorialscirs2-integrate): ODE/BVP/DAE solvers, PDE (FEM/LBM/DG), SDE/SPDE solvers, BEM, phase-field (Cahn-Hilliard/Allen-Cahn), port-Hamiltonian systems, QMC/IMEX methodsscirs2-interpolate): RBF, MLS, PCHIP, spherical harmonics, kriging, B-spline surfaces, tensor product, natural neighbor, barycentricscirs2-special): Mathieu, Coulomb wave functions, spherical harmonics, Wigner 3j/6j/9j, Jacobi theta, Fox H-function, Heun, Appell, q-analogs, Weierstrass, polylogarithmscirs2-signal): Matched filter, CFAR radar detection, Kalman/EKF/UKF state estimation, compressed sensing (OMP/ISTA/CoSaMP), MFCC, EMD/HHT, source separation (ICA/NMF), adaptive filtering (LMS/RLS)scirs2-sparse): LOBPCG/IRAM eigensolvers, AMG, BCSR/ELLPACK formats, block preconditioners (Jacobi/SPAI/Schwarz), GCRO-DR recycled Krylov, domain decompositionscirs2-spatial): R*-Tree, Fortune's Voronoi, WGS84/UTM geodata projections, spatial statistics, trajectory analysis, sweep-line algorithms, 3D convex hullscirs2-ndimage): Gabor/SIFT/HOG feature detection, watershed/SLIC/GrabCut segmentation, optical flow (Farneback/LK), 3D morphology, medical imaging, texture analysis (GLCM/LBP)scirs2-cluster): GMM, SOM, HDBSCAN, Dirichlet process, kernel k-means, biclustering (Cheng-Church/FABIA), topological (Mapper/TDA), deep clustering (DEC), stream/online (CluStream/DenStream)scirs2-fft): Sparse FFT, Prony method, MUSIC/ESPRIT, Lomb-Scargle, NTT, CZT/FRFT, polyphase filterbank, all DCT/DST variants, wavelet packets, reassigned spectrogramscirs2-io): Protobuf/msgpack/CBOR/BSON/Avro serialization, Parquet/Feather/ORC columnar formats, streaming JSON/CSV/Arrow, cloud storage abstraction, HDF5-lite, schema management, ETL pipelinescirs2-datasets): Text/NER/QA, medical imaging, graph benchmarks, recommendation, anomaly detection, time series (UCR-compatible), synthetic generatorsscirs2-validation): Distribution validation utilities and reference values for statistical testing, PDF/CDF/PPF testing across 15+ distributionsscirs2-autograd): Custom gradient rules, gradient checkpointing, JVP/VJP (forward/reverse mode), implicit differentiation, mixed precision (FP16/BF16), distributed gradient, Hessian computationscirs2-neural): Transformers (GPT-2/T5/SWIN), GNNs (GCN/GAT/GraphSAGE/GIN), diffusion models (DDPM/DDIM), VAE, GAN, capsule networks, SNN, PPO/DPO RL, MoE, ViT/CLIP/ConvNeXt, knowledge distillation, quantization, pruning, meta-learning (MAML)scirs2-graph): Louvain/Girvan-Newman community detection, VF2 isomorphism, Node2Vec embeddings, maximum flow (Dinic/push-relabel), temporal graphs, hypergraphs, force-directed layout, SVG visualizationscirs2-transform): UMAP, Barnes-Hut t-SNE, sparse PCA, persistent homology (TDA), optimal transport (Wasserstein/Sinkhorn), archetypal analysis, metric learning (LMNN/ITML), multiview (CCA/deep CCA)scirs2-metrics): Detection (IoU/AP/mAP/NMS), ranking (NDCG/MAP/MRR), generative (FID/IS/LPIPS), fairness (demographic parity/equalized odds), segmentation, streaming metricsscirs2-text): BPE/WordPiece tokenizers, CRF/HMM sequence labeling, FastText, NER, topic modeling (LDA/NMF), coreference resolution, knowledge graph extraction, RST discourse analysisscirs2-vision): Stereo depth estimation, ICP point cloud registration, PnP camera pose, dense optical flow, video processing, SLAM framework, panoptic/semantic/instance segmentation, 3D reconstruction (SfM)scirs2-series): TFT/N-BEATS/DeepAR deep learning forecasting, VAR/VECM/DFM models, EGARCH/FIGARCH volatility, FDA (functional data analysis), conformal prediction, online ARIMA, Granger causality, hierarchical reconciliationunwrap() in production codeSciRS2 is a large-scale scientific computing ecosystem with comprehensive coverage:
cargo nextestThis demonstrates the comprehensive nature and production-ready maturity of the SciRS2 ecosystem.
SciRS2 adopts a modular architecture with separate crates for different functional areas, using Rust's workspace feature to manage them:
/
# Core Scientific Computing Modules
├── Cargo.toml # Workspace configuration
├── scirs2-core/ # Core utilities and common functionality
├── scirs2-autograd/ # Automatic differentiation engine
├── scirs2-linalg/ # Linear algebra module
├── scirs2-integrate/ # Numerical integration
├── scirs2-interpolate/ # Interpolation algorithms
├── scirs2-optimize/ # Optimization algorithms
├── scirs2-fft/ # Fast Fourier Transform
├── scirs2-stats/ # Statistical functions
├── scirs2-special/ # Special mathematical functions
├── scirs2-signal/ # Signal processing
├── scirs2-sparse/ # Sparse matrix operations
├── scirs2-spatial/ # Spatial algorithms
# Advanced Modules
├── scirs2-cluster/ # Clustering algorithms
├── scirs2-ndimage/ # N-dimensional image processing
├── scirs2-io/ # Input/output utilities
├── scirs2-datasets/ # Sample datasets and loaders
├── scirs2-validation/ # Distribution validation utilities and reference values
# AI/ML Modules
├── scirs2-neural/ # Neural network building blocks
# Note: scirs2-optim separated into independent OptiRS project
├── scirs2-graph/ # Graph processing algorithms
├── scirs2-transform/ # Data transformation utilities
├── scirs2-metrics/ # ML evaluation metrics
├── scirs2-text/ # Text processing utilities
├── scirs2-vision/ # Computer vision operations
├── scirs2-series/ # Time series analysis
# Main Integration Crate
└── scirs2/ # Main integration crate
├── Cargo.toml
└── src/
└── lib.rs # Re-exports from all other crates
This modular architecture offers several advantages:
The core module (scirs2-core) provides several advanced features that are leveraged across the ecosystem:
use scirs2_core::gpu::{GpuContext, GpuBackend, GpuBuffer};
// Create a GPU context with the default backend
let ctx = GpuContext::new(GpuBackend::default())?;
// Allocate memory on the GPU
let mut buffer = ctx.create_buffer::<f32>(1024);
// Execute a computation
ctx.execute(|compiler| {
let kernel = compiler.compile(kernel_code)?;
kernel.set_buffer(0, &mut buffer);
kernel.dispatch([1024, 1, 1]);
Ok(())
})?;
use scirs2_core::memory::{ChunkProcessor2D, BufferPool, ZeroCopyView};
// Process large arrays in chunks
let mut processor = ChunkProcessor2D::new(&large_array, (1000, 1000));
processor.process_chunks(|chunk, coords| {
// Process each chunk...
});
// Reuse memory with buffer pools
let mut pool = BufferPool::<f64>::new();
let mut buffer = pool.acquire_vec(1000);
// Use buffer...
pool.release_vec(buffer);
use scirs2_core::memory::metrics::{track_allocation, generate_memory_report};
use scirs2_core::profiling::{Profiler, Timer};
// Track memory allocations
track_allocation("MyComponent", 1024, 0x1000);
// Time a block of code
let timer = Timer::start("matrix_multiply");
// Do work...
timer.stop();
// Print profiling report
Profiler::global().lock().unwrap().print_report();
Each module has its own README with detailed documentation and is available on crates.io.
| Crate | Description | docs.rs |
|---|---|---|
| scirs2 | Main integration crate — re-exports from all subcrates | |
| scirs2-core | Foundational infrastructure: work-stealing scheduler, NUMA par_map_chunks, HAMT, cache-oblivious algorithms, GPU backends, GpuNdarray<f32> (wgpu), distributed ops | |
| scirs2-linalg | Linear algebra: iterative solvers (GMRES/PCG/BiCGStab), tensor decompositions (CP-ALS/Tucker), matrix functions (expm/logm), control theory | |
| scirs2-stats | Statistics: 40+ distributions, NUTS/HMC/SMC Bayesian inference, Gaussian processes, survival analysis (Cox/KM/AFT), Bayesian networks, copulas | |
| scirs2-optimize | Optimization: MIP/SDP/SOCP, Bayesian BO, NSGA-III multi-objective, stochastic (SGD/Adam/SVRG), ACO/SA/DE metaheuristics, ADMM/proximal, GPU CG/Newton/L-BFGS (wgpu) | |
| scirs2-integrate | Numerical integration: ODE/BVP/DAE, PDE (FEM/LBM/DG), SDE/SPDE, BEM, phase-field, port-Hamiltonian, IGA, QMC | |
| scirs2-interpolate | Interpolation: RBF (with wgpu GPU acceleration), PCHIP, MLS, kriging, spherical harmonics, B-spline surfaces, tensor product, natural neighbor, barycentric | |
| scirs2-fft | FFT and spectral: sparse FFT, Prony, MUSIC, Lomb-Scargle, NTT, CZT, FRFT, DCT/DST all variants, wavelet packets, polyphase filterbank | |
| scirs2-signal | Signal processing: matched filter, CFAR radar, Kalman/EKF/UKF, OMP/ISTA compressed sensing, MFCC, EMD/HHT, ICA/NMF source separation | |
| scirs2-sparse | Sparse matrices: LOBPCG/IRAM eigensolvers, AMG, BCSR/ELLPACK formats, block preconditioners (Jacobi/SPAI/Schwarz), recycled Krylov (GCRO-DR) | |
| scirs2-special | Special functions: Mathieu, Coulomb wave, spherical harmonics, Wigner 3j/6j/9j, Jacobi theta, Fox H-function, Heun, Appell, q-analogs | |
| scirs2-spatial | Spatial: R*-Tree, Fortune's Voronoi, WGS84/UTM geodata, spatial statistics, trajectory analysis, sweep-line algorithms, 3D convex hull | |
| scirs2-cluster | Clustering: GMM, SOM, HDBSCAN, Dirichlet process, kernel k-means, biclustering (FABIA), topological (Mapper/TDA), deep clustering (DEC) | |
| scirs2-ndimage | N-dim image processing: Gabor/SIFT/HOG, watershed/SLIC/GrabCut, optical flow, 3D morphology, medical imaging, GLCM/LBP texture | |
| scirs2-io | Data I/O: Protobuf/msgpack/CBOR/BSON/Avro, Parquet/Feather/ORC, streaming JSON/CSV/Arrow, cloud storage abstraction, HDF5-lite, ETL pipeline | |
| scirs2-datasets | Datasets: text/NER/QA, medical imaging, graph benchmarks, recommendation, anomaly detection, time series (UCR-compatible), synthetic generators | |
| scirs2-autograd | Automatic differentiation: JVP/VJP, custom gradients, checkpointing, mixed precision (FP16/BF16), distributed gradient, Hessian, tape-based AD | |
scirs2-symbolic | Symbolic mathematics: EML-IR CAS, symbolic diff/hessian/jacobian, canonicalize, e-graphs, SMT (OxiZ), Cranelift JIT, GPU WGSL eval, diffgeom (Riemann/Weyl), ALiBi, SR engine, LaTeX export | — |
| scirs2-neural | Neural networks: GPT-2/T5/SWIN/ViT/CLIP/ConvNeXt transformers, GCN/GAT/GIN GNNs, DDPM diffusion models, SNN, capsule, PPO/DPO RL, MoE | |
| scirs2-graph | Graph algorithms: Louvain/Leiden/Girvan-Newman community detection, VF2 isomorphism, Node2Vec, Dinic max-flow, temporal graphs, SVG visualization; GPU BFS/SSSP/delta-stepping (wgpu) | |
| scirs2-transform | Dimensionality reduction: UMAP, Barnes-Hut t-SNE, sparse PCA, persistent homology (TDA), optimal transport (Wasserstein/Sinkhorn), metric learning | |
| scirs2-metrics | ML metrics: IoU/AP/mAP detection, NDCG/MAP/MRR ranking, FID/IS/LPIPS generative, fairness (equalized odds), segmentation, streaming metrics | |
| scirs2-text | NLP: BPE/WordPiece tokenizers, CRF/HMM sequence labeling, FastText, NER, LDA topic modeling, coreference resolution, RST discourse analysis | |
| scirs2-vision | Computer vision: stereo depth, ICP point cloud, PnP camera pose, dense optical flow, SLAM, panoptic/semantic/instance segmentation, SfM | |
| scirs2-series | Time series: TFT/N-BEATS/DeepAR forecasting, VAR/VECM/DFM, EGARCH/FIGARCH volatility, FDA, conformal prediction, online ARIMA, Granger causality | |
| scirs2-wasm | WebAssembly bindings: WasmMatrix JS/TS API, TypeScript type definitions, WASM SIMD (128-bit), Web Worker parallel computation, streaming | |
| scirs2-python | Python bindings via PyO3: 15+ modules including linalg, stats, neural, autograd with NumPy interoperability (optional, feature-gated) | — |
Note: scirs2-optim has been separated into the independent OptiRS project.
We follow a phased approach:
All modules in the SciRS2 ecosystem are expected to leverage functionality from scirs2-core:
scirs2-core::validation for parameter checkingscirs2-core::error::CoreErrorscirs2-core::numeric for generic numeric functionsscirs2-core::simdscirs2-core::parallelscirs2-core::memoryscirs2-core::cacheSciRS2 uses workspace inheritance for consistent dependency versioning:
Cargo.tomlworkspace = trueworkspace = true with optional = true# In workspace root Cargo.toml
[workspace.dependencies]
ndarray = { version = "0.16.1", features = ["serde", "rayon"] }
num-complex = "0.4.3"
rayon = "1.7.0"
# In module Cargo.toml
[dependencies]
ndarray = { workspace = true }
num-complex = { workspace = true }
rayon = { workspace = true, optional = true }
[features]
parallel = ["rayon"]
SciRS2 follows the COOLJAPAN Pure Rust Policy. All default dependencies are 100% Pure Rust.
oxiblas: Pure Rust BLAS/LAPACK implementation (no C/Fortran, no OpenBLAS/MKL required)oxifft: Pure Rust FFT with FFTW-comparable performance (no FFTW/CLFFT C library required)oxiarc-archive/oxiarc-*: Pure Rust archive/compression (replaces zip/zlib C bindings)oxicode: Pure Rust serialization (replaces bincode)ndarray: Multidimensional array operations (via scirs2-core abstraction)num: Numeric abstractionsrayon: Data-parallel processingserde/serde_json: Serialization/deserializationthiserror/anyhow: Error handlingtokio: Async runtime (for async IO utilities)petgraph: Graph data structuresimage: Image encoding/decoding utilitiescuda feature: NVIDIA CUDA GPU accelerationmpsgraph feature: Apple Metal GPU acceleration (macOS only)arbitrary-precision feature: GMP/MPFR arbitrary precision arithmeticMajor Feature Release
Major Feature Release
Interpolation & Python Bindings
FFT Migration & SIMD Performance
v0.6.5 uses Pure Rust dependencies only - No system libraries required! 🎉
SciRS2 is 100% Pure Rust with OxiBLAS (Pure Rust BLAS/LAPACK implementation). You don't need to install:
Just install Rust and build:
# That's it! No system dependencies needed.
cargo build --release
SciRS2 and all its modules are available on crates.io. You can add them to your project using Cargo:
# Add the main integration crate for all functionality
[dependencies]
scirs2 = "0.6.5"
Or include only the specific modules you need:
[dependencies]
# Core utilities
scirs2-core = "0.6.5"
# Scientific computing modules
scirs2-linalg = "0.6.5"
scirs2-stats = "0.6.5"
scirs2-optimize = "0.6.5"
# AI/ML modules
scirs2-neural = "0.6.5"
scirs2-autograd = "0.6.5"
# Note: For ML optimization algorithms, use the independent OptiRS project
// Using the main integration crate
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
])?;
// Perform matrix operations
let (u, s, vt) = scirs2::linalg::decomposition::svd(&a)?;
println!("Singular values: {:.4?}", s);
// Compute the condition number
let cond = scirs2::linalg::basic::condition(&a, None)?;
println!("Condition number: {:.4}", cond);
// Generate random samples from a 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(())
}
use scirs2_neural::layers::{Dense, Layer};
use scirs2_neural::activations::{ReLU, Sigmoid};
use scirs2_neural::models::sequential::Sequential;
use scirs2_neural::losses::mse::MSE;
use scirs2_neural::optimizers::sgd::SGD;
use ndarray::{Array, Array2};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create a simple feedforward neural network
let mut model = Sequential::new();
// Add layers
model.add(Dense::new(2, 8)?);
model.add(ReLU::new());
model.add(Dense::new(8, 4)?);
model.add(ReLU::new());
model.add(Dense::new(4, 1)?);
model.add(Sigmoid::new());
// Compile the model
let loss = MSE::new();
let optimizer = SGD::new(0.01);
model.compile(loss, optimizer);
// Create dummy data
let x = Array2::from_shape_vec((4, 2), vec![
0.0, 0.0,
0.0, 1.0,
1.0, 0.0,
1.0, 1.0
])?;
let y = Array2::from_shape_vec((4, 1), vec![
0.0,
1.0,
1.0,
0.0
])?;
// Train the model
model.fit(&x, &y, 1000, Some(32), Some(true));
// Make predictions
let predictions = model.predict(&x);
println!("Predictions: {:.4?}", predictions);
Ok(())
}
use scirs2_core::gpu::{GpuContext, GpuBackend};
use scirs2_linalg::batch::matrix_multiply_gpu;
use ndarray::Array3;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create GPU context
let ctx = GpuContext::new(GpuBackend::default())?;
// Create batch of matrices (batch_size x m x n)
let a_batch = Array3::<f32>::ones((64, 128, 256));
let b_batch = Array3::<f32>::ones((64, 256, 64));
// Perform batch matrix multiplication on GPU
let result = matrix_multiply_gpu(&ctx, &a_batch, &b_batch)?;
println!("Batch matrix multiply result shape: {:?}", result.shape());
Ok(())
}
SciRS2 v0.6.5 (July 31, 2026) has been tested on the following platforms:
| Platform | Architecture | Test Status | Notes |
|---|---|---|---|
| macOS | Apple M3 (ARM64) | ✅ All tests passing (38,768 tests, all-features) | macOS 15.6.1, 24GB RAM |
| Linux | x86_64 | ✅ All tests passing (38,768 tests, all-features) | With required dependencies |
| Linux + CUDA | x86_64 + NVIDIA GPU | ✅ All tests passing (38,768 tests, all-features) | CUDA support enabled |
| Platform | Architecture | Test Status | Notes |
|---|---|---|---|
| Windows | x86_64 | ⚠️ Build succeeds; several known crash bugs fixed in v0.6.3 | Windows 11 Pro - see known issues below |
To run the full test suite with all features:
# No system dependencies required - Pure Rust!
cargo nextest run --nff --all-features # 38,768 tests
# Build works successfully
cargo build
# v0.6.3 fixed several Windows-specific crash bugs (heap corruption from
# alignment-mismatched deallocation, stack overflow from recursive Drop glue,
# process abort from non-overcommitted eager allocation, and a path validator
# that rejected every absolute Windows path) — see CHANGELOG.md `[0.6.3]`.
# Full Windows CI validation of the complete suite is still pending.
cargo test
### Running Tests
**Recommended test runner**: Use `cargo nextest` instead of `cargo test` for better performance and output:
```bash
# Install nextest
cargo install cargo-nextest
# Run all tests
cargo nextest run --nff --all-features
cargo buildAll 29 workspace crates are production-ready with comprehensive test coverage (38,768 tests all-features, 36,989 default-features, + 5,136 doc-tests).
scirs2-linalg): Full decompositions, iterative solvers (GMRES/PCG/BiCGStab/MINRES), tensor decompositions, matrix functions, control theoryscirs2-stats): 40+ distributions, Bayesian inference (NUTS/HMC/SMC), Gaussian processes, survival analysis, Bayesian networks, copulas, causal inferencescirs2-optimize): MIP/SDP/SOCP, Bayesian optimization, NSGA-III, stochastic (SGD/Adam/SVRG), metaheuristics, convex (ADMM/proximal), combinatorialscirs2-integrate): ODE/PDE/SDE/SPDE solvers, LBM, DG, phase-field, BEM, port-Hamiltonian, IGA, QMCscirs2-interpolate): RBF, PCHIP, MLS, kriging, spherical harmonics, B-spline surfaces, tensor product, natural neighborscirs2-signal): CFAR radar, Kalman/EKF/UKF, compressed sensing, MFCC, EMD/HHT, source separation, adaptive filtering, system identificationscirs2-fft): Standard/sparse/fractional FFT, NTT, Lomb-Scargle, MUSIC, Prony, DCT/DST all variants, wavelet packetsscirs2-sparse): LOBPCG/IRAM eigensolvers, AMG, BCSR/ELLPACK/DIA/SELL-C-sigma, recycled Krylov, domain decompositionscirs2-special): Mathieu, Coulomb, spherical harmonics, Wigner 3j/6j/9j, Jacobi theta, Fox H-function, Heun, Appell, q-analogs, Weierstrassscirs2-spatial): R*-Tree, Fortune's Voronoi, geodata projections, trajectory analysis, spatial statistics, 3D convex hullscirs2-cluster): GMM, SOM, HDBSCAN, Dirichlet process, biclustering, topological (Mapper), deep clustering, stream/onlinescirs2-transform): UMAP, Barnes-Hut t-SNE, sparse PCA, persistent homology, optimal transport, metric learning, multiview learningscirs2-metrics): IoU/AP/mAP detection, NDCG ranking, FID/IS generative, fairness, segmentation, streaming metricsscirs2-ndimage): Gabor/SIFT/HOG, watershed/SLIC segmentation, optical flow, 3D morphology, medical imaging, texture analysisscirs2-io): Protobuf/msgpack/CBOR/BSON/Avro, Parquet/Feather/ORC, streaming JSON/CSV/Arrow, cloud storage, HDF5-lite, ETL pipelinescirs2-datasets): Text/NER/QA, medical imaging, graph benchmarks, recommendation, anomaly, time series (UCR-compatible), synthetic generatorsscirs2-autograd): JVP/VJP, custom gradients, checkpointing, mixed precision, distributed gradient, Hessianscirs2-neural): Transformers (GPT-2/T5/SWIN/ViT/CLIP/ConvNeXt), GNNs, diffusion models, SNN, capsule networks, PPO/DPO, MoE, knowledge distillation, quantizationscirs2-graph): Louvain/Leiden community detection, VF2 isomorphism, Node2Vec, max-flow (Dinic), temporal graphs, hypergraphs, SVG visualizationscirs2-text): BPE/WordPiece tokenizers, CRF/HMM labeling, FastText, NER, topic modeling (LDA), coreference, knowledge graph extractionscirs2-vision): Stereo depth, ICP, PnP, dense optical flow, SLAM, panoptic/semantic/instance segmentation, SfM reconstructionscirs2-series): TFT/N-BEATS/DeepAR forecasting, VAR/VECM/DFM, EGARCH/FIGARCH, FDA, conformal prediction, online ARIMAscirs2-wasm): WasmMatrix operations, TypeScript type bindings, WASM SIMD, Web Worker parallel computationSciRS2 provides:
All SciRS2 modules are available on crates.io. Add the modules you need to your Cargo.toml:
[dependencies]
scirs2 = "0.6.5" # Core library with all modules
# Or individual modules:
scirs2-linalg = "0.6.5" # Linear algebra
scirs2-stats = "0.6.5" # Statistics
# ... and more
For development roadmap and contribution guidelines, see TODO.md and CONTRIBUTING.md.
SciRS2 prioritizes performance through several strategies:
Performance benchmarks on core operations demonstrate significant improvements:
| Operation Category | Operation | SciRS2 | Baseline | Speedup |
|---|---|---|---|---|
| SIMD Operations | Element-wise (1M elements) | 0.71 ms | 10.05 ms | 14.17× |
| Signal Processing | Convolution (bandwidth-saturated) | 2.1 ms | 52.5 ms | 25.0× |
| Statistics | Statistical Moments | 1.8 ms | 45.3 ms | 25.2× |
| Monte Carlo | Bootstrap Sampling | 8.9 ms | 267.0 ms | 30.0× |
| Quasi-Random | Sobol Sequence Generation | 3.2 ms | 48.7 ms | 15.2× |
| FFT | Fractional Fourier Transform | 4.5 ms | 112.3 ms | 24.9× |
| Linear Algebra | Matrix Multiply (1000×1000) | 18.5 ms | 23.2 ms | 1.25× |
| Decomposition | SVD (500×500) | 112.3 ms | 128.7 ms | 1.15× |
| FFT | Standard FFT (1M points) | 8.7 ms | 11.5 ms | 1.32× |
| Random | Normal Distribution (10M samples) | 42.1 ms | 67.9 ms | 1.61× |
| Clustering | K-means (100K points, 5 clusters) | 321.5 ms | 378.2 ms | 1.18× |
Key Takeaways:
Performance may vary based on hardware, compiler optimization, and workload characteristics.
Following the SciRS2 Ecosystem Policy, all SciRS2 modules now follow a strict layered architecture:
scirs2-core uses external dependencies directly// ❌ FORBIDDEN in non-core crates
use rand::*;
use ndarray::Array2;
use num_complex::Complex;
// ✅ REQUIRED in non-core crates
use scirs2_core::random::*;
use scirs2_core::array::*;
use scirs2_core::complex::*;
This policy ensures ecosystem consistency and enables better optimization across the entire SciRS2 framework.
For detailed development plans, upcoming features, and contribution opportunities, see:
Current Branch: 0.6.5 (July 31, 2026)
Release Status: All major features through v0.6.5 have been implemented and tested (Waves 53–78, plus the 0.6.0 CUDA-decentralization, 0.6.1 hardening, 0.6.2 Pure-Rust dependency-elimination, 0.6.3 Windows-compatibility hardening, 0.6.4 wasm32 follow-up fix, and 0.6.5 ignore-audit bug-hunt cycles):
par_map_chunks, lock-free data structures, GpuNdarrayoxicuda-* CUDA backend across 10 crates (0.6.0), real model-serving codegen + DLPack safety fixes (0.6.1), hdf5/tracy/libnuma/opencl3 C-dependency removal (0.6.2), Windows heap-corruption/stack-overflow/path-validation fixes (0.6.3), oxifft wasm32-threading compile-error fix enabling scirs2-wasm/scirs2 meta-crate to resume publishing (0.6.4), full #[ignore]-legitimacy audit fixing autograd's mostly-dead-code live backward pass (0.6.5)Next Steps:
Status: ✅ Functional - scirs2-python provides Python integration via PyO3
cargo build --features python (requires PyO3 setup)All platforms benefit from:
All items from the v0.4.0 roadmap have been implemented:
Planned for upcoming releases:
See TODO.md for the complete development roadmap.
#[ignore] as of the 0.6.5 ignore-legitimacy audit, each carrying a requires-gpu: / requires-env: / slow: / bench: / not-implemented: reason so the taxonomy is machine-checked by cargo-scirs2-policy's ignore_audit lint) to optimize build times. Run with cargo test -- --ignored to execute the full test suite including benchmarks.--all-features (35,668 with default features; plus 5,000 doc-tests)--all-features)For the most up-to-date information on limitations and ongoing development, please check our GitHub Issues.
Contributions are welcome! Please see our CONTRIBUTING.md for guidelines.
See our TODO.md for specific tasks and project roadmap.
SciRS2 is developed and maintained by COOLJAPAN OU (Team Kitasan).
The COOLJAPAN Ecosystem represents one of the largest Pure Rust scientific computing efforts in existence — spanning 40+ projects, 500+ crates, and millions of lines of Rust code across scientific computing, machine learning, quantum computing, geospatial analysis, legal technology, multimedia processing, and more. Every line is written and maintained by a small dedicated team committed to a C/Fortran-free future for scientific software.
If you find SciRS2 or any COOLJAPAN project useful, please consider sponsoring to support continued development.
https://github.com/sponsors/cool-japan
Your sponsorship helps us:
Licensed under the Apache License Version 2.0.
SciRS2 builds on the shoulders of giants:
SciRS2 is part of the COOLJAPAN Ecosystem - a comprehensive collection of production-grade Rust libraries for scientific computing, machine learning, and data science. All ecosystem projects follow the SciRS2 POLICY for consistent architecture, leveraging scirs2-core abstractions for optimal performance and maintainability.
NumPy-compatible N-dimensional arrays in pure Rust
Pandas-compatible DataFrames for high-performance data manipulation
Quantum computing library in pure Rust
Advanced ML optimization algorithms extending SciRS2
PyTorch-compatible deep learning framework in pure Rust
TensorFlow-compatible ML framework with dual execution modes
scikit-learn compatible machine learning library
Hugging Face Transformers in pure Rust for production deployment
Pure-Rust neural speech synthesis (Text-to-Speech)
Semantic Web platform with SPARQL 1.2, GraphQL, and AI reasoning
Pure Rust SMT solver - Z3-compatible constraint solving engine
Pure Rust Interactive Theorem Prover — Calculus of Inductive Constructions
Pure Rust Geospatial Data Abstraction Library — Production-Grade GDAL Alternative
Rust Framework for Parsing, Analyzing, and Simulating Legal Statutes — "Governance as Code, Justice as Narrative"
LegalResult<T> typeFour-Layer RAG Engine with SMT-Based Logic Verification and Knowledge Graph Support
Graph-Based LLM Workflow Orchestration Platform in Pure Rust
Pure Rust Gaussian Avatar Reconstruction from Monocular Videos
Pure Rust reconstruction of OpenCV + FFmpeg — Patent-free multimedia and computer vision framework
All Cool Japan Ecosystem projects share:
Getting Started: Each project includes comprehensive documentation, examples, and migration guides. Visit individual project repositories for detailed installation instructions and tutorials.
SciRS2 continues to evolve with ambitious goals:
For detailed development status and contribution opportunities, see TODO.md.
We welcome contributions from the community! Whether you're:
Your participation helps make SciRS2 better for everyone.
If you use SciRS2 in your research, please cite:
@software{scirs2_2026,
title = {SciRS2: Scientific Computing and AI in Pure Rust},
author = {{COOLJAPAN OU (Team KitaSan)}},
year = {2026},
url = {https://github.com/cool-japan/scirs},
version = {0.6.5}
}
SciRS2 builds on the shoulders of giants:
Special thanks to the scientific computing and machine learning communities for their continuous innovation and open collaboration.
Built with ❤️ by COOLJAPAN OU (Team KitaSan)
Part of the Cool Japan Ecosystem - Production-Grade Rust Libraries for Scientific Computing and AI
1,854 followers · starred Apr 2025
1,062 followers · starred Jul 2026
711 followers · starred Jan 2026
565 followers · starred Jul 2025