[package]
name = "rssn"
version = "0.2.2"
edition = "2024"
rust-version = "1.89.0"
authors = ["The rssn developers"]
description = "A comprehensive scientific computing library for Rust, aiming for feature parity with NumPy, SciPy, and SymPy."
license = "Apache-2.0"
repository = "https://github.com/Apich-Organization/rssn"
homepage = "https://github.com/Apich-Organization/rssn"
readme = "README.md"
keywords = [
"scientific-computing",
"symbolic-math",
"numerical-analysis",
"physics-simulation",
"optimization",
]
categories = [
"science",
"mathematics",
"data-structures",
"simulation",
"algorithms",
]
exclude = [
"examples/*",
"tests/*",
"benches/*",
"doc/*",
".gitea/*",
".github/*",
".vscode/*",
".idea/*",
"*.sh",
"*.bat",
"scripts/*",
"docs/*",
"rssn.h",
"rssn.hpp"
]
[lib]
crate-type = ["cdylib", "rlib", "staticlib"]
[profile.dev]
lto = false
opt-level = 0
debug = true
[profile.release]
lto = true
codegen-units = 1
panic = "abort"
opt-level = 3
strip = true
debug = false
[dependencies]
uuid = { version = "1.4", features = ["v4"] }
libc = { version = "0.2", optional = true }
ndarray = { version = "0.16.1", features = ["serde"] }
statrs = "0.18"
argmin-math = { version = "0.5", features = [
"ndarray_latest-nolinalg",
"nalgebra_latest",
] }
argmin = { version = "0.11", features = ["serde", "serde1"] }
nalgebra = { version = "0.34", features = ["serde-serialize"] }
quadrature = "0.1"
interp = "2.1"
itertools = "0.14"
rustfft = "6.1"
sprs-rssn = "0.11"
uom = { version = "0.37", features = [
"use_serde",
"num-bigint",
"std",
"usize",
"si",
] }
bigdecimal = { version = "0.4", features = ["serde"] }
special = "0.11"
errorfunctions = "0.2"
ndarray-npy = { version = "0.9", optional = true }
rayon = "1.8"
bincode-next = { version = "2", features = ["serde"] }
rand_v09 = { package = "rand", version = "0.9.2" }
rand = "0.8.5"
ordered-float = { version = "5", features = ["serde"] }
num-complex = { version = "0.4", features = ["serde"] }
num-bigint = { version = "0.4", features = ["serde", "rand"] }
num-rational = { version = "0.4", features = ["serde"] }
num-traits = "0.2"
serde = { version = "1.0", features = ["derive", "rc"] }
serde_json = "1.0"
libloading = { version = "0.8", optional = true }
dashmap = "6"
once_cell = "1.19"
lazy_static = "1.4"
nom = "7"
plotters = { version = "0.3", features = [
"image",
"chrono",
"ttf",
"font-kit",
"evcxr",
], optional = true }
ahash = { version = "0.8", features = ["serde"] }
abi_stable = { version = "0.11", optional = true }
instability = "0.3"
faer = "0.23"
cranelift-frontend = { version = "0.127", optional = true }
cranelift-native = { version = "0.127", optional = true }
cranelift-codegen = { version = "0.127", optional = true }
cranelift-module = { version = "0.127", optional = true }
cranelift-jit = { version = "0.127", optional = true }
pulp = { version = "0.22", features = [
"macro",
"x86-v4",
"nightly",
], optional = true }
simba = { version = "0.9", features = [
"libm",
"cordic",
"decimal",
"rand",
], optional = true }
[build-dependencies]
cbindgen = "0.29"
vergen = { version = "9", features = [
"build",
"cargo",
"cargo_metadata",
"emit_and_set",
"regex",
"rustc",
"rustc_version",
"si",
"sysinfo",
"time",
] }
vergen-gitcl = { version = "1", features = [
"build",
"cargo",
"emit_and_set",
"rustc",
"si",
] }
[features]
default = []
compute = []
output = ["dep:plotters", "dep:ndarray-npy"]
physics = []
plugins = ["dep:libloading", "dep:abi_stable"]
jit = [
"dep:cranelift-codegen",
"dep:cranelift-frontend",
"dep:cranelift-jit",
"dep:cranelift-module",
"dep:cranelift-native",
]
ffi_api = []
ffi_blinding = ["dep:libc"]
experimental = ["ffi_blinding", "jit", "dep:pulp", "dep:simba"]
nightly = ["dep:pulp"]
full = [
"default",
"output",
"physics",
"plugins",
"compute",
"ffi_blinding",
"jit",
"experimental",
]
[dev-dependencies]
criterion = { version = "0.7", features = ["html_reports"] }
proptest = "1.2"
assert_approx_eq = "1.1"
[[bench]]
name = "rssn_benches"
harness = false
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--html-in-header", "doc-header.html"]
[lints.clippy]
empty-line-after-doc-comments = "allow"
[lints.rust]
unexpected_cfgs = { level = "allow", check-cfg = ['cfg(has_foo)'] }