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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
[]
= "dixscript"
= "1.0.0"
= "2021"
= "1.85"
= ["MidManStudio"]
= "Config, code, and encryption in one file — a data interchange format with compile-time functions, AES-256/ChaCha20 built-in, and cross-platform FFI"
= "MIT"
= "README.md"
= "https://github.com/Mid-D-Man/DixScript-Rust"
= ["config", "encryption", "serialization", "data-format", "gamedev"]
= ["config", "parser-implementations", "encoding", "data-structures", "cryptography"]
= "https://dixscript-docs.pages.dev"
# Consumers of the crate never need any of this: dev-dependencies (criterion
# for benches, proptest/fuzz harnesses) only apply to these directories, and
# CI config is irrelevant once published. examples/ is deliberately NOT
# excluded -- it's what renders on docs.rs and what `cargo run --example`
# needs.
= [
"benches/",
"tests/",
"fuzz/",
".github/",
]
[]
= "dixscript"
= ["lib"]
[]
= { = "0.8", = ["getrandom"] }
= { = "1.0", = ["v4", "serde", "js"] }
= { = "0.4", = ["serde", "wasmbind"] }
# std::time::Instant::now() panics ("time not implemented on this platform")
# on wasm32-unknown-unknown. web-time is a drop-in replacement: std passthrough
# on native, Performance.now() (via js-sys) on wasm32. Duration is untouched —
# only Instant needed swapping. See the 8 `use web_time::Instant;` call sites.
= "1.1"
= "2.4"
= { = "1.0", = ["derive"] }
= "1.0"
= "0.8"
= { = "0.11", = ["macros"] }
= "2.7"
= "0.21"
= "1.10"
= "0.13"
= "1.4"
= "2.7"
= "2.0"
= "0.10"
= { = "1.0", = false, = ["rust_backend"] }
= "0.10"
= "0.10"
= "0.5"
= "0.4"
# ── Cloud import deps ──────────────────────────────────────────────────────────
# Both optional — activated via the `cloud-import` feature (on by default).
# can opt out with default-features = false in their dependency declaration.
= "0.1"
= "2.5"
# --- Compression backends ──────────────────────────────────────────────────────────
= { = "0.6", = true }
# lzma-rust2: real LZMA2/XZ codec (ported from tukaani's xz-for-java), not a
# liblzma C binding. Zero non-Rust deps (only optional pure-Rust `sha2` for
# the XZ integrity checksum). `optimization` is deliberately left off — it's
# sound per upstream, but disabling it guarantees 100% safe standard Rust
# with zero hand-written-asm surface across every target, which matters more
# here than the speed it buys back on x86_64/aarch64 hosts.
= { = "0.16", = false, = ["std", "encoder", "xz"], = true }
# ── Non-WASM native deps ───────────────────────────────────────────────────────
[]
# Optional: only pulled in when `rayon-support` is enabled (on by default).
# Used in exactly three places — general_parser.rs's section-level parsing,
# and binary_packer.rs/binary_unpacker.rs's section-level (de)serialization —
# all three already had a sequential fallback for wasm32 before this feature
# existed; the feature just extends that same fallback to any native build
# that wants to opt out too (smaller binary, no thread-pool spin-up, fully
# deterministic single-threaded execution for debugging).
= { = "1.8", = true }
= "0.3"
= { = "0.11", = false, = ["json", "rustls-tls"], = true }
# tokio: trimmed from "full" to only the runtime features actually used
# (rt-multi-thread for block_on, macros for #[tokio::main] if needed, fs + time for
# the cloud download path). "full" pulled in every tokio sub-crate unnecessarily.
= { = "1", = ["rt-multi-thread", "macros", "fs", "time"], = true }
[]
= { = "0.2", = ["js"] }
# Only used by CloudFileCache's localStorage backend — Window to reach
# `window.localStorage`, Storage for the get/set/remove/key/length calls.
# Not the whole web-sys surface, just these two, to keep the wasm binary lean.
= { = "0.3", = ["Window", "Storage"] }
# Bench/test-only deps. Gated off wasm32 on purpose: criterion pulls in
# rayon (one of its default features) plus a pile of native-only tooling
# (walkdir, is-terminal, plotters, ...) that has no business resolving
# against a wasm32 target. Nothing in CI currently runs
# `cargo bench`/`cargo test --benches` against wasm32 — the wasm job only
# does `wasm-pack build mdix-wasm`, which never touches dev-dependencies —
# but this makes that guarantee explicit at the manifest level instead of
# relying on nobody ever running a broad `--workspace --all-targets
# --target wasm32-unknown-unknown` check.
[]
= { = "0.5", = ["html_reports"] }
= "3.10"
= "1.3"
= "1.1"
= { = "1.0", = ["alloc"] }
= "0.2"
[[]]
= "format_comparison_benchmark"
= false
[[]]
= "throughput_benchmark"
= false
[[]]
= "lexer_throughput"
= false
[[]]
= "config_throughput"
= false
[[]]
= "stress_test_benchmark"
= false
[[]]
= "general_parser_benchmark"
= false
[[]]
= "semantics_benchmark"
= false
[[]]
= "ast_enhancement_benchmark"
= false
[[]]
= "value_resolution_benchmark"
= false
[[]]
= "binary_serialization_benchmark"
= false
[[]]
= "runtime_benchmark"
= false
# ── Feature flags ──────────────────────────────────────────────────────────────
# Default pulls in everything — existing consumers (desktop, CI, mdix-cli,
# mdix-lsp, mdix-ffi) get identical behaviour with no changes to their
# dependency declarations.
#
# To build without cloud or compression deps (e.g. mxross-brush-lua):
# dixscript = { path = "...", default-features = false }
#
# To restore just one group:
# dixscript = { path = "...", default-features = false, features = ["cloud-import"] }
[]
= ["cloud-import", "bzip2-support", "xz-support", "rayon-support"]
= ["dep:reqwest", "dep:tokio"]
= ["dep:bzip2"]
= ["dep:lzma-rust2"]
= ["dep:rayon"]