-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
90 lines (84 loc) · 3.73 KB
/
Copy pathCargo.toml
File metadata and controls
90 lines (84 loc) · 3.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# Wickra X-Ray — workspace.
# A market-microstructure explorer built as one data-driven core (`xray-core`):
# a serde `XraySpec` is folded over a recorded dataset (trades, book diffs,
# funding/OI) into render data-models (`XrayFrame` — footprint, order-book
# heatmap, liquidation map, funding/OI divergence), never renderer commands. The
# core is exposed as a JSON-over-C-ABI data API in ten languages, mirroring the
# Wickra tiering: Rust core -> native Python/Node/WASM + a C ABI hub for
# C/C++/C#/Go/Java/R; a `web/` Vue front-end renders the same frames.
#
# The `members` list grows as crates are added, phase by phase; the final set is:
# crates/xray-core, crates/xray-cli, crates/xray-bench,
# bindings/c, bindings/python, bindings/node, bindings/wasm
# (`web/` is not a workspace member — it is an npm project.)
[workspace]
resolver = "2"
members = ["crates/xray-core", "crates/xray-cli", "crates/xray-bench", "bindings/c", "bindings/python", "bindings/node", "bindings/wasm", "examples/rust"]
# The fuzz crate is its own (detached) workspace — cargo-fuzz builds it on a
# nightly toolchain with sanitizer flags.
exclude = ["fuzz"]
[workspace.package]
version = "0.1.0"
edition = "2021"
rust-version = "1.86"
license = "MIT OR Apache-2.0"
authors = ["wickra-lib"]
repository = "https://github.com/wickra-lib/wickra-xray"
homepage = "https://wickra.org"
readme = "README.md"
keywords = ["trading", "microstructure", "orderbook", "footprint", "finance"]
categories = ["finance", "visualization", "command-line-utilities"]
[workspace.dependencies]
# Wickra ecosystem. wickra-core and wickra-data ship on crates.io; the exchange
# facade is consumed from git until its first crates.io release (its tag is
# USER-GO gated) and is used only by the optional `live` feature. A `version` is
# pinned alongside `git` so the dependency is not a wildcard (cargo-deny's
# `bans.wildcards = deny`).
wickra-core = "0.9"
wickra-data = "0.9"
wickra-exchange = { git = "https://github.com/wickra-lib/wickra-exchange", version = "0.1" }
# The only name -> indicator registry in the ecosystem: the backtester's factory
# resolves any of the 514 indicators by name + params into an object-safe
# EvalIndicator. Consumed from git until its first crates.io release; a `version`
# is pinned alongside `git` so it is not a wildcard (cargo-deny bans.wildcards).
wickra-backtest-core = { git = "https://github.com/wickra-lib/wickra-backtest", version = "0.1" }
# Workspace-internal crate, referenced by the CLI, bench and bindings.
xray-core = { version = "0.1.0", path = "crates/xray-core" }
# Serialization — the data-driven boundary (spec/command/frame as JSON).
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "1.1"
# Exact decimal arithmetic where price/qty precision matters.
rust_decimal = { version = "1", features = ["serde"] }
thiserror = "2"
# Data-parallel fold across the dataset.
rayon = "1"
clap = { version = "4", features = ["derive"] }
# C ABI header generation.
cbindgen = "0.27"
# Test/dev.
criterion = "0.8"
proptest = "1"
[workspace.lints.rust]
# The core and all bindings are safe Rust; the C ABI hub re-allows unsafe
# locally (it must call across the FFI boundary).
unsafe_code = "forbid"
[workspace.lints.clippy]
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
# Allowed pedantic lints (same precedent as the wickra core).
cast_precision_loss = "allow"
cast_sign_loss = "allow"
cast_possible_truncation = "allow"
module_name_repetitions = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
must_use_candidate = "allow"
too_many_lines = "allow"
similar_names = "allow"
[profile.release]
# Panics must never unwind across the C ABI boundary: abort instead.
lto = true
codegen-units = 1
panic = "abort"
strip = true