[workspace]
members = ["arael-macros", "arael-sym", "arael-sym-macros", "arael-sketch", "arael-sketch-backend", "arael-sketch-solver"]

[package]
name = "arael"
version = "0.6.1"
edition = "2024"
authors = ["Indrek Mandre <indrek@mare.ee>"]
description = "Nonlinear optimization framework with compile-time symbolic differentiation"
license = "MIT"
repository = "https://github.com/harakas/arael"
keywords = ["optimization", "nonlinear", "least-squares", "symbolic-math", "slam"]
categories = ["science::robotics", "mathematics", "algorithms"]

[features]
lapack = ["dep:lapack-sys"]
eigen = ["dep:cc"]
cholmod = ["eigen"]

[dependencies]
arael-macros = { version = "0.6.1", path = "arael-macros" }
arael-sym = { version = "0.6.1", path = "arael-sym" }
inventory = "0.3"
num = "0.4"
nalgebra = "0.33"
rand = "0.9"
rand_distr = "0.5"
serde = { version = "1", features = ["derive"] }
lapack-sys = { version = "0.15", optional = true }
faer = { version = "0.24", default-features = false, features = ["std", "sparse-linalg"] }

[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.3", features = ["wasm_js"] }
web-time = "1"

[build-dependencies]
cc = { version = "1", optional = true }

[dev-dependencies]
criterion = "0.5"
image = "0.25"
rustyline = "15"
dirs = "5"
trybuild = "1"

[[bench]]
name = "benchmarks"
harness = false
