[package]
name = "tikv"
version = "26.3.99"
authors = ["The TiKV Authors"]
description = "A distributed transactional key-value database powered by Rust and Raft"
license = "Apache-2.0"
keywords = ["KV", "distributed-systems", "raft"]
homepage = "https://tikv.org"
repository = "https://github.com/tidbcloud/cloud-storage-engine/"
readme = "README.md"
edition = "2018"
publish = false

[features]
default = ["jemalloc", "portable", "mem-profiling", "failpoints"]
tcmalloc = ["tikv_alloc/tcmalloc"]
jemalloc = ["tikv_alloc/jemalloc"]
mimalloc = ["tikv_alloc/mimalloc"]
snmalloc = ["tikv_alloc/snmalloc"]
portable = []
sse = []
mem-profiling = ["tikv_alloc/mem-profiling"]
failpoints = [
    "fail/failpoints",
    "raftstore/failpoints",
    "tikv_util/failpoints",
]
cloud-aws = ["encryption_export/cloud-aws", "sst_importer/cloud-aws"]
cloud-gcp = ["encryption_export/cloud-gcp", "sst_importer/cloud-gcp"]
cloud-azure = ["encryption_export/cloud-azure", "sst_importer/cloud-azure"]
testexport = ["raftstore/testexport", "api_version/testexport", "tikv_kv/testexport"]
cloud-storage-grpc = ["sst_importer/cloud-storage-grpc"]
cloud-storage-dylib = ["sst_importer/cloud-storage-dylib"]

# Usage: set environment variable RUST_LOG (e.g, export RUST_LOG="info,raft=debug")
# Ref: https://docs.rs/env_logger/latest/env_logger/#enabling-logging
# Note: there is more overhead. Use for debugging only.
env-logger = ["tikv_util/env-logger"]

# for testing configure propegate to other crates
# https://stackoverflow.com/questions/41700543/can-we-share-test-utilites-between-crates
testing = []

# For debug trace
debug-trace-txn-tasks = []

[lib]
name = "tikv"

[dependencies]
anyhow = { workspace = true }
api_version = { workspace = true }
async-stream = { workspace = true }
async-trait = { workspace = true }
backtrace = { workspace = true }
bigdecimal = { workspace = true }
bincode = { workspace = true }
byteorder = { workspace = true }
bytes = { workspace = true }
case_macros = { workspace = true }
chrono = { workspace = true }
codec = { workspace = true }
collections = { workspace = true }
concurrency_manager = { workspace = true }
cpu-time = { workspace = true }
crc32fast = { workspace = true }
crc64fast = { workspace = true }
crossbeam = { workspace = true }
dashmap = { workspace = true }
encryption_export = { workspace = true }
engine_traits = { workspace = true }
error_code = { workspace = true }
fail = { workspace = true }
farmhash = { workspace = true }
file_system = { workspace = true }
flate2 = { workspace = true }
futures = { workspace = true }
futures-executor = { workspace = true }
futures-timer = { workspace = true }
futures-util = { workspace = true }
fxhash = { workspace = true }
getset = { workspace = true }
grpcio = { workspace = true }
grpcio-health = { workspace = true }
health_controller = { workspace = true }
hex = { workspace = true }
http = { workspace = true }
http-body = { workspace = true }
http-body-util = { workspace = true }
http1 = { workspace = true }
hyper = { workspace = true }
hyper-rustls = { workspace = true }
hyper-tls = { workspace = true }
hyper-util = { workspace = true }
hyper1 = { workspace = true }
into_other = { workspace = true }
itertools = { workspace = true }
keyed_priority_queue = { workspace = true }
keys = { workspace = true }
kvengine = { workspace = true }
kvenginepb = { workspace = true }
kvproto = { workspace = true }
lazy_static = { workspace = true }
libc = { workspace = true }
libloading = { workspace = true }
log = { workspace = true }
log_wrappers = { workspace = true }
match-template = { workspace = true }
maybe-async = { workspace = true }
md5 = { workspace = true }
memory_profile = { workspace = true }
memory_trace_macros = { workspace = true }
mime = { workspace = true }
more-asserts = { workspace = true }
mur3 = { workspace = true }
nom = { version = "5.1.0", default-features = false, features = ["std"] }
notify = { workspace = true }
num-traits = { workspace = true }
num_cpus = { workspace = true }
online_config = { workspace = true }
openssl = { workspace = true }
overload_protector = { workspace = true }
papaya = { workspace = true }
parking_lot = { workspace = true }
paste = { workspace = true }
pd_client = { workspace = true }
pin-project = { workspace = true }
pnet_datalink = { workspace = true }
pprof = { workspace = true }
prometheus = { workspace = true }
prometheus-static-metric = { workspace = true }
protobuf = { workspace = true }
quick_cache = { workspace = true }
raft = { workspace = true }
raftstore = { workspace = true }
rand = "0.8.3"
recovery = { workspace = true }
regex = { workspace = true }
resource_control = { workspace = true }
resource_metering = { workspace = true }
rev_lines = { workspace = true }
rfengine = { workspace = true }
rfstore = { workspace = true }
rmp-serde = "1"

