[package]
name = "deloxide"
version = "1.0.0"
authors = ["Emirhan Tala <tala.emirhan@gmail.com>", "Ulaş Can Demirbağ <ulascandemirbag@gmail.com>"]
edition = "2024"
description = "Deloxide scrubs your threads clean by detecting deadlocks in real time—keeping your system smooth, safe, and corrosion-free. 🦀🧼🔒"
license = "MIT OR Apache-2.0"
repository = "https://github.com/Emivvvvv/deloxide"
documentation = "https://docs.rs/deloxide"
keywords = ["deadlock", "concurrency", "debug", "visualization"]
categories = ["development-tools", "concurrency", "development-tools::debugging", "development-tools::ffi"]
readme = "README.md"

[lib]
name = "deloxide"
crate-type = ["cdylib", "rlib", "staticlib"]

[[bin]]
name = "deloxide"
path = "src/main.rs"
required-features = ["logging-and-visualization"]

[features]
default = [] # Fast production build: no logging overhead.
logging-and-visualization = ["dep:crossbeam-channel"] # Enable structured logging and visualization support
stress-test = [] # for stress testing functionality
lock-order-graph = [] # for lock order graph functionality


[dependencies]
parking_lot = "0.12.4"  # Alternative to std mutex with better performance
fxhash = "0.2.1" # Faster alternative for HashMap and HashSet
chrono = "0.4"  # For timestamps in logging
anyhow = "1.0.99" # For better error handling
crossbeam-channel = { version = "0.5.15", optional = true }

# For json stuff
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
lazy_static = "1.5.0"

# For showcase functionality
webbrowser = "1.0.5" # For web browser usage
rmp-serde = "1.3.0" # For MessagePack serialization
flate2 = "1.1" # For Gzip compression
base64 = "0.22.1" # For Base64URL encoding

# CLI argument parsing
clap = { version = "4.5", features = ["derive"] }
tempfile = "3.20"

# For testing
rand =  "0.9"