The declared MSRV had drifted into three tiers — 1.85, 1.96, and one 1.96.0 — none of them the compiler the code is actually built and pinned against (now 1.97.1, rust-toolchain.toml). Raising the floor to 1.97 makes the support commitment honest: it states the oldest compiler these standards are actually verified on, rather than a floor no CI ever exercises. This is the deliberate MSRV bump that the 1.97.1 toolchain PR explicitly left out, because raising a library's floor is a support-policy decision, not an automatic consequence of moving a build box. Done here as its own change, on request. 26 workspace manifests, minor-version precision to match the repo's dominant style. sandbox-rs (was 1.85) and eoc-rs (was 1.96) build + test clean under the pin. Co-Authored-By: Claude Opus 4.8 <[email protected]>
156 lines
4.9 KiB
TOML
156 lines
4.9 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = [
|
|
"crates/op-core",
|
|
"crates/op-iso20022",
|
|
"crates/op-iso8583",
|
|
"crates/op-emv",
|
|
"crates/op-vault",
|
|
"crates/op-fraud",
|
|
"crates/op-rails-card",
|
|
"crates/op-mobile-wallets",
|
|
"crates/op-rails-a2a",
|
|
"crates/op-ffi-swift",
|
|
"crates/op-ffi-jni",
|
|
"crates/op-wasm",
|
|
"crates/op-orchestrator",
|
|
"crates/op-ledger",
|
|
"crates/op-webhook",
|
|
"crates/op-graph",
|
|
"crates/op-reconciliation",
|
|
"crates/op-refund",
|
|
"crates/op-dispute",
|
|
"crates/op-dispute-evidence",
|
|
"crates/op-settlement",
|
|
"crates/op-batch",
|
|
"crates/op-server",
|
|
"crates/op-driver-sdk",
|
|
"crates/op-rails-crypto",
|
|
"crates/op-rails-x402",
|
|
"crates/op-subscriptions",
|
|
"crates/op-fx",
|
|
"crates/op-routing",
|
|
"crates/op-screening",
|
|
"crates/op-bnpl",
|
|
"crates/op-3ds2",
|
|
"crates/op-cli",
|
|
"crates/op-connect",
|
|
"crates/op-tax",
|
|
"crates/op-revrec",
|
|
"crates/op-ewallets-asia",
|
|
"crates/op-openbanking",
|
|
"crates/op-payouts",
|
|
"crates/op-statements",
|
|
"crates/op-fraud-graph",
|
|
"crates/op-bin",
|
|
"crates/op-crypto-extra",
|
|
"examples/headless-server",
|
|
"examples/kiosk-linux",
|
|
"examples/demo-merchant",
|
|
"examples/pci-zero",
|
|
]
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
rust-version = "1.97"
|
|
license = "Apache-2.0"
|
|
repository = "https://github.com/Transaction-Science/open-standards"
|
|
authors = ["OpenPay Contributors"]
|
|
|
|
[workspace.dependencies]
|
|
# Core
|
|
thiserror = "2"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
zeroize = { version = "1.8", features = ["derive"] }
|
|
subtle = "2.6" # constant-time comparison
|
|
|
|
# ISO 20022 — verified ground truth (Open-Payments/messages, Apache-2.0).
|
|
# Pin tightly: financial message layouts must not silently change under us.
|
|
# Main crate is at =1.0.10; the fednow companion lagged behind and
|
|
# stopped at =1.0.9 (the two crates version independently). The fednow
|
|
# surface we depend on is unchanged across 1.0.x, so the version skew
|
|
# is safe.
|
|
open-payments-iso20022 = { version = "=1.0.10", features = ["payments"] }
|
|
open-payments-fednow = "=1.0.9"
|
|
# XML codec — quick-xml is the de-facto choice; we use it for round-trip
|
|
# validation against XSD-canonical sample files.
|
|
quick-xml = { version = "0.36", features = ["serialize"] }
|
|
|
|
# ML / inference
|
|
burn = { version = "0.18", default-features = false }
|
|
ort = { version = "2", default-features = false }
|
|
|
|
# FFI
|
|
cxx = "1"
|
|
jni = "0.21"
|
|
wasm-bindgen = "0.2"
|
|
|
|
# Time, ids
|
|
# `serde` for OffsetDateTime serialization in domain structs;
|
|
# `formatting`/`parsing` for op-iso20022 dt formatters.
|
|
time = { version = "0.3", default-features = false, features = ["std", "serde", "formatting", "parsing", "macros"] }
|
|
# `v4` for random ids (events, attempts, idempotency tokens);
|
|
# `v7` for time-sortable ids in ledger/webhook bookkeeping;
|
|
# `v5` for deterministic (name-based) statement-line vertex ids so
|
|
# re-recording the same reconciliation line reuses its vertex.
|
|
uuid = { version = "1", features = ["v4", "v5", "v7", "serde"] }
|
|
|
|
# Testing
|
|
proptest = "1"
|
|
insta = "1"
|
|
|
|
# Observability — structured tracing. Operators wire their own
|
|
# `tracing-subscriber` to emit JSON, OpenTelemetry, or whatever
|
|
# their pipeline expects. `tracing` is the de-facto Rust standard;
|
|
# emits zero-cost when no subscriber is registered.
|
|
tracing = "0.1"
|
|
|
|
# HTTP server. `axum` 0.8 atop tokio is the de-facto choice in 2026;
|
|
# tower middleware lets operators add auth / logging / metrics
|
|
# layers without touching our handler code.
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "signal", "sync"] }
|
|
axum = "0.8"
|
|
tower = { version = "0.5", features = ["util"] }
|
|
tower-http = { version = "0.6", features = ["trace"] }
|
|
http = "1"
|
|
http-body-util = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt", "json"] }
|
|
|
|
# Live HTTP client. Used by ReqwestTransport (op-webhook fanout) and
|
|
# the JSON-RPC client in op-rails-crypto's EVM gateway. Blocking
|
|
# client keeps the sync trait surfaces intact.
|
|
reqwest = { version = "0.13", default-features = false, features = ["blocking", "json", "rustls"] }
|
|
|
|
# CLI parsing for op-cli.
|
|
clap = { version = "4", features = ["derive", "env"] }
|
|
|
|
# Hex encoding for EVM calldata + tx hashes.
|
|
hex = "0.4"
|
|
|
|
# Keccak-256 for EVM function selectors.
|
|
sha3 = "0.10"
|
|
|
|
# secp256k1 ECDSA via k256. Pure-Rust, audited, used by the
|
|
# LocalKeyEvmSigner so operators can launch with a hot-wallet
|
|
# signer before wiring KMS / Fireblocks. RFC 6979 deterministic
|
|
# nonces, recoverable signatures.
|
|
k256 = { version = "0.13", features = ["ecdsa", "std"] }
|
|
|
|
# RLP encoding for legacy / EIP-1559 EVM transactions. Used by
|
|
# LocalKeyEvmSigner to produce the raw-tx bytes broadcast by
|
|
# eth_sendRawTransaction.
|
|
rlp = "0.5"
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = "fat"
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
strip = "symbols"
|
|
|
|
[profile.release-with-debug]
|
|
inherits = "release"
|
|
debug = true
|
|
strip = "none"
|