[workspace] resolver = "3" members = [ "crates/mxaccess-codec", "crates/mxaccess-galaxy", "crates/mxaccess-rpc", "crates/mxaccess-callback", "crates/mxaccess-nmx", "crates/mxaccess-asb-nettcp", "crates/mxaccess-asb", "crates/mxaccess", "crates/mxaccess-compat", ] [workspace.package] version = "0.0.0" edition = "2024" license = "MIT" repository = "https://github.com//mxaccess" rust-version = "1.85" authors = ["Joseph Doherty "] # Workspace-level dependency pins. Crates opt in via `dep = { workspace = true }`. # M0 stubs use minimal deps; the full pinned set per design/30-crate-topology.md # will be uncommented as M1+ implementation lands. [workspace.dependencies] thiserror = "2" tracing = "0.1" async-trait = "0.1" futures-util = "0.3" bytes = "1" byteorder = "1" tokio = { version = "1", features = ["net", "io-util", "rt-multi-thread", "sync", "time", "macros"] } # M5 ASB transport (F19). Crypto crates target the digest 0.10 / cipher 0.4 # generation (the line that hmac 0.12, md-5 0.10, sha1 0.10, sha2 0.10, # aes 0.8, cbc 0.1, pbkdf2 0.12 all share). mxaccess-rpc is already on this # generation (crates/mxaccess-rpc/Cargo.toml:13-18); M5 sticks with it for # resolved-graph coherence. The design doc at design/30-crate-topology.md:251-289 # prescribed the 0.11/0.5 generation but the rpc crate landed earlier on the # 0.10/0.4 line — when those two diverge, the implementation is canonical. hmac = "0.12" md-5 = "0.10" sha1 = "0.10" sha2 = "0.10" aes = "0.8" cbc = { version = "0.1", features = ["std"] } pbkdf2 = { version = "0.12", default-features = false, features = ["hmac"] } flate2 = "1" rand = "0.8" # DH bigint. NOTE: num-bigint::modpow is not constant-time. The DH private # exponent is long-lived (AsbSystemAuthenticator.cs:153-166); .NET BigInteger # also isn't constant-time, so we are at parity with the reference. Tracked # as F27 to swap to crypto-bigint::BoxedUint once that crate exposes a stable # pow_mod over heap-allocated values — design/30-crate-topology.md:269-274. num-bigint = "0.4" num-traits = "0.2" num-integer = "0.1" quick-xml = "0.36" tokio-util = { version = "0.7", features = ["codec"] } zeroize = { version = "1", features = ["zeroize_derive"] } [workspace.lints.rust] unsafe_op_in_unsafe_fn = "warn" [workspace.lints.clippy] unwrap_used = "deny" expect_used = "deny" panic = "deny" todo = "warn" # warn during M0 stubs; will tighten to deny post-M1 unreachable = "deny" indexing_slicing = "deny" [profile.release] opt-level = 3 lto = "thin" codegen-units = 1 [profile.dev] opt-level = 0