[package]
name = "kvengine"
version = "0.0.1"
authors = ["The TiKV Authors"]
license = "Apache-2.0"
edition = "2018"
publish = false

[features]
default = ["is_sync", "is_async"]
protobuf-codec = ["protobuf/bytes"]
testexport = []
is_sync = ["maybe-async/is_sync"]
is_async = ["maybe-async/is_async"]
failpoints = ["fail/failpoints"]
debug-trace-ia-segments = []
debug-trace-mem-table = []

[dependencies]
aligned-vec = { workspace = true }
aliyun = { workspace = true }
anyhow = { workspace = true }
api_version = { workspace = true }
arc-swap = { workspace = true }
arrow-buffer = { workspace = true }
async-once-cell = { workspace = true }
async-recursion = { workspace = true }
async-trait = { workspace = true }
aws = { workspace = true }
azure_core = { workspace = true }
azure_identity = { workspace = true }
azure_storage = { workspace = true }
azure_storage_blobs = { workspace = true }
backtrace = { workspace = true }
base64 = { workspace = true }
bincode = { workspace = true }
bitflags = { workspace = true }
bstr = { workspace = true }
bytemuck = { workspace = true }
byteorder = { workspace = true }
bytes = { workspace = true }
clara_fts = { workspace = true }
cloud_encryption = { workspace = true }
codec = { workspace = true }
collections = { workspace = true }
crc32c = { workspace = true }
crc32fast = { workspace = true }
crossbeam = { workspace = true }
crossbeam-queue = { workspace = true }
crossbeam-skiplist = { workspace = true }
dashmap = { workspace = true }
dyn-clone = { workspace = true }
engine_traits = { workspace = true }
fail = { workspace = true }
farmhash = { workspace = true }
file_system = { workspace = true }
filetime = { workspace = true }
fs2 = { workspace = true }
fslock = { workspace = true }
futures = { workspace = true }
hex = { workspace = true }
http = { workspace = true }
hyper = { workspace = true }
hyper-rustls = { workspace = true }
hyper-tls = { workspace = true }
itertools = { workspace = true }
keys = { workspace = true }
kvenginepb = { workspace = true }
kvproto = { workspace = true }
lazy_static = { workspace = true }
libc = { workspace = true }
log_wrappers = { workspace = true }
lz4 = { workspace = true }
maybe-async = { workspace = true }
memmap2 = { workspace = true }
nix = { workspace = true }
num_cpus = { workspace = true }
online_config = { workspace = true }
papaya = { workspace = true }
parking_lot = { workspace = true }
prometheus = { workspace = true }
prometheus-static-metric = { workspace = true }
protobuf = { workspace = true }
quick-xml = { workspace = true }
quick_cache = { workspace = true }
rand = { workspace = true }
recovery = { workspace = true }
regex = { workspace = true }
rusoto_core = { workspace = true }
rusoto_credential = { workspace = true }
rusoto_mock = { workspace = true }
rusoto_s3 = { workspace = true }
schema = { workspace = true }
security = { workspace = true }
seize = { workspace = true }
serde = { workspace = true }
serde_derive = { workspace = true }
serde_json = { workspace = true }
slog = { workspace = true }
slog-global = { workspace = true }
slog-term = { workspace = true }
stable_deref_trait = { workspace = true }
tantivy = { workspace = true }
tempfile = { workspace = true }
tencentcloud = { workspace = true }
thiserror = { workspace = true }
tidb_query_common = { workspace = true }
tidb_query_datatype = { workspace = true }
tikv_alloc = { workspace = true }
tikv_util = { workspace = true }
tipb = { workspace = true }
tokio = { workspace = true }
tokio-util = { workspace = true }
tracker = { workspace = true }
txn_types = { workspace = true }
url = { workspace = true }
usearch = { workspace = true }
volcengine = { workspace = true }
workspace-hack = { version = "0.1", path = "../../workspace-hack" }
# xorf = { version = "0.8", features = ["serde"] }
xorf = { workspace = true }
zstd-sys = { workspace = true }

[dev-dependencies]
anyhow = { workspace = true }
criterion = "0.3"
proptest = { workspace = true }
rstest = { workspace = true }
tempfile = { workspace = true }
test_util = { workspace = true }
tikv_alloc = { workspace = true, features = ["jemalloc"] }
zipf = { workspace = true }

[[bench]]
name = "free_mem"
path = "benches/free_mem.rs"
harness = false

[[bench]]
name = "memtable"
path = "benches/memtable.rs"
harness = false
required-features = ["testexport"]

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(debug_assertion)'] }
