Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/knut

xtask/Cargo.toml

[package]
name = "xtask"
description = "knut workspace task runner — home of the nornir bench suite"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
publish = false

[dependencies]
anyhow = { workspace = true }
# Optional: only compiled with the `skade` feature, for the Iceberg-export
# bencher. Keeps the default bench build free of skade's arrow-57/iceberg tree.
graphar-flight = { path = "../crates/graphar-flight", version = "0.3.0", optional = true }
# Optional: only compiled with the `skade` feature, for the `knut.delta_ingest`
# bencher (writes the Iceberg snapshots the `IcebergSource` then delta-scans).
# Regular (not dev) dep because optional dev-deps aren't allowed and the bencher
# is an example. Resolved to the local checkout by the workspace patch.
skade = { version = "0.7.0", default-features = false, optional = true }

[features]
default = []
# Add the `knut.skade_iceberg_export` + `knut.delta_ingest` benchers (the
# graph → Iceberg bridge / fast_append, and the Iceberg → FalkorDB delta-vs-full
# ingest, both via skade). Run:
# `cargo run -p xtask --example nornir-bench --features skade`.
# `knut-bifrost/skade` gives the bencher the `IcebergSource`; the direct `skade`
# dev-dep below gives it the `Warehouse` to write the Iceberg snapshots.
skade = ["dep:graphar-flight", "graphar-flight/skade", "dep:skade", "knut-bifrost/skade"]
# Add the `knut.doris_stream_load` arm — the encode/chunk/label half of the CDC
# delivery path, against an in-process fake transport (no Doris cluster). Run:
# `cargo run -p xtask --example nornir-bench --features doris`.
doris = ["knut-bifrost/doris"]

[dev-dependencies]
# From crates.io, NOT the ../../nornir sibling checkout. The path form put a
# directory two levels above the repo root on the resolution path (so a bare
# clone could not resolve the workspace at all) and coupled `cargo check
# --workspace --all-targets` to whatever unreleased state that checkout happened
# to be in — it was red for a while on an import the sibling had dropped.
#
# 2026-10-14: the harness only — `nornir-bench` (register_bench!, Bencher,
# BenchResult, run_main_json), not the whole `nornir` crate. nornir 0.5.7 no
# longer builds against today's registry (its skade-katalog/skade iceberg types
# disagree), which broke `cargo check --workspace --all-targets` for knut.
nornir-bench = "0.2"
graphar = { path = "../crates/graphar" }
graphar-falkordb = { path = "../crates/graphar-falkordb" }
# The `knut.falkor_decode` arm: RESP reply -> Arrow RecordBatch, DB-free. No
# default features (`bin` would pull the skidbladnir service stack the bench
# never runs); the optional regular dep above adds `skade` when that feature is on.
graphar-flight = { path = "../crates/graphar-flight", default-features = false }
# Only for the `knut.doput_dispatch` fixture-gated arm: wipe the per-arm graph
# between runs so no arm pays another's state. Same version the loader uses.
redis = { workspace = true }
knut-bifrost = { path = "../crates/knut-bifrost" }
# The Þund native backend for the `knut.thund_watermark_drop` bench arm
# (recompute vs incremental). `native` pulls the DataFusion engine — 55, the same
# tree the nornir bench harness links.
knut-thund = { path = "../crates/knut-thund", features = ["native"] }
# DataFusion's own arrow: the bench builds the RecordBatch micro-batches it feeds
# to `NativeBackend::with_stream_input`, so they must be the SAME arrow major
# datafusion re-exports. 54 → 55 on 2026-08-24, together with deleting the
# `[patch.crates-io] datafusion` git bridge at the workspace root: datafusion 55
# is the arrow-59 line, so both halves move at once or the graph carries two
# `arrow_array` majors again — which is the exact failure the patch existed for.
datafusion = "55"
arrow-array = { workspace = true }
arrow-schema = { workspace = true }
serde_json = { workspace = true }
tokio = { workspace = true }
async-trait = "0.1"
tempfile = "3"

# `cargo bench -p xtask` runs the same suite as `nornir bench run` (the
# examples/nornir-bench.rs source), emitting nornir's BenchRun JSON.
[[bench]]
name = "nornir"
harness = false