seahash = { workspace = true }
security = { workspace = true }
semver = { workspace = true }
serde = { workspace = true }
serde_derive = { workspace = true }
serde_ignored = { workspace = true }
serde_json = { workspace = true }
sha1 = { workspace = true }
sha2 = "0.10"
slog = { workspace = true }
slog-global = { workspace = true }
smallvec = { workspace = true }
sst_importer = { workspace = true }
strum = { version = "0.20", features = ["derive"] }
sync_wrapper = { workspace = true }
tempfile = { workspace = true }
thiserror = { workspace = true }
tidb_query_aggr = { workspace = true }
tidb_query_common = { workspace = true }
tidb_query_datatype = { workspace = true }
tidb_query_executors = { workspace = true }
tidb_query_expr = { workspace = true }
tikv_alloc = { workspace = true }
tikv_kv = { workspace = true }
tikv_util = { workspace = true }
time = { workspace = true }
tipb = { workspace = true }
tokio = { workspace = true }
tokio-metrics = { workspace = true }
tokio-openssl = { workspace = true }
tokio-rustls = { workspace = true }
tokio-timer = { workspace = true }
toml = { workspace = true }
trace_event = { workspace = true }
tracker = { workspace = true }
txn_types = { workspace = true }
url = { workspace = true }
uuid = { workspace = true }
walkdir = { workspace = true }
workspace-hack = { version = "0.1", path = "workspace-hack" }
yatp = { workspace = true }

[dev-dependencies]
api_version = { workspace = true, features = ["testexport"] }
async-channel = { workspace = true }
cloud_server = { workspace = true, features = ["testexport"] }
hyper-openssl = { workspace = true }
kvengine = { workspace = true, features = ["testexport"] }
matches = { workspace = true }
panic_hook = { workspace = true }
reqwest = { workspace = true }
rstest = { workspace = true }
test_coprocessor = { workspace = true }
test_sst_importer = { workspace = true }
test_util = { workspace = true }
tikv_kv = { workspace = true, features = ["testexport"] }
tokio = { workspace = true }
zipf = { workspace = true }

[[bench]]
name = "yatp_fair_pool"
path = "components/tikv_util/benches/yatp_fair_pool/mod.rs"
test = true

[patch.crates-io]
# TODO: remove this when new raft-rs is published.
raft = { git = "https://github.com/tikv/raft-rs", branch = "master" }
raft-proto = { git = "https://github.com/tikv/raft-rs", branch = "master" }
protobuf = { git = "https://github.com/pingcap/rust-protobuf", branch = "v2.8" }
protobuf-codegen = { git = "https://github.com/pingcap/rust-protobuf", branch = "v2.8" }

# remove this when https://github.com/danburkert/fs2-rs/pull/42 is merged.
fs2 = { git = "https://github.com/tikv/fs2-rs", branch = "tikv" }

# TODO: remove this after crossbeam-deque is updated to the next release version.
# This is a workaround for cargo can't resolving the this patch in yatp.
# Keep the crossbeam patches on the same revision to avoid duplicate git dependency trees.
crossbeam-deque = { git = "https://github.com/crossbeam-rs/crossbeam", rev = "c4abd1b93149108dfa13c0cd42c878657c618bad" }
# TODO: remove this when crossbeam-skiplist publishes a release with the memory leak fix.
crossbeam-skiplist = { git = "https://github.com/crossbeam-rs/crossbeam", rev = "c4abd1b93149108dfa13c0cd42c878657c618bad" }
sysinfo = { git = "https://github.com/tikv/sysinfo", branch = "0.26-fix-cpu" }

