workspace = { members = ["tonbo_macros"] } [package] description = "An embedded persistent KV database in Rust." documentation = "https://docs.rs/tonbo" edition = "2021" license = "Apache-2.0" name = "tonbo" readme = "README.md" resolver = "2" version = "0.2.0" [package.metadata] msrv = "1.79.0" [features] bench = ["redb", "rocksdb", "sled"] bytes = ["dep:bytes"] datafusion = ["dep:async-trait", "dep:datafusion"] default = ["bytes", "tokio"] load_tbl = [] redb = ["dep:redb"] rocksdb = ["dep:rocksdb"] sled = ["dep:sled"] tokio = ["tokio/fs"] [[example]] name = "declare" required-features = ["bytes", "tokio"] [[example]] name = "datafusion" required-features = ["datafusion"] [[bench]] harness = false name = "write_bench" required-features = ["bench"] [[bench]] harness = false name = "read_bench" required-features = ["bench"] [[bench]] harness = false name = "writes" path = "benches/criterion/writes.rs" required-features = ["sled"] [dependencies] arrow = "53" async-lock = "3" async-stream = "0.3" async-trait = { version = "0.1", optional = true } bytes = { version = "1.7", optional = true } crc32fast = "1" crossbeam-skiplist = "0.1" datafusion = { version = "42", optional = true } flume = { version = "0.11", features = ["async"] } fusio = { package = "fusio", version = "0.3.1", features = [ "aws", "dyn", "fs", "object_store", "tokio", "tokio-http", ] } fusio-dispatch = { package = "fusio-dispatch", version = "0.2.1", features = [ "aws", "tokio", ] } fusio-parquet = { package = "fusio-parquet", version = "0.2.1" } futures-core = "0.3" futures-io = "0.3" futures-util = "0.3" lockable = "0.0.8" once_cell = "1" parquet = { version = "53", features = ["async"] } pin-project-lite = "0.2" regex = "1" thiserror = "1" tokio = { version = "1", features = ["io-util"], default-features = false } tokio-util = { version = "0.7" } tonbo_macros = { version = "0.2.0", path = "tonbo_macros" } tracing = "0.1" ulid = "1" # Only used for benchmarks log = "0.4.22" redb = { version = "2", optional = true } rocksdb = { version = "0.22", optional = true } sled = { version = "0.34", optional = true } [dev-dependencies] bincode = "1" comfy-table = "7" criterion = { version = "0.5", features = ["async_tokio", "html_reports"] } fastrand = "2" futures = { version = "0.3" } mimalloc = "0.1" serde = "1" tempfile = "3" tokio = { version = "1", features = ["full"] } trybuild = "1.0" [target.'cfg(unix)'.dev-dependencies] pprof = { version = "0.13", features = ["criterion", "flamegraph"] } [profile.release] codegen-units = 1 lto = "thin" [profile.bench] debug = true inherits = "release"