[package]
name = "d-engine-core"
version.workspace = true
edition.workspace = true
authors.workspace = true
description = "Pure Raft consensus algorithm - for building custom Raft-based systems"
homepage.workspace = true
repository.workspace = true
license.workspace = true
keywords = ["raft", "consensus", "algorithm"]
categories = ["algorithms", "concurrency"]
publish = true
[package.metadata.docs.rs]
features = ["watch"]
rustdoc-args = ["--cfg", "docsrs"]
default-features = false
[package.metadata.release]
tag = false
[features]
__test_support = ["mockall", "uuid", "tonic-health"]
watch = []
[dependencies]
d-engine-proto = { workspace = true }
tokio = { workspace = true }
tonic = { workspace = true }
bytes = { workspace = true }
tracing = { workspace = true }
futures = { workspace = true }
serde = { workspace = true }
prost = { workspace = true }
async-trait = "0.1"
bincode = "1.3"
thiserror = "1.0"
nanoid = "0.4.0"
sha2 = "0.10.9"
dashmap = "6.1"
tempfile = "3.19.1"
metrics = { version = "0.24", features = [] }
config = { version = "0.14.0", default-features = false, features = ["toml"] }
tokio-stream = "0.1.16"
astral-tokio-tar = "0.5"
rand = "0.8.5"
lru = "0.15.0"
memmap2 = "0.9.5"
crc32fast = "1.4.2"
http-body = "1.0"
http-body-util = "0.1.3"
crossbeam-channel = "0.5"
crossbeam-skiplist = "0.1"
crossbeam = "0.8"
async-compression = { version = "0.4", features = ["tokio", "gzip"] }
async-stream = "0.3.6"
mockall = { version = "0.12.1", optional = true }
uuid = { version = "1", features = ["v4"], optional = true }
tonic-health = { version = "0.12.3", optional = true }
[dev-dependencies]
tracing-test = "0.2"
serial_test = "3.2.0"
temp-env = "0.3.6"
tokio = { version = "1", features = ["test-util", "process"] }
parking_lot = "0.12.3"
nix = { version = "0.30.1", features = ["fs"] }
mockall = "0.12.1"
tonic-health = "0.12.3"
uuid = { version = "1", features = ["v4"] }
criterion = { version = "0.5", features = ["html_reports", "async_tokio"] }
[[bench]]
name = "leader_state_bench"
harness = false