# 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",
]
uuid = ["limbo_uuid/static"]
io_uring = ["dep:io-uring", "rustix/io_uring"]
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 = "*", default-features = false }
libloading = "0.8.6"

[dependencies]
limbo_ext = { path = "../extensions/core" }
cfg_block = "0.1.1"
fallible-iterator = "0.3.0"
hex = "0.4.3"
libc = "0.2.155"
log = "0.4.20"
sqlite3-parser = { path = "../vendored/sqlite3-parser" }
thiserror = "1.0.61"
getrandom = { version = "0.2.15", features = ["js"] }
regex = "1.11.1"
regex-syntax = { version = "0.8.5", default-features = false, features = ["unicode"] }
chrono = "0.4.38"
julian_day_converter = "0.3.2"
jsonb = { version = "0.4.4", optional = true }
indexmap = { version = "2.2.6", features = ["serde"] }
serde = { version = "1.0", features = ["derive"] }
pest = { version = "2.0", optional = true }
pest_derive = { version = "2.0", optional = true }
rand = "0.8.5"
limbo_macros = { path = "../macros" }
limbo_uuid = { path = "../extensions/uuid", optional = true, features = ["static"] }
limbo_regexp = { path = "../extensions/regexp", optional = true, features = ["static"] }
limbo_percentile = { path = "../extensions/percentile", optional = true, features = ["static"] }
limbo_time = { path = "../extensions/time", optional = true, features = ["static"] }
limbo_crypto = { path = "../extensions/crypto", optional = true, features = ["static"] }
limbo_series = { path = "../extensions/series", optional = true, features = ["static"] }
miette = "7.4.0"
strum = "0.26"
parking_lot = "0.12.3"
tracing = "0.1.41"
crossbeam-skiplist = "0.1.3"
ryu = "1.0.19"

[build-dependencies]
chrono = "0.4.38"
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
