dora-node-api 1.0.0

`dora` goal is to be a low latency, composable, and distributed data flow.
Documentation
[package]
name = "dora-node-api"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
documentation.workspace = true
readme.workspace = true
description.workspace = true
license.workspace = true
repository.workspace = true

[features]
default = ["tracing", "metrics"]
tracing = ["dep:dora-tracing", "dep:opentelemetry"]
metrics = ["dep:dora-metrics"]
# Arrow major re-exports. See docs/plan-arrow-version-decoupling.md and the
# support-window policy in docs/api-rust.md.
#
# Neither is on by default: `DoraArray` and `IntoArrow` keep the common node
# path free of Arrow types, so a node that never names an Arrow type never
# needs a feature. Adding a major later is additive; removing one is breaking.
#
# `arrow-v59` is dora's *internal* major and pulls no extra dependency — it
# re-exports the copy of Arrow 59 dora already links. Only majors other than
# the internal one get an aliased optional dependency.
arrow-v58 = ["dep:arrow58", "dora-arrow-convert/arrow-v58"]
arrow-v59 = ["dora-arrow-convert/arrow-v59"]

[dependencies]
dora-core = { workspace = true, features = ["zenoh"] }
dora-message = { workspace = true }
eyre = { workspace = true }
serde_yaml = { workspace = true }
tracing = { workspace = true }
flume = { workspace = true }
zenoh = { workspace = true }
zenoh-ext = { workspace = true }
dora-tracing = { workspace = true, optional = true }
dora-metrics = { workspace = true, optional = true }
opentelemetry = { version = "0.32.0", optional = true }
arrow = { workspace = true, features = ["ipc"] }
arrow58 = { package = "arrow", version = "58", optional = true, default-features = false, features = ["ffi"] }
# Needed to hand-build the Arrow IPC RecordBatch flatbuffer header in
# `arrow_utils::ipc_encode` (the 1-copy fast-path encoder). Must stay compatible
# with the `flatbuffers` version arrow-ipc's generated `gen` types are built
# against (currently 25.x); cargo unifies them to a single resolved version.
flatbuffers = "25"
futures = { workspace = true }
futures-concurrency = "7.7.1"
futures-timer = "3.0.4"
dora-arrow-convert = { workspace = true }
aligned-vec = "0.6.4"
serde_json = { workspace = true, features = ["preserve_order"] }
tokio = { workspace = true, features = ["rt-multi-thread", "time", "macros", "sync"] }
inquire = { workspace = true, features = ["console"] }
arrow-json = { workspace = true }
arrow-schema = { workspace = true }
chrono = { version = "0.4", features = ["serde"] }
colored = { workspace = true }
is-terminal = "0.4.17"
thiserror = { workspace = true }
uuid = { workspace = true }

# Process-group signalling for the `dora run` orphan guard (`orphan_guard.rs`).
# Unix-only: the mechanism is `getppid`/`killpg`, which Windows has no
# equivalent of.
[target.'cfg(unix)'.dependencies]
libc = "0.2"

[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
# The bench and `tests/copy_count.rs` exercise the *public* encoder surface,
# which is now `DoraArray`-typed. They build the payload arrays themselves, so
# they need the Arrow 59 accessors — enabled here rather than on the library so
# the shipped `dora-node-api` keeps `default = []` for the Arrow features.
dora-arrow-convert = { workspace = true, features = ["arrow-v59"] }

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