[package]
name = "libdictenstein"
version = "0.1.0"
edition = "2021"
rust-version = "1.70"
authors = ["Dylon Edwards <dylon.devo@gmail.com>"]
license = "Apache-2.0"
repository = "https://github.com/vinary-tree/libdictenstein"
description = "High-performance dictionary data structures (trie, DAWG, double-array trie, suffix automaton, lock-free durable persistent ART) behind one trait API; pairs with liblevenshtein for fuzzy matching"
keywords = ["trie", "dawg", "dictionary", "fuzzy-search", "automata"]
categories = ["algorithms", "data-structures", "text-processing"]
readme = "README.md"
exclude = ["docs/", "formal-verification/"]
[dependencies]
log = "0.4"
smallvec = { version = "1.13", features = ["serde"] }
rustc-hash = "1.1"
arc-swap = "1.7"
thiserror = "2.0"
llattice = { path = "../llattice", version = "0.1" }
parking_lot = { version = "0.12", optional = true }
serde = { version = "1.0", features = ["derive", "rc"], optional = true }
bincode = { version = "2.0", features = ["serde"], optional = true }
serde_json = { version = "1.0", optional = true }
flate2 = { version = "1.0", optional = true }
prost = { version = "0.13", optional = true }
pathmap = { version = "0.2", optional = true }
memmap2 = { version = "0.9", optional = true }
crossbeam-channel = { version = "0.5", optional = true }
sysinfo = { version = "0.37", optional = true }
rayon = { version = "1.10", optional = true }
xxhash-rust = { version = "0.8", features = ["xxh3"], optional = true }
lru = { version = "0.18", optional = true }
dashmap = { version = "6.1", optional = true }
io-uring = { version = "0.7", optional = true }
libc = { version = "0.2", optional = true }
[build-dependencies]
prost-build = { version = "0.13", optional = true }
[dev-dependencies]
criterion = "0.5"
tempfile = "3.8"
proptest = "1.4"
paste = "1.0"
hdrhistogram = "7.5"
rand = "0.8"
loom = "0.7"
[features]
default = ["parking_lot"]
pathmap-backend = ["pathmap"]
serialization = ["serde", "bincode", "serde_json"]
compression = ["flate2"]
protobuf = ["prost", "prost-build"]
persistent-artrie = ["memmap2", "parking_lot", "serde", "bincode", "sysinfo", "xxhash-rust", "lru", "dashmap", "crossbeam-channel", "serialization"]
group-commit = ["persistent-artrie", "crossbeam-channel"]
parallel-merge = ["persistent-artrie", "rayon"]
io-uring-backend = ["persistent-artrie", "dep:io-uring", "dep:libc"]
bench-internals = ["io-uring-backend"]
[lib]
name = "libdictenstein"
path = "src/lib.rs"
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
[profile.bench]
inherits = "release"
[[bench]]
name = "serialization_benchmarks"
harness = false
required-features = ["serialization", "pathmap-backend"]
[[bench]]
name = "persistent_artrie_benchmarks"
harness = false
required-features = ["persistent-artrie"]
[[bench]]
name = "persistent_artrie_char_benchmarks"
harness = false
required-features = ["persistent-artrie"]
[[bench]]
name = "loading_experiments"
harness = false
required-features = ["persistent-artrie"]
[[bench]]
name = "epoch_benchmarks"
harness = false
required-features = ["persistent-artrie"]
[[bench]]
name = "group_commit_benchmarks"
harness = false
required-features = ["group-commit"]
[[bench]]
name = "memory_pressure_benchmarks"
harness = false
required-features = ["persistent-artrie"]
[[bench]]
name = "adaptive_pool_benchmarks"
harness = false
required-features = ["persistent-artrie"]
[[bench]]
name = "per_node_log_benchmarks"
harness = false
required-features = ["persistent-artrie"]
[[bench]]
name = "batch_wal_benchmarks"
harness = false
required-features = ["persistent-artrie"]
[[bench]]
name = "write_locality_benchmarks"
harness = false
required-features = ["persistent-artrie"]
[[bench]]
name = "parallel_merge_benchmarks"
harness = false
required-features = ["parallel-merge"]
[[bench]]
name = "transaction_benchmarks"
harness = false
required-features = ["persistent-artrie"]
[[example]]
name = "test_bench"
required-features = ["persistent-artrie"]
[[example]]
name = "test_bench_large"
required-features = ["persistent-artrie"]
[[example]]
name = "bench_disk_io"
required-features = ["persistent-artrie"]
[[example]]
name = "wal_size_test"
required-features = ["persistent-artrie"]
[[example]]
name = "wal_debug"
required-features = ["persistent-artrie"]
[[example]]
name = "exp_checkpoint_throughput"
required-features = ["persistent-artrie"]
[[example]]
name = "wal_compare"
required-features = ["persistent-artrie"]
[[example]]
name = "wal_flush_debug"
required-features = ["persistent-artrie"]
[[example]]
name = "insert_trace"
required-features = ["persistent-artrie"]
[[example]]
name = "prefix_diversity_test"
required-features = ["persistent-artrie"]
[[example]]
name = "streaming_merge_test"
required-features = ["persistent-artrie"]
[[example]]
name = "batched_merge_comparison"
required-features = ["persistent-artrie"]
[[example]]
name = "test_checkpoint_debug"
required-features = ["persistent-artrie"]
[[bench]]
name = "io_backend_benchmarks"
harness = false
required-features = ["persistent-artrie"]
[[bench]]
name = "io_uring_comparison_benchmarks"
harness = false
required-features = ["io-uring-backend"]
[[bench]]
name = "eviction_benchmarks"
harness = false
required-features = ["bench-internals"]
[[bench]]
name = "concurrent_read_vs_flush_benchmarks"
harness = false
required-features = ["persistent-artrie"]
[[bench]]
name = "lockfree_flip_benchmark"
harness = false
required-features = ["persistent-artrie", "bench-internals"]
[package.metadata.docs.rs]
all-features = true