rssn: A High-Performance Scientific Computing Library for Rust
rssn is an open-source scientific computing library for Rust, combining a high-performance symbolic computation engine with numerical methods support and physics simulations functionalities.
At its core, rssn utilizes a Directed Acyclic Graph (DAG) to represent mathematical expressions, ensuring that they are always in a canonical form. This allows for highly efficient memory use and computational speed.
Key Features
- Efficient DAG-based Expression Model: Expressions are stored as a canonical DAG, ensuring that identical subexpressions are represented by a single node in memory for maximum efficiency.
- Advanced Symbolic Algebra: A powerful Computer Algebra System (CAS) that goes beyond simple simplification:
- Polynomial Algebra: Includes Gröbner basis computation for solving polynomial systems.
- Simplification with Relations: Can simplify expressions with respect to polynomial side-relations (e.g., simplifying
x^2to1 - y^2givenx^2 + y^2 - 1 = 0).
- Symbolic Calculus: Functions for differentiation, integration, limits, and series expansion.
- Numerical Methods: A rich collection of algorithms for numerical integration, optimization, and solving differential equations.
- Versatile Output: Render expressions as pretty-printed text, LaTeX, or Typst.
- Stable FFI Interface: A robust C-compatible foreign function interface (
cdylib) is available for integration with other languages like Python, C++, and Fortran.
Quick Start
Add rssn to your Rust project:
Then, perform a simple symbolic differentiation:
use Expr;
use differentiate;
// Define a variable 'x'
let x = new_variable;
// Define the expression: sin(x)
let expr = new_sin;
// Differentiate with respect to 'x'
let derivative = differentiate;
// The result will be cos(x)
println!;
For more advanced examples, such as simplification with relations, please see the API documentation.
Roadmap
- v0.1.0 — Finalize core symbolic engine, expand simplification rules.
- v0.2.0 — Stabilization release, expand numerical methods.
- v0.3.0 — Performance improvements & broader algorithm coverage.
- v0.4.0 — Building up Computation Ecosystem, expand physics simulations.
- v0.5.0 — Optional FFI for HPC, start development of rsst scripting toolkit.
- v1.0.0 — Full API stabilization.
Contributing
We welcome contributions of all kinds — bug fixes, performance optimizations, new algorithms, and documentation improvements. See CONTRIBUTING.md for detailed guidelines.
Maintainers & Contributors
- Author: Pana Yang (ORCID: 0009-0007-2600-0948, email: Pana.Yang@hotmail.com)
- Consultants:
- X. Zhang (Algorithm & Informatics, @RheaCherry, 3248998213@qq.com)
- Z. Wang (Mathematics)
- Y. Li (Physics) (xian1360685019@qq.com)
- Project Reviewer: Z. Li
- Outside Collaborator: Chahat Patel (@chahat-101)
- Contributors: Owen Yang (yangguangyong@gmail.com)
License
Licensed under the Apache 2.0 License. Please see LICENSE for more details.
Architecture
Please see ARCHITECTURE for more details.
Code Stastics
Please see CODE_STASTICS for more details.
Attributions
Please see ATTRIBUTIONS for more details.
Security
Please see SECURITY for more details.
Code Of Conduct
Please see CODE_OF_CONDUCT for more details.
Report of abuse are fully avalible in this project.
Project Wiki
Please see the GitHub wiki Page for more details.