Repository navigation
Expand file tree
/
Copy pathCargo.toml
More file actions
313 lines (286 loc) · 12.9 KB
/
Copy pathCargo.toml
File metadata and controls
313 lines (286 loc) · 12.9 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
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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
[workspace]
resolver = "3"
exclude = ["vendor/oxc_parser_compat"]
members = [
"vendor/parcel_sourcemap",
"vendor/lightningcss",
"vendor/oxc_parser",
"vendor/oxc_formatter",
"vendor/oxlint_html_renderer186",
"crates/vize_carton",
"crates/vize_relief",
"crates/vize_armature",
"crates/vize_croquis",
"crates/vize_croquis_cf",
"crates/vize_atelier_core",
"crates/vize_atelier_dom",
"crates/vize_atelier_vapor",
"crates/vize_atelier_ssr",
"crates/vize_atelier_sfc",
"crates/vize_atelier_jsx",
"crates/vize_vitrine",
"crates/vize",
"crates/vize_canon",
"crates/vize_patina",
"crates/vize_glyph",
"crates/vize_musea",
"crates/vize_maestro",
"crates/vize_curator",
"davinci/vize_l0_derive",
"davinci/vize_l2",
"davinci/vize_l3",
"davinci/vize_l1_to_l2",
"davinci/vize_l2_to_l3",
"davinci/vize_l1",
"davinci/vize_l4",
"davinci/vize_l0",
"crates/vize_fresco",
"crates/vize_marquette",
"crates/vize_doctor",
"crates/vize_incremental",
"tools/benchmarks/crates/davinci_harness",
"tools/benchmarks/crates/vize",
"tests/davinci_test_support",
"tests/vize_test_runner",
]
[workspace.package]
version = "0.474.0"
edition = "2024"
rust-version = "1.99.0"
license = "MIT"
repository = "https://github.com/ubugeeei-prod/vize"
[workspace.dependencies]
# Publishable internal crates (path for local dev, version fallback for crates.io)
vize_carton = { path = "crates/vize_carton", version = "=0.474.0" }
vize_relief = { path = "crates/vize_relief", version = "=0.474.0" }
vize_armature = { path = "crates/vize_armature", version = "=0.474.0" }
vize_croquis = { path = "crates/vize_croquis", version = "=0.474.0" }
vize_croquis_cf = { path = "crates/vize_croquis_cf", version = "=0.474.0" }
vize_atelier_core = { path = "crates/vize_atelier_core", version = "=0.474.0" }
vize_atelier_dom = { path = "crates/vize_atelier_dom", version = "=0.474.0" }
vize_atelier_vapor = { path = "crates/vize_atelier_vapor", version = "=0.474.0" }
vize_atelier_ssr = { path = "crates/vize_atelier_ssr", version = "=0.474.0" }
vize_atelier_sfc = { path = "crates/vize_atelier_sfc", version = "=0.474.0", default-features = false }
vize_atelier_jsx = { path = "crates/vize_atelier_jsx", version = "=0.474.0" }
vize_musea = { path = "crates/vize_musea", version = "=0.474.0" }
vize_patina = { path = "crates/vize_patina", version = "=0.474.0" }
vize_canon = { path = "crates/vize_canon", version = "=0.474.0", default-features = false }
vize_fresco = { path = "crates/vize_fresco", version = "=0.474.0", default-features = false }
vize_marquette = { path = "crates/vize_marquette", version = "=0.474.0" }
vize_doctor = { path = "crates/vize_doctor", version = "=0.474.0" }
# Workspace-only internal crates (always use the local path)
davinci_harness = { path = "tools/benchmarks/crates/davinci_harness" }
davinci_test_support = { path = "tests/davinci_test_support" }
vize_vitrine = { path = "crates/vize_vitrine", default-features = false }
vize_glyph = { path = "crates/vize_glyph" }
vize_maestro = { path = "crates/vize_maestro" }
vize_curator = { path = "crates/vize_curator" }
vize_incremental = { path = "crates/vize_incremental" }
# Publishable Davinci stage infrastructure. Stage crates keep their physical
# names and version fallbacks so a publishable consumer can resolve the same
# dependency graph from crates.io.
vize_l0_derive = { path = "davinci/vize_l0_derive", version = "=0.474.0" }
# Level dependencies use physical package identities. L0 owns the shared
# foundation; the legacy Carton package re-exports it.
vize_l0 = { path = "davinci/vize_l0", version = "=0.474.0" }
vize_l1 = { path = "davinci/vize_l1", version = "=0.474.0" }
vize_l2 = { path = "davinci/vize_l2", version = "=0.474.0" }
vize_l3 = { path = "davinci/vize_l3", version = "=0.474.0" }
vize_l1_to_l2 = { path = "davinci/vize_l1_to_l2", version = "=0.474.0" }
vize_l2_to_l3 = { path = "davinci/vize_l2_to_l3", version = "=0.474.0" }
vize_l4 = { path = "davinci/vize_l4", version = "=0.474.0" }
# OXC dependencies (pinned to a specific upstream revision for reproducibility)
oxc_parser = { package = "vize_oxc_parser", version = "=0.474.0", path = "vendor/oxc_parser" }
oxc_ast = { version = "=0.142.0", git = "https://github.com/oxc-project/oxc", rev = "fc702c1fa9f0412d06ec6908b58cd395b826cf7f" }
oxc_ast_visit = { version = "=0.142.0", git = "https://github.com/oxc-project/oxc", rev = "fc702c1fa9f0412d06ec6908b58cd395b826cf7f" }
oxc_span = { version = "=0.142.0", git = "https://github.com/oxc-project/oxc", rev = "fc702c1fa9f0412d06ec6908b58cd395b826cf7f" }
oxc_allocator = { version = "=0.142.0", git = "https://github.com/oxc-project/oxc", rev = "fc702c1fa9f0412d06ec6908b58cd395b826cf7f" }
oxc_syntax = { version = "=0.142.0", git = "https://github.com/oxc-project/oxc", rev = "fc702c1fa9f0412d06ec6908b58cd395b826cf7f" }
oxc_diagnostics = { version = "=0.142.0", git = "https://github.com/oxc-project/oxc", rev = "fc702c1fa9f0412d06ec6908b58cd395b826cf7f" }
oxc_ecmascript = { version = "=0.142.0", git = "https://github.com/oxc-project/oxc", rev = "fc702c1fa9f0412d06ec6908b58cd395b826cf7f", features = [
"constant_evaluation",
] }
oxc_sourcemap = "=8.1.2"
oxc_semantic = { version = "=0.142.0", git = "https://github.com/oxc-project/oxc", rev = "fc702c1fa9f0412d06ec6908b58cd395b826cf7f" }
oxc_transformer = { version = "=0.142.0", git = "https://github.com/oxc-project/oxc", rev = "fc702c1fa9f0412d06ec6908b58cd395b826cf7f" }
oxc_codegen = { version = "=0.142.0", git = "https://github.com/oxc-project/oxc", rev = "fc702c1fa9f0412d06ec6908b58cd395b826cf7f" }
# oxc_formatter is not yet on crates.io, so vize_glyph is excluded from crates.io publish.
# `oxc_formatter_core` carries the language-agnostic option types (`IndentStyle`,
# `IndentWidth`, `LineEnding`, `LineWidth`) that `oxc_formatter` takes but does not
# re-export; it is `publish = false` upstream for the same reason.
oxc_formatter = { package = "vize_oxc_formatter", version = "=0.474.0", path = "vendor/oxc_formatter" }
oxc_formatter_core = { version = "=0.60.0", git = "https://github.com/oxc-project/oxc", rev = "fc702c1fa9f0412d06ec6908b58cd395b826cf7f" }
# Serialization and schema formats
serde = { version = "=1.0.229", features = ["derive"] }
serde_json = "=1.0.154"
toml = "=1.1.8"
lsp-types = "=0.97.0"
pklrust = "=0.9.0"
# CLI, async, and IDE runtime
clap = { version = "=4.6.7", features = ["derive"] }
futures = "=0.3.34"
tower = { version = "=0.4.13", default-features = false }
tower-lsp = { version = "=0.20.0", default-features = false, features = ["runtime-agnostic"] }
async-trait = "=0.1.92"
tracing = "=0.1.44"
tracing-subscriber = "=0.3.23"
parking_lot = "=0.12.5"
ropey = "=1.6.1"
dirs = "=6.0.0"
which = "=8.0.6"
walkdir = "=2.5.0"
ignore = "=0.4.33"
glob = "=0.3.4"
globset = "=0.4.20"
rayon = "=1.12.0"
regex-lite = "=0.1.9"
tempfile = "=3.27.0"
# NAPI / WASM / Web
napi = { version = "=3.14.2", default-features = false, features = ["napi8", "serde-json"] }
napi-derive = "=3.6.12"
napi-build = "=2.6.0"
wasm-bindgen = "=0.2.129"
serde-wasm-bindgen = "=0.6.5"
js-sys = "=0.3.106"
web-sys = { version = "=0.3.106", features = ["console"] }
getrandom = { version = "=0.3.4", features = ["wasm_js"] }
# Proc-macro toolkit (host build dependencies; versions match the lockfile)
proc-macro2 = "=1.0.107"
quote = "=1.0.47"
syn = "=2.0.117"
# Utilities
thiserror = "=2.0.21"
rustc-hash = "=2.1.3"
bitflags = { version = "=2.13.2", features = ["serde"] }
once_cell = "=1.21.4"
compact_str = { version = "=0.10.0", features = ["serde"] }
lasso = "=0.7.3"
ecow = "=0.3.1"
phf = { version = "=0.13.1", features = ["macros"] }
memoffset = "=0.9.1"
memchr = "=2.8.3"
simdutf8 = "=0.1.5"
fast-float2 = "=0.2.4"
regex = "=1.13.1"
smallvec = { version = "=1.16.3", features = ["union"] }
thin-vec = "=0.2.21"
index_vec = { version = "=0.1.4", default-features = false }
fixedbitset = { version = "=0.5.7", default-features = false }
dashmap = "=6.2.1"
xxhash-rust = { version = "=0.8.19", features = ["xxh3"] }
# Incremental query engine for the resident tier only (charter #10 and #39):
# `vize_incremental` is its sole dependent, the one-shot CLI stays on the fused
# pipeline, and `tests/tooling/davinci-resident-salsa.test.ts` enforces both.
# Pinned exactly; the default `rayon` feature stays off (file-parallelism is
# the caller's, charter #33).
salsa = { version = "=0.28.5", default-features = false, features = ["macros", "inventory"] }
sha2 = "=0.11.1"
url = "=2.5.8"
htmlize = { version = "=1.1.0", features = ["unescape"] }
libc = "=0.2.190"
# Moves a recursive AST pass onto a heap-allocated stack when the thread stack
# runs low, so template nesting depth costs heap instead of stack. See
# `vize_carton::recursion` for why the compiler needs it.
stacker = "=0.1.25"
# Reads WIT sources for contract-surface classification (P6-8), behind
# `vize_marquette`'s `wit` feature.
wit-parser = { version = "=0.259.0", default-features = false, features = ["std"] }
# Allocator
mimalloc = "=0.1.52"
# CSS
cssparser = "=0.37.0"
lightningcss = { package = "vize_lightningcss", version = "=0.474.0", path = "vendor/lightningcss" }
parcel_sourcemap = { package = "vize_parcel_sourcemap", version = "=0.474.0", path = "vendor/parcel_sourcemap" }
parcel_selectors = "=0.28.3"
# Terminal / layout
crossterm = "=0.29.0"
taffy = "=0.10.1"
unicode-width = "=0.2.2"
unicode-segmentation = "=1.13.3"
# Text diffs (`vize lib diff`)
similar = "=2.7.0"
# Testing and benchmarking
insta = { version = "=1.49.0", features = ["toml"] }
criterion = "=0.8.2"
# Published corsa crates
corsa = { package = "corsa", version = "=2.0.0-beta.4" }
corsa_lsp = { package = "corsa_lsp", version = "=2.0.0-beta.4" }
corsa_runtime = { package = "corsa_runtime", version = "=2.0.0-beta.4" }
# Shared lint contract. A member opts in with `[lints] workspace = true` once it
# is clean; `tools/commands/ci/check-workspace-lints.rs` tracks who is left.
#
# Panic-free: shipped code (lib + bin targets) must not abort on any input, so
# every explicit and implicit panic path is denied. Test code is exempt through
# the `allow-*-in-tests` keys in `clippy.toml`. There is no escape hatch: an
# invariant that "cannot fail" is expressed by construction (iterators, pattern
# matching, `get`, `split_at_checked`, ...) or degrades gracefully.
#
# Hygiene: suppressions must be `#[expect(lint, reason = "...")]` so a stale
# one fails the build and every one says why it exists.
[workspace.lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(coverage)'] }
# A reference that immediately decays into a raw pointer still asserts the
# aliasing rules of a reference. Use `&raw const` / `&raw mut` instead.
raw_borrows_via_references = "warn"
[workspace.lints.clippy]
unwrap_used = "deny"
expect_used = "deny"
panic = "deny"
unreachable = "deny"
todo = "deny"
unimplemented = "deny"
indexing_slicing = "deny"
string_slice = "deny"
get_unwrap = "deny"
panic_in_result_fn = "deny"
allow_attributes = "deny"
allow_attributes_without_reason = "deny"
wildcard_imports = "deny"
# `with_capacity(0)` reserves nothing and behaves like `new()`.
with_capacity_zero = "deny"
# `T::BITS - x.leading_zeros()` is `x.bit_width()`.
manual_bit_width = "deny"
[profile.release]
# Release artifacts are benchmarked and shipped from this profile. Fat LTO plus
# one codegen unit slows local release builds, but it lets LLVM optimize across
# crate boundaries in the parser/codegen hot paths that dominate CLI and native
# package benchmarks. The CI profile below stays intentionally cheaper.
opt-level = 3
lto = "fat"
codegen-units = 1
# CSS and editor boundaries convert dependency panics into diagnostics.
# Native releases must unwind for those boundaries to protect the process.
panic = "unwind"
debug = false
debug-assertions = false
overflow-checks = false
incremental = false
# Release archives contain the vize CLI directly. Strip the executable's
# symbols while leaving other release artifacts available for symbolized
# diagnostics and sampling. For a symbolized CLI build, pass
# --config 'profile.release.package.vize.strip="none"' to cargo build.
[profile.release.package.vize]
strip = "symbols"
# Optimize full-byte fingerprints for ordinary development and inherited CI/test builds.
[profile.dev.package.sha2]
opt-level = 3
[profile.ci]
inherits = "dev"
debug = false
incremental = false
codegen-units = 256
# The PR benchmark gate compares base and head CLI performance, so its binaries
# must be optimized or abstraction-cost regressions stay invisible. Thin LTO
# with multiple codegen units keeps the gate's per-SHA build cost well below
# the fat-LTO release profile while staying representative of it.
[profile.ci-opt]
inherits = "release"
lto = "thin"
codegen-units = 16
# TS-44 measures the same stripped CLI payload shipped by the release job.
[profile.ci-opt.package.vize]
strip = "symbols"
# Keep transitive upstream consumers (notably the formatter) on the same parser.
# Published Vize crates use the direct vize_oxc_parser dependency above.
[patch."https://github.com/oxc-project/oxc"]
oxc_parser = { path = "vendor/oxc_parser_compat" }