[package]
name = "armdb"
version = "0.1.9"
authors = ["Rail Khusnutdinov <rail@33.run>"]
description = "sharded bitcask key-value storage optimized for NVMe"
keywords = ["key-value", "database"]
categories = []
license = "MIT OR Apache-2.0"
documentation = "https://docs.rs/armdb/"
homepage = "https://github.com/libfunc/armour/"
repository = "https://github.com/libfunc/armour/"
readme = "../README.md"
edition = "2024"
[lib]
name = "armdb"
path = "src/lib.rs"
[features]
default = ["parking_lot", "typed-tree", "rapira-codec", "bytemuck-codec", "rpc", "replication"]
parking_lot = ["dep:parking_lot"]
hot-path-tracing = []
encryption = ["dep:ring"]
replication = ["dep:rtrb"]
typed-tree = []
rapira-codec = ["typed-tree", "dep:rapira"]
bitcode-codec = ["typed-tree", "dep:bitcode"]
bytemuck-codec = ["typed-tree", "dep:bytemuck"]
postcard-codec = ["typed-tree", "dep:postcard", "dep:serde"]
armour = ["dep:serde", "dep:serde_json", "dep:rend", "dep:arrayvec", "typed-tree"]
rpc = ["armour", "dep:armour-rpc", "dep:compio", "dep:futures-util", "dep:async-broadcast", "dep:ctrlc"]
solana = ["armour", "armour-core/solana", "dep:solana-pubkey", "dep:solana-signature"]
var-collections = ["dep:quick_cache"]
loom = ["dep:loom"]
[dependencies]
armour-core = { version = "0.1", features = ["std"] }
armour-rpc = { version = "0.1", optional = true }
seize = "0.5"
zerocopy = { version = "0.8", features = ["derive"] }
xxhash-rust = { version = "0.8", features = ["xxh3"] }
crc32fast = "1.4"
derive_more = { version = "2", features = ["debug", "from", "deref", "deref_mut", "as_ref"] }
thiserror = "2.0"
tracing = "0.1"
metrics = "0.24"
parking_lot = { version = "0.12", optional = true }
quick_cache = { version = "0.6", features = ["stats"], optional = true }
uuid = { version = "1", default-features = false, features = ["bytemuck"], optional = true }
ring = { version = "0.17", optional = true }
rtrb = { version = "0.3", optional = true }
rapira = { version = "0.12", optional = true }
bitcode = { version = "0.6", optional = true }
bytemuck = { version = "1", optional = true, features = ["derive", "extern_crate_alloc"] }
postcard = { version = "1", optional = true, features = ["alloc"] }
compio = { version = "0.18", optional = true, features = ["runtime", "net", "io", "macros", "signal"] }
futures-util = { version = "0.3", optional = true }
async-broadcast = { version = "0.7", optional = true }
ctrlc = { version = "3.4", optional = true }
serde = { version = "1.0", optional = true, features = ["derive"] }
serde_json = { version = "1.0", optional = true }
rend = { version = "0.5", optional = true }
arrayvec = { version = "0.7", optional = true }
solana-pubkey = { version = "4.0", optional = true, features = ["bytemuck"] }
solana-signature = { version = "3.1", optional = true, features = ["bytemuck"] }
loom = { version = "0.7", optional = true }
[target.'cfg(target_os = "linux")'.dependencies]
rustix = { version = "1.1", features = ["io_uring", "linux_latest", "fs", "process"] }
rustix-uring = "0.6"
[dev-dependencies]
criterion = "0.8"
libc = "0.2"
loom = "0.7"
proptest = "1"
rand = "0.10"
seize = "0.5"
tempfile = "3"
rapira = "0.12"
[[bench]]
name = "kv_ops"
harness = false