rssn: A Comprehensive Scientific Computing Library for Rust

53 points pana_yang 21 comments

rssn: A Comprehensive Scientific Computing Library for Rust

We are excited to announce the first official release of rssn, a new open-source scientific computing library for Rust. It is licensed under the Apache License, Version 2.0, and is committed to staying free and open-source.
Although still young, rssn is designed to grow rapidly into a powerful and versatile tool for computational science, combining symbolic computation, numerical methods, and physics simulations under one ecosystem.


Part One: Project Overview

The rssn library consists of five major components:

  1. Symbolic — computer algebra system (CAS) foundations, symbolic differentiation/integration, polynomial algebra, group theory, Lie algebras, PDE/ODE solvers, quantum mechanics operators, graph algorithms, etc.
  2. Numerical — linear algebra, numerical optimization, integration, probability distributions, combinatorics, fractal geometry, real root finding, FFT, PDE solvers (heat, wave, Schrödinger in 1D–3D), etc.
  3. Physics — simulation modules covering finite difference/element/volume methods, molecular mechanics (SPH, multigrid, advection–diffusion), electrodynamics (FDTD), fluid dynamics (Navier–Stokes), relativity (geodesics, Schwarzschild orbits), elasticity, and more.
  4. Output — utilities for pretty-printing, LaTeX/Typset export, plotting (2D/3D surfaces, vector fields, parametric curves), and NumPy-compatible I/O.
  5. Plugins — optional extensions enabled with the "full" feature set.

The main goal of rssn is to provide a comprehensive open-source CAS and numerical computing environment in Rust, bridging symbolic reasoning with numerical simulations and physics modeling.

The crate is available on crates.io and GitHub.
Documentation is hosted on docs.rs and GitHub Pages.


Part Two: Quick Start and Examples

To add rssn to your Rust project:

cargo add rssn

Examples can be found in the project repository, covering both symbolic manipulation and physics/numerical simulations.


Part Three: Future Outlook and Contribution

Roadmap

  • v0.1.0 — First public release
  • v0.2.0 — Stabilization release
  • v0.3.0 — Broader coverage and performance improvements
  • v0.4.0 — Optional FFI bindings for high-performance computing; begin development of rsst, a Rust-based scientific scripting toolkit
  • v1.0.0 — API stabilization and mature ecosystem

How to Contribute

There are many ways to support and participate in the development of rssn:

💡 Code Contributions

  • Bug fixes: Improve code quality and fix open issues.
  • Performance improvements: Optimize algorithms and numerical solvers.
  • New functionality: Extend modules (e.g., symbolic PDE solvers, advanced statistical models, or new physics simulations).

🧪 Testing

Testing coverage is still limited. Contributions to unit tests, benchmarks, and example-driven validation are highly welcome.

💰 Donations

Scientific computing requires significant computational resources. Donations support:

  • Continuous integration and cloud testing
  • Website hosting
  • AI-assisted development pipelines

We accept sponsorships via GitHub Sponsors and also welcome enterprise-level partnerships. Enterprise sponsors receive priority support and the ability to request features.
Excess funds will be reinvested into upstream Rust projects (e.g., rust-LLVM) and community initiatives.


Part Four: Feature Overview (Excerpt)

Below is a high-level overview of some of the available modules and capabilities.
(For the full list of APIs, please refer to docs.rs/rssn.)

Structs (data structures)

  • Matrix — general-purpose matrix type
  • Polynomial — symbolic/numeric polynomial representation
  • LinearRegression, Rastrigin, Rosenbrock — optimization utilities
  • Graph (both symbolic and numerical)
  • Multivector3D (geometric algebra)
  • Probability distributions: BinomialDist, NormalDist, PoissonDist, etc.

Enums (configuration & results)

  • QuadratureMethod — numerical integration methods
  • ProblemType — optimization problem types
  • LinearSolution — classification of linear system solutions
  • BoundaryCondition, Dimensions — physics PDE solvers
  • ConvergenceResult — symbolic/numeric series convergence

Traits (interfaces)

  • Field — numeric field trait for linear algebra
  • OdeSystem — interface for ODE systems
  • Distribution — probability distribution abstraction

Functions (algorithms & solvers)

  • Numerical analysis: gradient, quadrature, fft, convolve, sturm_sequence
  • Symbolic computation: differentiate, integrate, solve_ode, solve_pde, grobner_basis
  • Physics solvers: solve_1d_schrodinger, solve_2d_schrodinger, solve_heat_equation_2d, simulate_lid_driven_cavity_scenario
  • Statistics: mean, variance, two_sample_t_test, correlation

Type Aliases

  • Array — sparse matrix array representation
  • Simplex — basic unit for computational topology
  • CsMat — compressed sparse matrix type

Part Five: Conclusion

rssn aims to become a next-generation scientific computing ecosystem in Rust — uniting symbolic mathematics, numerical analysis, and physics simulations with high performance and safety.
We warmly welcome contributions from the community and hope this project will inspire both researchers and developers to build advanced computational tools in Rust.