# NOTE: LINDERA_CACHE is used in CI. If dictionary is updated, please update the cache in CI as well.
# See https://github.com/pingyu/gha-runner-docker/blob/main/warm-lindera-cache.sh.
lindera = { git = "https://github.com/breezewish/lindera", branch = "v0.43.1-tokio-1.24" }
tantivy = { git = "https://github.com/pingcap/tantivy.git", branch = "cse-0.22.1" }

[target.'cfg(target_os = "linux")'.dependencies]
procinfo = { git = "https://github.com/tikv/procinfo-rs", rev = "6599eb9dca74229b2c1fcc44118bef7eff127128" }
# When you modify TiKV cooperatively with kvproto, this will be useful to submit the PR to TiKV and the PR to
# kvproto at the same time.
# After the PR to kvproto is merged, remember to comment this out and run `cargo update -p kvproto`.
# [patch.'https://github.com/pingcap/kvproto']
# kvproto = { git = "https://github.com/your_github_id/kvproto", branch = "your_branch" }

[workspace]
# See https://github.com/rust-lang/rfcs/blob/master/text/2957-cargo-features2.md
# Without resolver = 2, using `cargo build --features x` to build `cmd`
# will _not_ propagate the feature `x` into `cmd`'s direct dependencies.
resolver = "2"
members = [
    "cmd/cse-ctl",
    "cmd/tikv-server",
    "cmd/tikv-worker",
    "components/api_version",
    "components/backup",
    "components/batch-system",
    "components/builtin_dfs",
    "components/case_macros",
    "components/cdc",
    "components/check_table",
    "components/clara_fts",
    "components/cloud",
    "components/cloud/aliyun",
    "components/cloud/aws",
    "components/cloud/azure",
    "components/cloud/gcp",
    "components/cloud/tencentcloud",
    "components/cloud/volcengine",
    "components/cloud_encryption",
    "components/cloud_server",
    "components/cloud_worker",
    "components/codec",
    "components/collections",
    "components/concurrency_manager",
    "components/encryption",
    "components/encryption/export",
    "components/encryption_conf_change",
    "components/error_code",
    "components/external_storage",
    "components/external_storage/export",
    "components/file_system",
    "components/into_other",
    "components/keys",
    "components/kvengine",
    "components/kvenginepb",
    "components/legacy_sst",
    "components/load_data",
    "components/log_wrappers",
    "components/memory_profile",
    "components/merged_engine",
    "components/native_br",
    "components/online_config",
    "components/overload_protector",
    "components/panic_hook",
    "components/pd_client",
    "components/profiler",
    "components/raftstore",
    "components/recovery",
    "components/replication_worker",
    "components/resolved_ts",
    "components/resource_control",
    "components/resource_metering",
    "components/rfengine",
    "components/rfenginepb",
    "components/rfstore",
    "components/schema",
    "components/security",
    "components/sst_importer",
    "components/test_cloud_server",
    "components/test_coprocessor",
    "components/test_pd",
    "components/test_pd_client",
    "components/test_raftstore",
    "components/test_rfstore",
    "components/test_sst_importer",
    "components/test_storage",
    "components/test_util",
    "components/tidb_query_aggr",
    "components/tidb_query_codegen",
    "components/tidb_query_common",
    "components/tidb_query_datatype",
    "components/tidb_query_executors",
    "components/tidb_query_expr",
    "components/tikv_alloc",
    "components/tikv_kv",
    "components/tikv_util",
    "components/tipb_helper",
    "components/trace_event",
    "components/tracker",
    "components/txn_types",
    "fuzz",
    "fuzz/fuzzer-afl",
    "fuzz/fuzzer-honggfuzz",
    "fuzz/fuzzer-libfuzzer",
    "tests",
    "tools/yatp-sim",
    "workspace-hack",
]
default-members = ["cmd/tikv-server", "cmd/cse-ctl", "cmd/tikv-worker"]

