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