[package]
name = "dbsp"
description = "Continuous streaming analytics engine"
categories = ["algorithms", "data-structures"]
readme = "README.md"
publish = true
keywords = { workspace = true }
edition = "2024"
version = { workspace = true }
homepage = { workspace = true }
repository = { workspace = true }
license = { workspace = true }
authors = { workspace = true }
rust-version = { workspace = true }

[package.metadata.release]
release = true

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[features]
default = ["backend-mode"]

# For use with compiler-generated code.
# See comments in `mono.rs`
backend-mode = []

[dependencies]
num = { workspace = true }
anyhow = { workspace = true }
petgraph = { workspace = true }
typedmap = { workspace = true, features = ["dashmap"] }
crossbeam-utils = { workspace = true }
once_cell = { workspace = true }
hashbrown = { workspace = true }
csv = { workspace = true }
impl-trait-for-tuples = { workspace = true }
itertools = { workspace = true }
textwrap = { workspace = true }
ordered-float = { workspace = true, features = ["rkyv_64"] }
xxhash-rust = { workspace = true, features = ["xxh3"] }
crossbeam = { workspace = true }
arc-swap = { workspace = true }
mimalloc-rust-sys = { workspace = true }
rand = { workspace = true }
rkyv = { workspace = true, features = ["std", "size_64", "validation", "uuid"] }
size-of = { workspace = true, features = [ "hashbrown", "xxhash-xxh3" ] }
tokio-util = { workspace = true }
futures = { workspace = true }
tokio = { workspace = true, features = ["macros", "rt", "rt-multi-thread"] }
paste = { workspace = true }
seq-macro = { workspace = true }
derive_more = { workspace = true, features = ["add", "add_assign", "sum", "not", "from", "debug"] }
dyn-clone = { workspace = true }
rand_chacha = { workspace = true }
tempfile = { workspace = true }
binrw = { workspace = true }
crc32c = { workspace = true }
num-derive = { workspace = true }
num-format = { workspace = true }
num-traits = { workspace = true }
thiserror = { workspace = true }
uuid = { workspace = true, features = ["v7", "serde"] }
clap = { workspace = true, features = ["wrap_help"] }
fdlimit = { workspace = true }
metrics = { workspace = true }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
ptr_meta = { workspace = true }
feldera-samply = { workspace = true }
feldera-types = { workspace = true }
feldera-macros = { workspace = true }
libc = { workspace = true }
static_assertions = { workspace = true }
zip = { workspace = true }
ouroboros = { workspace = true }
tracing = { workspace = true }
snap = { workspace = true }
enum-map = { workspace = true }
fastbloom = { workspace = true }
roaring = { workspace = true }
core_affinity = { workspace = true }
indexmap = { workspace = true }
feldera-storage = { workspace = true }
inventory = { workspace = true }
time = { workspace = true, features = [
    "formatting",
    "macros",
    "serde",
    "serde-human-readable",
] }
feldera-ir = { workspace = true }
smallvec = { workspace = true }
async-stream = { workspace = true }
futures-util = { workspace = true }
feldera-buffer-cache = { workspace = true }
memory-stats = { workspace = true }
serde_json_path_to_error = { workspace = true }
flate2 = { workspace = true }
nix = { workspace = true, features = ["process", "time"] }
thread-id = { workspace = true }
pin-project-lite = { workspace = true }

[dev-dependencies]
rand = { workspace = true }
rand_distr = { workspace = true }
proptest-derive = { workspace = true }
proptest = { workspace = true }
proptest-state-machine = { workspace = true }
futures = { workspace = true, features = ["executor"] }
pretty_assertions = { workspace = true }
csv = { workspace = true }
tar = { workspace = true }
zstd = { workspace = true }
criterion = { workspace = true }
pprof = { workspace = true, features = ["flamegraph", "criterion"] }
rand_xoshiro = { workspace = true }
indicatif = { workspace = true }
reqwest = { workspace = true, features = ["blocking"] }
chrono = { workspace = true, features = ["serde"] }
tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
tarpc = { workspace = true, features = ["full"] }

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

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

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

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

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

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

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

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

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

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

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

[[example]]
name = "orgchart"

[[example]]
name = "degrees"

[[example]]
name = "tutorial1"
path = "examples/tutorial/tutorial1.rs"

[[example]]
name = "tutorial2"
path = "examples/tutorial/tutorial2.rs"

[[example]]
name = "tutorial3"
path = "examples/tutorial/tutorial3.rs"

[[example]]
name = "tutorial4"
path = "examples/tutorial/tutorial4.rs"

[[example]]
name = "tutorial5"
path = "examples/tutorial/tutorial5.rs"

[[example]]
name = "tutorial6"
path = "examples/tutorial/tutorial6.rs"

[[example]]
name = "tutorial7"
path = "examples/tutorial/tutorial7.rs"

[[example]]
name = "tutorial8"
path = "examples/tutorial/tutorial8.rs"

[[example]]
name = "tutorial9"
path = "examples/tutorial/tutorial9.rs"

[[example]]
name = "tutorial10"
path = "examples/tutorial/tutorial10.rs"

[[example]]
name = "tutorial11"
path = "examples/tutorial/tutorial11.rs"

[[example]]
name = "coord"
path = "examples/dist/coord.rs"

[[example]]
name = "pool"
path = "examples/dist/pool.rs"
