Files
foxhunt/crates/data/Cargo.toml
jgrusewski 2c2b62639e build: per-package CGU + dep dedup — workspace builds ~30% faster
Two complementary changes to reduce clean workspace build time from
~13min to ~8:43:

1. Per-package codegen-units overrides
   Default for all release builds: codegen-units = 16 (parallel LLVM).
   Numerical-sensitive crates (ml-* family, ndarray, nalgebra, cudarc,
   simba, etc.) override back to 1 to preserve bit-exact LLVM
   optimization decisions for the DQN regression suite.
   Non-numerical plumbing (arrow, sqlx, tokio, parquet, ...) compiles
   in parallel via 16 CGUs, no numerical impact.

2. Dependency deduplication
   - axum 0.7 → 0.8 (workspace + services/api): dedupes vs tonic 0.14's
     transitive axum 0.8. Eliminates a full duplicate compile of axum
     and axum-core.
   - statrs 0.17 → 0.18: dedupes nalgebra 0.32 vs 0.33. Also closes a
     numerical concern (two nalgebra versions linked simultaneously).
   - governor 0.6 → 0.10 (services/api + crates/data): dedupes dashmap
     5 vs 6. dashmap is heavy; eliminating one full compile is a real
     win.
   - hashbrown 0.14 → 0.16 (workspace): partial dedupe (dashmap 6.1
     still pulls 0.14 transitively).
   - Workspace Cargo.toml documents residual unfixable duplicates with
     reasons (base64, chacha20, phf, darling, itertools, getrandom,
     hashbrown, syn, thiserror — all blocked by third-party crates we
     can't bump without breakage).

Verified: cargo check --workspace passes.  Numerical crates remain
at codegen-units = 1 — DQN bit-exact reproducibility preserved.
2026-05-01 01:00:52 +02:00

132 lines
3.3 KiB
TOML

[package]
name = "data"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
publish.workspace = true
keywords.workspace = true
categories.workspace = true
description = "Market data ingestion and broker integration for high-frequency trading systems"
[dependencies]
# Core async and utilities
tokio.workspace = true
tokio-stream.workspace = true
tokio-util.workspace = true
futures.workspace = true
futures-util.workspace = true
futures-core = "0.3"
async-trait.workspace = true
# async-stream.workspace = true # Unused - commented out
bytes.workspace = true
# Serialization and error handling
serde.workspace = true
serde_json.workspace = true
uuid.workspace = true
anyhow.workspace = true
thiserror.workspace = true
chrono.workspace = true
tracing.workspace = true
# Network and HTTP - USE WORKSPACE DEFAULTS
reqwest.workspace = true
tokio-tungstenite = { workspace = true, features = ["rustls-tls-webpki-roots"] }
tungstenite = "0.24"
url.workspace = true
# Market data providers - USE WORKSPACE DEFAULTS
# databento.workspace = true # REMOVED - too heavy, use direct feeds instead
# TLS support - USE WORKSPACE DEFAULTS (rustls provided by tokio-tungstenite feature)
native-tls.workspace = true
tokio-native-tls.workspace = true
# rustls = "0.23" # REMOVED - conflicts with workspace versions, use tokio-tungstenite rustls feature
webpki-roots = "0.26"
xml-rs = { workspace = true }
time = { workspace = true }
hex = { workspace = true }
md5 = { workspace = true }
# Financial types - USE WORKSPACE DEFAULTS
rust_decimal.workspace = true
rust_decimal_macros.workspace = true
num-traits = "0.2"
# Random number generation for testing
rand.workspace = true
# System information
num_cpus.workspace = true
# Configuration and utilities - USE WORKSPACE DEFAULTS
config.workspace = true
toml.workspace = true
base64.workspace = true
regex.workspace = true
# Compression and serialization - USE WORKSPACE DEFAULTS
flate2.workspace = true
zstd.workspace = true
lz4.workspace = true
bincode.workspace = true
sha2.workspace = true
hashbrown.workspace = true
smallvec.workspace = true
fastrand.workspace = true
crossbeam.workspace = true
crossbeam-channel.workspace = true
# Parquet for market data persistence and backtesting replay
parquet.workspace = true
arrow.workspace = true
# High-performance data structures - USE WORKSPACE DEFAULTS
dashmap.workspace = true
parking_lot.workspace = true
# Rate limiting and caching (governor 0.10 dedupes dashmap to v6)
governor = "0.10"
nonzero = "0.2"
redis = { workspace = true, optional = true }
# Internal workspace crates
trading_engine.workspace = true
common = { path = "../common" }
storage = { workspace = true }
dbn = "0.42.0"
[dev-dependencies]
tokio-test = { workspace = true }
# proptest = { workspace = true } # REMOVED from workspace
criterion = { workspace = true }
hdrhistogram = "7.5"
tempfile = { workspace = true }
# wiremock = { workspace = true } # REMOVED from workspace
tracing-subscriber = { workspace = true }
serial_test = "3.2"
[features]
default = ["databento", "benzinga", "icmarkets"] # Re-enabled databento feature for core functionality
databento = []
redis-cache = ["redis"]
benzinga = []
icmarkets = []
ib = []
mock = []
[lints]
workspace = true