# Copyright 2023 the Limbo authors. All rights reserved. MIT license.

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

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

[features]
default = ["fs", "json", "uuid", "time"]
fs = []
json = ["dep:jsonb", "dep:pest", "dep:pest_derive", "dep:serde", "dep:indexmap"]
uuid = ["limbo_uuid/static"]
io_uring = ["dep:io-uring", "rustix/io_uring", "dep:libc"]
percentile = ["limbo_percentile/static"]
regexp = ["limbo_regexp/static"]
time = ["limbo_time/static"]
crypto = ["limbo_crypto/static"]
series = ["limbo_series/static"]

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

[target.'cfg(target_family = "unix")'.dependencies]
polling = "3.7.2"
rustix = "0.38.34"

[target.'cfg(not(target_family = "wasm"))'.dependencies]
mimalloc = { version = "0.1", default-features = false }
libloading = "0.8.6"

[dependencies]
limbo_ext = { workspace = true }
cfg_block = "0.1.1"
fallible-iterator = "0.3.0"
hex = "0.4.3"
libc = { version = "0.2.155", optional = true }
limbo_sqlite3_parser = { workspace = true }
thiserror = "1.0.61"
getrandom = { version = "0.2.15" }
regex = "1.11.1"
regex-syntax = { version = "0.8.5", default-features = false, features = ["unicode"] }
chrono = { version = "0.4.38", default-features = false, features = ["clock"] }
julian_day_converter = "0.4.4"
jsonb = { version = "0.4.4", optional = true }
indexmap = { version = "2.2.6", features = ["serde"], optional = true }
serde = { version = "1.0", features = ["derive"], optional = true }
pest = { version = "2.0", optional = true }
pest_derive = { version = "2.0", optional = true }
rand = "0.8.5"
limbo_macros = { workspace = true }
limbo_uuid = { workspace = true, optional = true, features = ["static"] }
limbo_regexp = { workspace = true, optional = true, features = ["static"] }
limbo_percentile = { workspace = true, optional = true, features = ["static"] }
limbo_time = { workspace = true, optional = true, features = ["static"] }
limbo_crypto = { workspace = true, optional = true, features = ["static"] }
limbo_series = { workspace = true, optional = true, features = ["static"] }
miette = "7.4.0"
strum = "0.26"
parking_lot = "0.12.3"
tracing = { version = "0.1.41", default-features = false }
crossbeam-skiplist = "0.1.3"
ryu = "1.0.19"

[build-dependencies]
chrono = { version = "0.4.38", 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]
criterion = { version = "0.5", features = [
    "html_reports",
    "async",
    "async_futures",
] }
rstest = "0.18.2"
rusqlite = "0.29.0"
tempfile = "3.8.0"
quickcheck = { version = "1.0", default-features = false }
quickcheck_macros = { version = "1.0", default-features = false }
rand = "0.8.5"  # Required for quickcheck
rand_chacha = "0.9.0"
env_logger = "0.11.6"

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

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