d-engine-core 0.2.2

Pure Raft consensus algorithm - for building custom Raft-based systems
Documentation
[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]
# Only enable user-facing features
features = ["watch"]
rustdoc-args = ["--cfg", "docsrs"]
default-features = false

[package.metadata.release]
# Disable individual crate tags, use workspace-level tag only
tag = false


[features]
# Internal: Test support for downstream crates
# This is not a public API and may change without notice
__test_support = ["mockall", "uuid", "tonic-health"]

# Experimental: Watch API for key change notifications
# WARNING: This feature is under active development and not production-ready
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"
# using Dashset
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"
# Packing/unpacking TAR archives
astral-tokio-tar = "0.5"
rand = "0.8.5"
lru = "0.15.0"
memmap2 = "0.9.5"
crc32fast = "1.4.2"
# used in stream
http-body = "1.0"
http-body-util = "0.1.3"
# Lock-free multi-producer multi-consumer channels for Watch event queue
crossbeam-channel = "0.5"
crossbeam-skiplist = "0.1"
crossbeam = "0.8"
# Compress/decompress data stream
async-compression = { version = "0.4", features = ["tokio", "gzip"] }
async-stream = "0.3.6"

# Test utilities - optional, enabled via __test_support feature
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"] }

# Benchmark configuration
[[bench]]
name = "leader_state_bench"
harness = false