[workspace]
resolver = "3"
members = [
"concurrency",
"core-relations",
"egglog-ast",
"egglog-bridge",
"numeric-id",
"union-find",
"src/sort/add_primitive",
"wasm-example"
]
[workspace.package]
version = "1.0.0"
edition = "2024"
description = "egglog is a language that combines the benefits of equality saturation and datalog. It can be used for analysis, optimization, and synthesis of programs. It is the successor to the popular rust library egg."
repository = "https://github.com/egraphs-good/egglog"
keywords = ["e-graphs", "egglog", "datalog", "compiler", "equality"]
license = "MIT"
readme = "README.md"
[workspace.dependencies]
clap = "4"
egraph-serialize = { version = "0.3.0", default-features = false }
env_logger = "0.11"
hashbrown = "0.16"
im-rc = "15.1.0"
indexmap = "2.2"
log = "0.4"
num = "0.4.3"
ordered-float = "5.0"
rustc-hash = "2.1"
thiserror = "2.0"
web-time = "1.1"
dyn-clone = "1.0.17"
rayon = "1.10.0"
mimalloc = "0.1"
quote = "1.0"
syn = "2.0"
arc-swap = "1.7.1"
fixedbitset = "0.5"
smallvec = "1.10"
bumpalo = "3.12"
anyhow = "1.0"
crossbeam-queue = "0.3.11"
petgraph = "0.8"
crossbeam = "0.8.4"
dashmap = "6.1.0"
rand = "0.9"
getrandom = "0.3"
once_cell = "1.21"
num-rational = "0.4"
csv = "1.3"
chrono = { version = "0.4", default-features = false }
glob = "0.3.1"
divan = { package = "codspeed-divan-compat", version = "4.0.3" }
libtest-mimic = "0.8"
egglog-core-relations = { path = "core-relations", version = "1.0.0" }
egglog-ast = { path = "egglog-ast", version = "1.0.0" }
egglog-bridge = { path = "egglog-bridge", version = "1.0.0" }
egglog-concurrency = { path = "concurrency", version = "1.0.0" }
egglog-numeric-id = { path = "numeric-id", version = "1.0.0" }
egglog-union-find = { path = "union-find", version = "1.0.0" }
egglog-add-primitive = { path = "src/sort/add_primitive", version = "1.0.0" }
egglog = { path = ".", default-features = false, version = "1.0.0" }
wasm-bindgen = "0.2"
[package]
name = "egglog"
version = { workspace = true }
edition = { workspace = true }
description = { workspace = true }
repository = { workspace = true }
keywords = { workspace = true }
license = { workspace = true }
readme = { workspace = true }
[[bench]]
name = "ci_benchmarking"
harness = false
[[bench]]
name = "nightly_benchmarking"
harness = false
[[test]]
name = "files"
harness = false
required-features = ["bin"]
[[bin]]
name = "egglog"
path = "src/main.rs"
required-features = ["bin"]
[features]
default = ["bin"]
bin = [
"serde",
"graphviz",
"dep:clap",
"dep:env_logger",
"dep:chrono",
"dep:mimalloc",
]
serde = ["egraph-serialize/serde"]
graphviz = ["egraph-serialize/graphviz"]
[dependencies]
clap = { workspace = true, features = ["derive"], optional = true }
egraph-serialize = { workspace = true}
env_logger = { workspace = true, optional = true }
hashbrown = { workspace = true }
im-rc = { workspace = true }
indexmap = { workspace = true }
log = { workspace = true }
num = { workspace = true }
ordered-float = { workspace = true }
rustc-hash = { workspace = true }
thiserror = { workspace = true }
web-time = { workspace = true }
dyn-clone = { workspace = true }
rayon = { workspace = true }
mimalloc = { workspace = true, optional = true }
csv = { workspace = true }
egglog-core-relations = { workspace = true }
egglog-ast = { workspace = true }
egglog-bridge = { workspace = true }
egglog-numeric-id = { workspace = true }
egglog-add-primitive = { workspace = true }
[build-dependencies]
chrono = { workspace = true, features = ["now"], optional = true }
[dev-dependencies]
divan = { workspace = true }
glob = { workspace = true }
libtest-mimic = { workspace = true }
[profile.release]
incremental = true
[profile.profiling]
inherits = "release"
debug = true