[package]
edition = "2024"
name = "wingfoil"
version = "4.0.0"
authors = ["wingfoil@wingfoil.io"]
build = false
publish = [
"wingfoil",
"crates-io",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "graph based stream processing framework"
homepage = "https://github.com/wingfoil-io/wingfoil/"
documentation = "https://docs.rs/wingfoil"
readme = "README.md"
keywords = [
"graph",
"stream",
"dag",
"hft",
"trading",
]
license = "Apache-2.0"
[package.metadata.docs.rs]
scrape-examples = true
[features]
async = [
"dep:tokio",
"dep:futures",
"dep:async-stream",
"dep:futures-util",
"tokio/time",
]
csv = ["dep:csv"]
default = ["async"]
dynamic-graph-beta = []
etcd = [
"dep:etcd-client",
"async",
]
etcd-integration-test = [
"etcd",
"dep:testcontainers",
]
fix = [
"dep:fefix",
"dep:rustls",
"dep:webpki-roots",
]
fix-integration-test = ["fix"]
full = [
"async",
"csv",
"kdb",
"zmq",
"etcd",
"dynamic-graph-beta",
"instrument-default",
"iceoryx2-beta",
"prometheus",
"otlp",
"fix",
]
iceoryx2-beta = ["dep:iceoryx2"]
iceoryx2-integration-test = [
"iceoryx2-beta",
"dep:testcontainers",
]
instrument-all = [
"instrument-default",
"instrument-cycle-node",
]
instrument-apply-nodes = ["tracing"]
instrument-cycle = ["tracing"]
instrument-cycle-node = ["tracing"]
instrument-default = [
"instrument-run",
"instrument-cycle",
"instrument-apply-nodes",
"instrument-initialise",
]
instrument-initialise = ["tracing"]
instrument-run = ["tracing"]
kdb = [
"dep:kdb-plus-fixed",
"dep:sha2",
"dep:bincode",
"async",
"tokio/fs",
]
kdb-integration-test = ["kdb"]
otlp = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:opentelemetry-otlp",
"async",
]
otlp-integration-test = [
"otlp",
"dep:testcontainers",
]
prometheus = []
prometheus-integration-test = [
"prometheus",
"dep:reqwest",
]
tracing = ["dep:tracing"]
zmq = [
"dep:zmq",
"dep:bincode",
]
zmq-cross-lang-etcd-test = [
"zmq-cross-lang-test",
"zmq-etcd-integration-test",
]
zmq-cross-lang-test = ["zmq-integration-test"]
zmq-etcd-integration-test = [
"zmq",
"etcd",
"dep:testcontainers",
]
zmq-integration-test = ["zmq"]
[lib]
name = "wingfoil"
path = "src/lib.rs"
[[example]]
name = "async"
path = "examples/async/main.rs"
required-features = ["async"]
[[example]]
name = "breadth_first"
path = "examples/breadth_first/main.rs"
[[example]]
name = "demux"
path = "examples/dynamic/demux/main.rs"
[[example]]
name = "dynamic-group"
path = "examples/dynamic/dynamic-group/main.rs"
required-features = ["dynamic-graph-beta"]
[[example]]
name = "dynamic-manual"
path = "examples/dynamic/dynamic-manual/main.rs"
required-features = ["dynamic-graph-beta"]
[[example]]
name = "etcd"
path = "examples/etcd/main.rs"
required-features = ["etcd"]
[[example]]
name = "fix_client"
path = "examples/fix/fix_client.rs"
required-features = ["fix"]
[[example]]
name = "fix_echo_server"
path = "examples/fix/fix_echo_server.rs"
required-features = ["fix"]
[[example]]
name = "fix_loopback"
path = "examples/fix/fix_loopback.rs"
required-features = ["fix"]
[[example]]
name = "iceoryx2_pub"
path = "examples/iceoryx2/pub.rs"
required-features = ["iceoryx2-beta"]
[[example]]
name = "iceoryx2_sub"
path = "examples/iceoryx2/sub.rs"
required-features = ["iceoryx2-beta"]
[[example]]
name = "kdb_read"
path = "examples/kdb/read/main.rs"
required-features = ["kdb"]
[[example]]
name = "kdb_read_cached"
path = "examples/kdb/read_cached/main.rs"
required-features = ["kdb"]
[[example]]
name = "kdb_round_trip"
path = "examples/kdb/round_trip/main.rs"
required-features = ["kdb"]
[[example]]
name = "lmax_demo"
path = "examples/fix/lmax_demo.rs"
required-features = ["fix"]
[[example]]
name = "lmax_instruments"
path = "examples/fix/lmax_instruments.rs"
required-features = ["fix"]
[[example]]
name = "order_book"
path = "examples/order_book/main.rs"
required-features = ["csv"]
[[example]]
name = "otlp"
path = "examples/telemetry/otlp/main.rs"
required-features = [
"otlp",
"prometheus",
]
[[example]]
name = "prometheus"
path = "examples/telemetry/prometheus/main.rs"
required-features = ["prometheus"]
[[example]]
name = "run_mode"
path = "examples/run_mode/main.rs"
[[example]]
name = "threading"
path = "examples/threading/main.rs"
[[example]]
name = "tracing"
path = "examples/tracing/main.rs"
[[example]]
name = "zmq_direct_pub"
path = "examples/zmq/direct/zmq_pub.rs"
required-features = ["zmq"]
[[example]]
name = "zmq_direct_sub"
path = "examples/zmq/direct/zmq_sub.rs"
required-features = ["zmq"]
[[example]]
name = "zmq_etcd_pub"
path = "examples/zmq/etcd/zmq_pub.rs"
required-features = [
"zmq",
"etcd",
]
[[example]]
name = "zmq_etcd_sub"
path = "examples/zmq/etcd/zmq_sub.rs"
required-features = [
"zmq",
"etcd",
]
[[bench]]
name = "bfs_vs_dfs_async_streams"
path = "benches/bfs_vs_dfs/async_streams.rs"
harness = false
required-features = ["async"]
[[bench]]
name = "bfs_vs_dfs_reactive"
path = "benches/bfs_vs_dfs/reactive.rs"
harness = false
[[bench]]
name = "bfs_vs_dfs_wingfoil"
path = "benches/bfs_vs_dfs/wingfoil.rs"
harness = false
[[bench]]
name = "graph"
path = "benches/graph.rs"
harness = false
[[bench]]
name = "iceoryx2"
path = "benches/iceoryx2.rs"
harness = false
required-features = ["iceoryx2-beta"]
[[bench]]
name = "iceoryx2_modes"
path = "benches/iceoryx2_modes.rs"
harness = false
required-features = ["iceoryx2-beta"]
[[bench]]
name = "nanotime"
path = "benches/nanotime.rs"
harness = false
[dependencies.anyhow]
version = "1.0.100"
[dependencies.arrayvec]
version = "0.7"
features = ["serde"]
[dependencies.async-stream]
version = "0.3.6"
optional = true
[dependencies.bincode]
version = "1.3.3"
optional = true
[dependencies.chrono]
version = "0.4"
[dependencies.criterion]
version = "0.8.1"
[dependencies.crossbeam]
version = "0.8.4"
[dependencies.csv]
version = "1.4"
optional = true
[dependencies.derive-new]
version = "0.7"
[dependencies.derive_more]
version = "2.1"
features = ["full"]
[dependencies.env_logger]
version = "0.11"
[dependencies.etcd-client]
version = "0.18"
optional = true
[dependencies.fefix]
version = "0.7"
optional = true
[dependencies.formato]
version = "0.3.0"
[dependencies.futures]
version = "0.3"
optional = true
[dependencies.futures-util]
version = "0.3.31"
optional = true
[dependencies.iceoryx2]
version = "0.8"
optional = true
[dependencies.itertools]
version = "0.14.0"
[dependencies.kanal]
version = "0.1.1"
[dependencies.kdb-plus-fixed]
version = "0.5.0"
features = ["ipc"]
optional = true
[dependencies.lazy_static]
version = "1.5.0"
[dependencies.lobster]
version = "0.7.0"
[dependencies.log]
version = "0.4"
[dependencies.num]
version = "0.4.3"
[dependencies.num-traits]
version = "0.2"
[dependencies.once_cell]
version = "1.21.3"
[dependencies.opentelemetry]
version = "0.28"
optional = true
[dependencies.opentelemetry-otlp]
version = "0.28"
features = [
"http-proto",
"reqwest-blocking-client",
"metrics",
]
optional = true
[dependencies.opentelemetry_sdk]
version = "0.28"
features = ["metrics"]
optional = true
[dependencies.ordered-float]
version = "4.5.0"
[dependencies.priority-queue]
version = "2.7.0"
[dependencies.quanta]
version = "0.9.3"
[dependencies.rand]
version = "0.9.2"
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"blocking",
]
optional = true
[dependencies.rustls]
version = "0.23"
features = ["ring"]
optional = true
[dependencies.scopeguard]
version = "1.2.0"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde-aux]
version = "4.7.0"
[dependencies.serde_json]
version = "1.0"
[dependencies.sha2]
version = "0.10"
optional = true
[dependencies.smallvec]
version = "1.15.1"
[dependencies.strum]
version = "0.27.2"
features = ["derive"]
[dependencies.strum_macros]
version = "0.27.2"
[dependencies.testcontainers]
version = "0.27"
features = ["blocking"]
optional = true
[dependencies.thiserror]
version = "2.0.11"
[dependencies.tinyvec]
version = "1.10.0"
features = ["alloc"]
[dependencies.tokio]
version = "1"
features = ["rt-multi-thread"]
optional = true
[dependencies.tracing]
version = "0.1"
features = [
"log",
"attributes",
]
optional = true
[dependencies.tynm]
version = "0.2.0"
[dependencies.webpki-roots]
version = "0.26"
optional = true
[dependencies.wingfoil-derive]
version = "4.0.0"
[dependencies.zmq]
version = "0.10.0"
optional = true
[dev-dependencies.cargo-husky]
version = "1"
features = ["user-hooks"]
default-features = false
[dev-dependencies.rxrust]
version = "1.0.0-rc.3"
[dev-dependencies.tokio]
version = "1"
features = [
"rt-multi-thread",
"sync",
"macros",
]
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]