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
[]
= "node-js"
= "0.1.0"
= "2021"
= "1.80"
= "JavaScript as a fusevm frontend: a lexer/parser and compiler to fusevm::Chunk on a JsHost object heap, with no bespoke VM or JIT"
= "MIT"
= true
# node-js is a standalone crate, not a workspace member. An explicit empty
# `[workspace]` stops cargo walking up to the MenkeTechnologiesMeta parent.
[]
[]
= "nodejs"
= "src/lib.rs"
# staticlib so an AOT object can be linked against the nodejs runtime into a
# standalone native executable (mirrors pythonrs).
= ["rlib", "staticlib"]
[[]]
= "node"
= "src/main.rs"
# Differential parity harness: runs the corpus through node-js and the reference
# `node`, diffing stdout. Development tool — needs `node` on PATH, so CI never
# runs it; its frozen outputs live in tests/data/parity_expected.txt, which
# tests/parity.rs replays with no `node` installed.
# Offline reference-manual generator: consumes the `nodejs::lsp` corpus and
# writes docs/reference.html (article-format keyword/global/method reference).
# The MenkeTechnologiesPublications reference PDF pipeline runs this.
[[]]
= "gen-docs"
= "src/bin/gen_docs.rs"
[[]]
= "parity"
= "src/bin/parity.rs"
# Differential parity FUZZER: generates thousands of deterministic-output JS
# snippets (biased toward float repr / exponential-notation threshold, ToInt32
# bitwise wrap, the `==` coercion matrix, `+` coercion, string/array methods,
# toFixed/toPrecision rounding, JSON round-trips) and diffs `node -e` against the
# reference `node -e`, delta-debugging every divergence to a minimal repro.
# Subprocess-only (never links the lib); std-only (no `rand`). Dev tool — needs
# `node` on PATH, so CI never runs it.
[[]]
= "parity-fuzz"
= "src/bin/parity_fuzz.rs"
[]
# JavaScript executes on fusevm. node-js is a pure frontend: it lowers JS to
# fusevm bytecode (src/compiler.rs) and hosts the JS object heap (src/host.rs,
# reached from fusevm's builtin dispatch + numeric hook). Object/str/array cells
# ride through the VM as `Value::Obj(u32)` handles into that heap.
#
# `jit-disk-cache` turns on fusevm's Cranelift JIT *and* its persistent on-disk
# cache of compiled native code; `aot` enables the ahead-of-time object emitter.
= { = "0.14.10", = ["jit", "jit-disk-cache", "aot"] }
= { = "4.5", = ["derive", "cargo"] }
= "2.0"
= "2.1"
# JS objects preserve property insertion order (observable in iteration / repr).
= "2"