[package]
name = "mathcompile"
version = "0.1.2"
edition = "2024"
description = "High-performance symbolic mathematics with final tagless design, egglog optimization, and Rust hot-loading compilation"
license = "Apache-2.0"
repository = "https://github.com/chad-measures/measures"
keywords = ["symbolic", "mathematics", "rust-codegen", "final-tagless", "optimization"]
categories = ["mathematics", "science", "compilers"]
[dependencies]
num-traits = "0.2"
thiserror = "2.0.12"
cranelift = { version = "0.120.0", optional = true }
cranelift-jit = { version = "0.120.0", optional = true }
cranelift-module = { version = "0.120.0", optional = true }
cranelift-codegen = { version = "0.120.0", optional = true }
cranelift-frontend = { version = "0.120.0", optional = true }
target-lexicon = { version = "0.13.2", optional = true }
serde = { version = "1.0", features = ["derive"], optional = true }
egglog = { version = "0.4", optional = true }
libloading = "0.8"
ad_trait = { version = "0.1", optional = true }
ordered-float = "5.0.0"
[features]
default = ["optimization"]
optimization = ["dep:egglog"]
cranelift = ["dep:cranelift", "dep:cranelift-jit", "dep:cranelift-module", "dep:cranelift-codegen", "dep:cranelift-frontend", "dep:target-lexicon"]
ad_trait = ["dep:ad_trait"]
all = ["optimization", "cranelift", "ad_trait"]
symbolic = ["optimization"]
jit = ["cranelift"]
[dev-dependencies]
criterion = { version = "0.6.0", features = ["html_reports"] }
divan = "0.1"
proptest = "1.5"
[[bench]]
name = "expression_optimization"
harness = false
[[bench]]
name = "simple_optimization"
harness = false
[[bench]]
name = "cranelift_vs_rust"
harness = false