# Copyright 2023-2025 the Turso authors. All rights reserved. MIT license.

[package]
name = "turso_core"
version.workspace = true
authors.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "The Turso database library"

[lib]
name = "turso_core"
path = "lib.rs"

[features]
default = ["fs", "uuid", "time", "json", "series", "encryption"]
antithesis = ["dep:antithesis_sdk", "antithesis_sdk?/full"]
tracing_release = ["tracing/release_max_level_info"]
conn_raw_api = []
fs = ["turso_ext/vfs"]
json = []
uuid = ["dep:uuid"]
io_uring = ["dep:io-uring", "rustix/io_uring"]
time = []
fuzz = []
omit_autovacuum = []
simulator = ["fuzz", "serde"]
serde = ["dep:serde"]
series = []
encryption = []
checksum = []
cli_only = []
test_helper = []

[target.'cfg(target_os = "linux")'.dependencies]
io-uring = { version = "0.7.5", optional = true }
libc = { version = "0.2.172" }

[target.'cfg(target_family = "unix")'.dependencies]
polling = "3.7.4"
rustix = { version = "1.0.5", features = ["fs"] }
libc = { version = "0.2.172" }

[target.'cfg(not(target_family = "wasm"))'.dependencies]
libloading = "0.8.6"

[dependencies]
antithesis_sdk = { workspace = true, optional = true }
turso_ext = { workspace = true, features = ["core_only"] }
cfg_block = "0.1.1"
fallible-iterator = { workspace = true }
hex = { workspace = true }
thiserror = { workspace = true }
regex = { workspace = true }
regex-syntax = { workspace = true, default-features = false, features = [
    "unicode",
] }
chrono = { workspace = true, default-features = false, features = ["clock"] }
rand = { workspace = true }
libm = "0.2"
turso_macros = { workspace = true }
miette = { workspace = true }
strum = { workspace = true }
parking_lot = { workspace = true }
crossbeam-skiplist = "0.1.3"
tracing = { workspace = true }
ryu = "1.0.19"
uncased = "0.9.10"
strum_macros = { workspace = true }
bitflags = { workspace = true }
serde = { workspace = true, optional = true, features = ["derive"] }
paste = "1.0.15"
uuid = { version = "1.11.0", features = ["v4", "v5", "v7"], optional = true }
tempfile = { workspace = true }
pack1 = { version = "1.0.0", features = ["bytemuck"] }
bytemuck = "1.23.1"
aes-gcm = { version = "0.10.3"}
aes = { version = "0.8.4"}
turso_parser = { workspace = true }
aegis = "0.9.0"
twox-hash = "2.1.1"
intrusive-collections = "0.9.7"
roaring = "0.11.2"
simsimd = "6.5.3"
arc-swap = "1.7"
rustc-hash = "2.0"

[build-dependencies]
chrono = { workspace = true, default-features = false }
built = { version = "0.7.5", features = ["git2", "chrono"] }

[target.'cfg(not(target_family = "windows"))'.dev-dependencies]
pprof = { version = "0.14.0", features = ["criterion", "flamegraph"] }

[dev-dependencies]
memory-stats = "1.2.0"
criterion = { workspace = true, features = [
    "html_reports",
    "async",
    "async_futures",
] }
rstest = "0.18.2"
rusqlite = { workspace = true, features = ["series"] }
quickcheck = { version = "1.0", default-features = false }
quickcheck_macros = { version = "1.0", default-features = false }
rand_chacha = { workspace = true }
env_logger = { workspace = true }
test-log = { version = "0.2.17", features = ["trace"] }
sorted-vec = "0.8.6"
mimalloc = { workspace = true, default-features = false }

[[bench]]
name = "benchmark"
harness = false

[[bench]]
name = "mvcc_benchmark"
harness = false

[[bench]]
name = "json_benchmark"
harness = false

[[bench]]
name = "tpc_h_benchmark"
harness = false