[workspace.dependencies]
api_version = { path = "components/api_version", default-features = true }
aws = { path = "components/cloud/aws" }
azure = { path = "components/cloud/azure" }
aliyun = { path = "components/cloud/aliyun" }
backup = { path = "components/backup", default-features = false }
batch-system = { path = "components/batch-system" }
builtin_dfs = { path = "components/builtin_dfs" }
case_macros = { path = "components/case_macros" }
check_table = { path = "components/check_table" }
cdc = { path = "components/cdc", default-features = false }
cloud = { path = "components/cloud" }
cloud_encryption = { path = "components/cloud_encryption" }
cloud_server = { path = "components/cloud_server", default-features = true }
cloud_worker = { path = "components/cloud_worker" }
codec = { path = "components/codec" }
collections = { path = "components/collections" }
concurrency_manager = { path = "components/concurrency_manager", default-features = false }
crc32c = { version = "=0.6.8" }
crossbeam = { version = "0.8", default-features = true }
encryption = { path = "components/encryption", default-features = false }
encryption_export = { path = "components/encryption/export", default-features = false }
encryption_conf_change = { path = "components/encryption_conf_change" }
engine_traits = { path = "components/engine_traits", default-features = false }
error_code = { path = "components/error_code", default-features = false }
external_storage = { path = "components/external_storage" }
external_storage_export = { path = "components/external_storage/export" }
file_system = { path = "components/file_system", default-features = false }
resource_control = { path = "components/resource_control", default-features = false }
gcp = { path = "components/cloud/gcp" }
health_controller = { path = "components/health_controller" }
into_other = { path = "components/into_other" }
keys = { path = "components/keys", default-features = true }
kvengine = { path = "components/kvengine", default-features = true }
kvenginepb = { path = "components/kvenginepb", default-features = true }
legacy_sst = { path = "components/legacy_sst" }
lazy_cell = "=1.3.0"
log_wrappers = { path = "components/log_wrappers" }
maybe-async = { git = "https://github.com/pingyu/maybe-async-rs", branch = "cse", features = [
    "is_async",
    "is_sync",
] }
memory_trace_macros = { path = "components/memory_trace_macros" }
memory_profile = { path = "components/memory_profile" }
merged_engine = { path = "components/merged_engine" }
native_br = { path = "components/native_br" }
online_config = { path = "components/online_config" }
overload_protector = { path = "components/overload_protector" }
panic_hook = { path = "components/panic_hook" }
pd_client = { path = "components/pd_client", default-features = false }
profiler = { path = "components/profiler" }
raft = { version = "0.7.0", features = [
    "protobuf-codec",
], default-features = false }
raftstore = { path = "components/raftstore", default-features = false }
recovery = { path = "components/recovery" }
replication_worker = { path = "components/replication_worker" }
resolved_ts = { path = "components/resolved_ts", default-features = false }
resource_metering = { path = "components/resource_metering" }
rfengine = { path = "components/rfengine", default-features = true }
rfenginepb = { path = "components/rfenginepb" }
rfstore = { path = "components/rfstore", default-features = true }
rusoto_core = { git = "https://github.com/tikv/rusoto", branch = "cse" }
rusoto_credential = { git = "https://github.com/tikv/rusoto", branch = "cse" }
rusoto_mock = { git = "https://github.com/tikv/rusoto", branch = "cse" }
rusoto_s3 = { git = "https://github.com/tikv/rusoto", branch = "cse" }
schema = { path = "components/schema" }
security = { path = "components/security", default-features = false }
sst_importer = { path = "components/sst_importer" }
tencentcloud = { path = "components/cloud/tencentcloud" }
volcengine = { path = "components/cloud/volcengine" }
test_coprocessor = { path = "components/test_coprocessor", default-features = false }
test_cloud_server = { path = "components/test_cloud_server" }
test_pd = { path = "components/test_pd" }
test_pd_client = { path = "components/test_pd_client" }
test_rfstore = { path = "components/test_rfstore", default-features = false }
test_raftstore = { path = "components/test_raftstore", default-features = false }
test_sst_importer = { path = "components/test_sst_importer" }
test_storage = { path = "components/test_storage", default-features = false }
test_util = { path = "components/test_util" }
tidb_query_aggr = { path = "components/tidb_query_aggr" }
tidb_query_codegen = { path = "components/tidb_query_codegen" }
tidb_query_common = { path = "components/tidb_query_common", default-features = true }
tidb_query_datatype = { path = "components/tidb_query_datatype", default-features = true }
tidb_query_executors = { path = "components/tidb_query_executors" }
tidb_query_expr = { path = "components/tidb_query_expr" }
tikv = { path = ".", default-features = false }
tikv_alloc = { path = "components/tikv_alloc" }
tikv_kv = { path = "components/tikv_kv", default-features = true }
tikv_util = { path = "components/tikv_util", default-features = true }
tipb_helper = { path = "components/tipb_helper" }
trace_event = { path = "components/trace_event" }
tracker = { path = "components/tracker" }
txn_types = { path = "components/txn_types", default-features = false }
# External libs
grpcio = { version = "0.10.4", features = [
    "nightly",
    "openssl-vendored",
    "protobuf-codec",
], default-features = false }
grpcio-health = { version = "0.10.4", features = [
    "protobuf-codec",
], default-features = false }
slog = { version = "2.3", features = [
    "max_level_trace",
    "release_max_level_debug",
], default-features = true }
slog-global = { git = "https://github.com/breeswish/slog-global.git", rev = "d592f88e4dbba5eb439998463054f1a44fbf17b9", default-features = true }
tipb = { git = "https://github.com/pingcap/tipb.git" }
tikv-client = { git = "https://github.com/tikv/client-rust.git", rev = "ab4be1c2cdd58d4e593202991fb520221c83bdfd", default-features = false }
kvproto = { git = "https://github.com/pingcap/kvproto.git", rev = "107095f" }
yatp = { git = "https://github.com/tikv/yatp.git", branch = "master", default-features = true }
tokio-timer = { git = "https://github.com/tikv/tokio", branch = "tokio-timer-hotfix", default-features = true }
aligned-vec = { version = "0.6.1", default-features = true }
anyhow = { version = "1.0.26", default-features = true }
arc-swap = { version = "1.7", default-features = true }
arrow = { version = "53.1.0", default-features = true }
arrow-buffer = { version = "53.1.0", default-features = true }
async-channel = { version = "1.4", default-features = true }
async-compression = { version = "0.3.14", features = [
    "futures-io",
    "zstd",
], default-features = true }
async-once-cell = { version = "0.5.4", default-features = true }
async-recursion = { version = "1.1", default-features = true }
async-speed-limit = { version = "0.4.0", default-features = true }
async-stream = { version = "0.2", default-features = true }
async-trait = { version = "0.1", default-features = true }
atty = { version = "0.2", default-features = true }
aws-config = { version = "1", default-features = false }
aws-credential-types = { version = "1", features = [
    "hardcoded-credentials",
], default-features = true }
aws-sdk-kms = { version = "=1.40.0", default-features = false }
aws-sdk-s3 = { version = "=1.40.0", features = [
    "rt-tokio",
], default-features = false }
aws-smithy-runtime = { version = "1.4.0", features = [
    "client",
    "connector-hyper-0-14-x",
    "test-util",
], default-features = true }
aws-smithy-runtime-api = { version = "1", default-features = false }
aws-smithy-types = { version = "1", features = [
    "byte-stream-poll-next",
], default-features = true }
azure_core = { version = "0.18", features = [
    "enable_reqwest",
    "hmac_openssl",
], default-features = false }
azure_identity = { version = "0.18", default-features = true }
azure_storage = { version = "0.18", features = [
    "enable_reqwest",
    "hmac_openssl",
], default-features = false }
azure_storage_blobs = { version = "0.18", features = [
    "enable_reqwest",
    "hmac_openssl",
], default-features = false }
backtrace = { version = "0.3.9", default-features = true }
base64 = { version = "0.13.0", default-features = true }
bigdecimal = { version = "0.2.2", default-features = true }
bincode = { version = "1.3", default-features = true }
bitfield = { version = "0.13.2", default-features = true }
bitflags = { version = "1.3.2", default-features = true }
boolinator = { version = "2.4.0", default-features = true }
bstr = { version = "0.2.17", default-features = true }
bytemuck = { version = "1.14.3", default-features = true }
byteorder = { version = "1.5.0", default-features = true }
bytes = { version = "1.11.1", default-features = true }
cargo_metadata = { version = "0.9", default-features = true }
cc = { version = "1.0", default-features = true }
charabia = { version = "0.9.6", features = [
    "chinese-segmentation",
    "german-segmentation",
    "greek",
    "hebrew",
    "japanese",
    "khmer",
    "korean",
    "swedish-recomposition",
    "thai",
    "turkish",
    "vietnamese",
], default-features = false }
chrono = { version = "=0.4.34", default-features = true }
chrono-tz = { version = "0.5.1", default-features = true }
clara_fts = { path = "components/clara_fts", default-features = true }
colored = { version = "2.0", default-features = true }
cpu-time = { version = "1.0.0", default-features = true }
crc32fast = { version = "1.4.0", default-features = true }
crc64fast = { version = "0.1", default-features = true }
criterion-cpu-time = { version = "0.1", default-features = true }
crossbeam-queue = { version = "0.3.12", default-features = true }
crossbeam-skiplist = { version = "0.1.3", default-features = true }
crossbeam-utils = { version = "0.8.0", default-features = true }
darling = { version = "0.10", default-features = true }
dashmap = { version = "5.0", default-features = true }
derivative = { version = "2", default-features = true }
derive_more = { version = "0.99.3", default-features = true }
dyn-clone = { version = "1.0", default-features = true }
encoding_rs = { git = "https://github.com/xiongjiwei/encoding_rs.git", rev = "68e0bc5a72a37a78228d80cd98047326559cf43c", default-features = true }
etcd-client = { git = "https://github.com/pingcap/etcd-client", rev = "14a6f8731f1890d5fd2f6e16a9f0d0a306b0599e", features = [
    "pub-response-field",
    "tls-openssl-vendored",
], default-features = true }
fail = { version = "0.5", default-features = true }
farmhash = { version = "1.1.5", default-features = true }
fastrand = { version = "2.3.0", default-features = true }
ffi-support = { version = "0.4.2", default-features = true }
filetime = { version = "0.2", default-features = true }
flate2 = { version = "1.1.0", features = ["zlib"], default-features = false }
fs2 = { version = "0.4", default-features = true }
fslock = { version = "0.1.7", default-features = true }
futures = { version = "0.3.15", features = [
    "async-await",
    "compat",
    "thread-pool",
], default-features = true }
futures-executor = { version = "0.3.1", default-features = true }
futures-io = { version = "0.3", default-features = true }
futures-timer = { version = "3.0", default-features = true }
futures-util = { version = "0.3.1", features = [
    "async-await",
    "io",
    "std",
], default-features = false }
fuzz-targets = { path = "fuzz/targets", default-features = true }
fxhash = { version = "0.2.1", default-features = true }
gag = { version = "1.0", default-features = true }
getset = { version = "0.1", default-features = true }
glob = { version = "0.3", default-features = true }
heck = { version = "0.3", default-features = true }
hex = { version = "0.4.2", default-features = true }
hmac = { version = "0.12", default-features = true }
http = { version = "0.2.9", default-features = true }
http1 = { package = "http", version = "1", default-features = true }
http-body = { version = "1", default-features = true }
hyper = { version = "0.14.26", features = [
    "full",
    "runtime",
], default-features = true }
hyper1 = { package = "hyper", version = "1", default-features = false }
hyper-openssl = { version = "0.9", default-features = true }
hyper-rustls = { version = "=0.27.7", features = [
    "http1",
    "logging",
    "ring",
    "tls12",
], default-features = false }
hyper-util = { version = "0.1", features = [
    "client-legacy",
    "http1",
    "tokio",
], default-features = false }
http-body-util = { version = "0.1", default-features = true }
hyper-tls = { version = "0.5.0", default-features = true }
itertools = { version = "0.10", default-features = true }
jemalloc_pprof = { version = "0.8.2", features = [
    "flamegraph",
], default-features = true }
k8s-openapi = { version = "0.20.0", features = [
    "v1_26",
], default-features = true }
keyed_priority_queue = { version = "0.4", default-features = true }
kube = { version = "0.87.2", features = [
    "client",
    "derive",
    "openssl-tls",
    "runtime",
    "ws",
], default-features = false }
lazy_static = { version = "1.5.0", default-features = true }
libc = { version = "0.2", default-features = true }
libfuzzer-sys = { version = "0.3.1", default-features = true }
libloading = { version = "0.7.0", default-features = true }
load_data = { path = "components/load_data", default-features = true }
log = { version = "0.4.19", features = [
    "max_level_trace",
    "release_max_level_debug",
], default-features = true }
lz4 = { version = "1.24", default-features = true }
maligned = { version = "0.2.1", default-features = true }
match-template = { version = "0.0.1", default-features = true }
matches = { version = "0.1.8", default-features = true }
md5 = { version = "0.7.0", default-features = true }
memmap2 = { version = "0.9.5", default-features = true }
mimalloc = { version = "0.1.39", default-features = true }
mime = { version = "0.3.13", default-features = true }
mockall = { version = "0.13", default-features = true }
more-asserts = { version = "0.2", default-features = true }
mur3 = { version = "0.1", default-features = true }
nix = { version = "0.24", default-features = true }
notify = { version = "4", default-features = true }
num = { version = "0.3", default-features = false }
num-derive = { version = "0.4", default-features = true }
num-traits = { version = "0.2.14", default-features = true }
num_cpus = { version = "1", default-features = true }
oauth2 = { version = "4.4", default-features = false }
once_cell = { version = "1.20.2", default-features = true }
online_config_derive = { path = "components/online_config/online_config_derive", default-features = true }
openssl = { version = "0.10", default-features = true }
papaya = { version = "0.2.3", default-features = true }
parking_lot = { version = "0.12.5", default-features = true }
paste = { version = "1.0.15", default-features = true }
pdqselect = { version = "0.1", default-features = true }
pin-project = { version = "1.0", default-features = true }
pnet_datalink = { version = "0.23", default-features = true }
pprof = { version = "0.15", default-features = false, features = [
    "flamegraph",
    "frame-pointer",
    "protobuf-codec",
] }
proc-macro2 = { version = "1", default-features = true }
prometheus = { version = "0.13", features = [
    "nightly",
    "push",
], default-features = true }
prometheus-static-metric = { version = "0.5", default-features = true }
proptest = { version = "1.4", default-features = true }
prost = { version = "0.13", default-features = true }
prost-build = { version = "0.13.4", default-features = true }
protobuf = { version = "2.8", features = ["bytes"], default-features = true }
protobuf-codegen-pure = { version = "2.8", default-features = true }
quick-xml = { version = "0.23.1", features = [
    "serialize",
], default-features = true }
quick_cache = { version = "0.6.14", default-features = true }
quote = { version = "1", default-features = true }
raft-proto = { version = "0.7.0", default-features = false }
rand = { version = "0.8", default-features = true }
rand_isaac = { version = "0.3", default-features = true }
rand_xorshift = { version = "0.3", default-features = true }
regex = { version = "1.9.5", default-features = true }
reqwest = { version = "0.11", features = [
    "blocking",
    "json",
], default-features = true }
rev_lines = { version = "0.2.1", default-features = true }
rstest = { version = "0.18", default-features = true }
rust-ini = { version = "0.14.0", default-features = true }
rustls = { version = "0.23", features = [
    "logging",
    "ring",
    "std",
    "tls12",
], default-features = false }
rustls-pemfile = { version = "2.2.0", default-features = true }
safemem = { version = "0.3", default-features = false }
seahash = { version = "4.1.0", default-features = true }
seize = { version = "0.5", default-features = true }
semver = { version = "1.0", default-features = true }
snap = { version = "1.1", default-features = true }
serde = { version = "1.0.194", features = ["derive"], default-features = true }
serde_derive = { version = "1.0", default-features = true }
serde_ignored = { version = "0.1", default-features = true }
serde_json = { version = "1.0.140", features = [
    "preserve_order",
    "arbitrary_precision",
    "raw_value",
], default-features = true }
sha1 = { version = "0.10.6", default-features = true }
serde_repr = { version = "0.1", default-features = true }
serde_with = { version = "1.4", default-features = true }
serial_test = { version = "3.0", default-features = true }
simsimd = { version = "6.2.3", default-features = true }
slab = { version = "0.4", default-features = true }
slog-async = { version = "2.3", default-features = true }
slog-envlogger = { version = "2.2.0", default-features = true }
slog-json = { version = "2.3", default-features = true }
slog-term = { version = "2.4", default-features = true }
slog_derive = { version = "0.2", default-features = true }
smallvec = { version = "1.4", default-features = true }
snmalloc-rs = { version = "0.2", default-features = true }
sqlx = { version = "0.9.0", features = [
    "bigdecimal",
    "chrono",
    "mysql",
    "runtime-tokio",
    "tls-rustls-ring-webpki",
], default-features = true }
stable_deref_trait = { version = "1.2.0", default-features = true }
static_assertions = { version = "1.0", features = [
    "nightly",
], default-features = true }
structopt = { version = "0.3", default-features = true }
strum_macros = { version = "0.27", default-features = true }
syn = { version = "1", features = [
    "extra-traits",
    "full",
], default-features = true }
sync_wrapper = { version = "0.1.1", default-features = true }
sysinfo = { version = "0.26", default-features = true }
tame-gcs = { version = "0.10", features = [
    "async-multipart",
], default-features = true }
tame-oauth = { version = "0.10.0", default-features = true }
tantivy = { version = "0.22.1", default-features = true }
tcmalloc = { version = "0.3.0", features = [
    "bundled",
], default-features = true }
tempfile = { version = "3.3.0", default-features = true }
thiserror = { version = "1.0.44", default-features = true }
tikv-jemalloc-ctl = { version = "0.6.0", features = [
    "stats",
], default-features = true }
tikv-jemalloc-sys = { version = "0.6.0", features = [
    "stats",
], default-features = true }
tikv-jemallocator = { version = "0.6.0", features = [
    "stats",
    "unprefixed_malloc_on_supported_platforms",
], default-features = true }
time = { version = "0.2.23", default-features = true }
tokio = { version = "=1.41.1", features = [
    "fs",
    "full",
    "macros",
    "net",
    "process",
    "rt",
    "rt-multi-thread",
    "sync",
    "time",
], default-features = true }
tokio-executor = { version = "0.1", default-features = true }
tokio-metrics = { version = "0.4.0", default-features = true }
tokio-openssl = { version = "0.6", default-features = true }
tokio-rustls = { version = "0.26", features = [
    "logging",
    "ring",
    "tls12",
], default-features = false }
tokio-stream = { version = "0.1", default-features = true }
tokio-util = { version = "0.7.8", features = [
    "compat",
], default-features = true }
toml = { version = "0.5", default-features = true }
tonic = { version = "0.9.2", default-features = true }
twoway = { version = "0.2.0", default-features = true }
twox-hash = { version = "1.6", default-features = true }
url = { version = "2.5.4", default-features = true }
usearch = { version = "2.15", default-features = true }
utime = { version = "0.2", default-features = true }
uuid = { version = "0.8.1", features = [
    "serde",
    "v4",
], default-features = true }
vlog = { version = "0.1.4", default-features = true }
walkdir = { version = "2", default-features = true }
xorf = { git = "https://github.com/youjiali1995/xorf", branch = "0.8.0-custom-serde", features = [
    "serde",
], default-features = true }
zipf = { version = "7.0", default-features = true }
zstd-sys = { version = "2.0.9", default-features = true }
zstd = { version = "0.13", default-features = true }
xxhash-rust = { version = "0.8", features = ["xxh3"], default-features = false }

[profile.dev.package.grpcio-sys]
debug = false
opt-level = 1

[profile.dev.package.tests]
debug = 1
opt-level = 1

[profile.dev]
opt-level = 0
debug = 0
codegen-units = 4
lto = false
incremental = true
panic = 'unwind'
debug-assertions = true
overflow-checks = false
rpath = false

[profile.release]
opt-level = 3
debug = false
codegen-units = 1
lto = "thin"
incremental = false
panic = 'unwind'
debug-assertions = false
overflow-checks = false
rpath = false

[profile.test]
opt-level = 0
debug = 0
codegen-units = 16
lto = false
incremental = true
debug-assertions = true
overflow-checks = true
rpath = false

[profile.random-test]
inherits = "release"
codegen-units = 16
incremental = true
debug-assertions = true
overflow-checks = true

# The benchmark profile is identical to release, except that lto = false
[profile.bench]
opt-level = 3
debug = false
codegen-units = 16
lto = 'thin'
incremental = true
debug-assertions = false
overflow-checks = false
rpath = false

# Ref: https://proptest-rs.github.io/proptest/proptest/tips-and-best-practices.html#setting-opt-level
[profile.test.package.proptest]
opt-level = 3

[profile.test.package.rand_chacha]
opt-level = 3
