Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ jobs:
run: >-
pnpm test --shard=${{ matrix.shard }}/10
--exclude=tests/harness/effect.test.ts
--exclude=tests/harness/effect4.test.ts
--exclude=tests/harness/differential.test.ts
--exclude=tests/harness/llvm-differential.test.ts
--exclude=tests/harness/npm.test.ts
Expand Down Expand Up @@ -154,6 +155,7 @@ jobs:
run: >-
pnpm test
tests/harness/effect.test.ts
tests/harness/effect4.test.ts
tests/harness/differential.test.ts
tests/harness/llvm-differential.test.ts
tests/harness/npm.test.ts
Expand Down
2 changes: 1 addition & 1 deletion docs/src/app/cli/page.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ fib.s

Different output kinds accumulate in `.scriptc/`; rebuilding a kind updates its file.

The IR and LLVM source outputs require only Node. On supported macOS, Linux, and Windows hosts, assembly and object outputs use the matching native helper installed with scriptc and do not invoke an external compiler, archiver, linker, or SDK. The object is a relocatable program object with undefined <code>scr_*</code> runtime symbols and a required <code>scr_runtime_abi_v5</code> marker, not a standalone library. External consumption is experimental and requires the exact runtime version reported by <code>--print=native-link-info</code>. That option still writes the object, performs no link, and prints a versioned JSON recipe with the target, <code>main</code> entry, installed precompiled runtime pack, FFI inputs, and system libraries. It never reports private scriptc cache paths. See <a href="/native-objects">Native Program Objects</a> for complete C-driver and direct-linker examples. <code>--emit=exe</code> is the default. LLVM builds emit the program object through the helper and link precompiled runtime objects; runtime development with AddressSanitizer compiles an instrumented C runtime.
The IR and LLVM source outputs require only Node. On supported macOS, Linux, and Windows hosts, assembly and object outputs use the matching native helper installed with scriptc and do not invoke an external compiler, archiver, linker, or SDK. The object is a relocatable program object with undefined <code>scr_*</code> runtime symbols and a required <code>scr_runtime_abi_v6</code> marker, not a standalone library. External consumption is experimental and requires the exact runtime version reported by <code>--print=native-link-info</code>. That option still writes the object, performs no link, and prints a versioned JSON recipe with the target, <code>main</code> entry, installed precompiled runtime pack, FFI inputs, and system libraries. It never reports private scriptc cache paths. See <a href="/native-objects">Native Program Objects</a> for complete C-driver and direct-linker examples. <code>--emit=exe</code> is the default. LLVM builds emit the program object through the helper and link precompiled runtime objects; runtime development with AddressSanitizer compiles an instrumented C runtime.

## scriptc run

Expand Down
2 changes: 1 addition & 1 deletion docs/src/app/how-it-works/page.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ TypeScript ──tsc: parse + typecheck──▶ lowering ──▶ typed IR ─
3. **LLVM backend** — `--emit=llvm` writes textual LLVM IR and stops. On supported macOS, Linux, and Windows hosts and for WASI, `--emit=asm|obj` sends LLVM IR to the matching LLVM 22 helper. Executable and library builds use the same LLVM backend.
4. **Link** — runtime packs contain precompiled C runtime objects plus the required vendor archives. A hashed manifest selects objects from the program's runtime features, optimization mode, and library state model. The target platform linker and SDK/sysroot produce the executable. Runtime development with AddressSanitizer uses an instrumented C runtime.

Program objects define <code>main</code> and leave their selected <code>scr_*</code> runtime functions undefined. The <code>scr_runtime_abi_v5</code> reference is a strong link-time compatibility check. <code>--print=native-link-info</code> exposes the exact precompiled runtime pack and link ordering for external builds; that object ABI is currently experimental and exact-runtime-version compatible, not semver-stable.
Program objects define <code>main</code> and leave their selected <code>scr_*</code> runtime functions undefined. The <code>scr_runtime_abi_v6</code> reference is a strong link-time compatibility check. <code>--print=native-link-info</code> exposes the exact precompiled runtime pack and link ordering for external builds; that object ABI is currently experimental and exact-runtime-version compatible, not semver-stable.

Inspect any stage yourself:

Expand Down
14 changes: 8 additions & 6 deletions docs/src/app/limitations/page.mdx

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/src/app/native-objects/page.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

The external object ABI is **experimental**. Its `scr_*` function and data surface may change before 1.0, so consumers must use the exact runtime-pack version reported by the same compiler installation. This is stricter than semver compatibility.

The object intentionally leaves its selected runtime symbols undefined. It also holds a strong reference to `scr_runtime_abi_v5`, which the matching runtime defines. Linking an object against a runtime with another ABI marker fails at link time with the missing versioned symbol; it cannot become a latent runtime incompatibility.
The object intentionally leaves its selected runtime symbols undefined. It also holds a strong reference to `scr_runtime_abi_v6`, which the matching runtime defines. Linking an object against a runtime with another ABI marker fails at link time with the missing versioned symbol; it cannot become a latent runtime incompatibility.

## Machine-readable link information

Expand Down
45 changes: 34 additions & 11 deletions internal/compatibility/generated/node-v24-backlog.json
Original file line number Diff line number Diff line change
Expand Up @@ -5749,7 +5749,11 @@
"tests/corpus/1565-spawn-pipe-streams.ts",
"tests/corpus/2911-execfile-callback.ts",
"tests/corpus/2939-child-shell-text.ts",
"tests/corpus/2946-child-fork-ipc/main.ts"
"tests/corpus/2946-child-fork-ipc/main.ts",
"tests/corpus/3127-spawn-runtime-options.ts",
"tests/corpus/3130-child-generic-streams.ts",
"tests/corpus/3131-child-rest-listeners.js",
"tests/corpus/3132-child-generic-stream-completion.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -5854,7 +5858,11 @@
"tests/corpus/1565-spawn-pipe-streams.ts",
"tests/corpus/2911-execfile-callback.ts",
"tests/corpus/2939-child-shell-text.ts",
"tests/corpus/2946-child-fork-ipc/main.ts"
"tests/corpus/2946-child-fork-ipc/main.ts",
"tests/corpus/3127-spawn-runtime-options.ts",
"tests/corpus/3130-child-generic-streams.ts",
"tests/corpus/3131-child-rest-listeners.js",
"tests/corpus/3132-child-generic-stream-completion.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -5893,7 +5901,11 @@
"tests/corpus/1565-spawn-pipe-streams.ts",
"tests/corpus/2911-execfile-callback.ts",
"tests/corpus/2939-child-shell-text.ts",
"tests/corpus/2946-child-fork-ipc/main.ts"
"tests/corpus/2946-child-fork-ipc/main.ts",
"tests/corpus/3127-spawn-runtime-options.ts",
"tests/corpus/3130-child-generic-streams.ts",
"tests/corpus/3131-child-rest-listeners.js",
"tests/corpus/3132-child-generic-stream-completion.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -5932,7 +5944,11 @@
"tests/corpus/1565-spawn-pipe-streams.ts",
"tests/corpus/2911-execfile-callback.ts",
"tests/corpus/2939-child-shell-text.ts",
"tests/corpus/2946-child-fork-ipc/main.ts"
"tests/corpus/2946-child-fork-ipc/main.ts",
"tests/corpus/3127-spawn-runtime-options.ts",
"tests/corpus/3130-child-generic-streams.ts",
"tests/corpus/3131-child-rest-listeners.js",
"tests/corpus/3132-child-generic-stream-completion.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -6714,7 +6730,8 @@
"confidence": "high",
"source": "compiler-feature:child_process.'close'",
"tests": [
"tests/corpus/2939-child-shell-text.ts"
"tests/corpus/2939-child-shell-text.ts",
"tests/corpus/3131-child-rest-listeners.js"
]
},
"dynamic": {
Expand Down Expand Up @@ -44968,7 +44985,8 @@
"source": "compiler-feature:globals.TextDecoder",
"tests": [
"tests/corpus/1423-text-codec.ts",
"tests/corpus/text-codec-values/main.ts"
"tests/corpus/text-codec-values/main.ts",
"tests/corpus/3133-text-decoder-streaming.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -45041,7 +45059,8 @@
"source": "compiler-feature:globals.TextEncoder",
"tests": [
"tests/corpus/1423-text-codec.ts",
"tests/corpus/text-codec-values/main.ts"
"tests/corpus/text-codec-values/main.ts",
"tests/corpus/3133-text-decoder-streaming.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -93873,7 +93892,8 @@
"tests": [
"tests/corpus/text-codec-values/main.ts",
"tests/fixtures/node-types/text-codecs.mts",
"tests/harness/project-config.test.ts"
"tests/harness/project-config.test.ts",
"tests/corpus/3133-text-decoder-streaming.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -93945,7 +93965,8 @@
"tests": [
"tests/corpus/text-codec-values/main.ts",
"tests/fixtures/node-types/text-codecs.mts",
"tests/harness/project-config.test.ts"
"tests/harness/project-config.test.ts",
"tests/corpus/3133-text-decoder-streaming.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -94081,7 +94102,8 @@
"tests": [
"tests/corpus/text-codec-values/main.ts",
"tests/fixtures/node-types/text-codecs.mts",
"tests/harness/project-config.test.ts"
"tests/harness/project-config.test.ts",
"tests/corpus/3133-text-decoder-streaming.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -94120,7 +94142,8 @@
"tests": [
"tests/corpus/text-codec-values/main.ts",
"tests/fixtures/node-types/text-codecs.mts",
"tests/harness/project-config.test.ts"
"tests/harness/project-config.test.ts",
"tests/corpus/3133-text-decoder-streaming.ts"
]
},
"dynamic": {
Expand Down
53 changes: 41 additions & 12 deletions internal/compatibility/generated/node-v24-internal.json
Original file line number Diff line number Diff line change
Expand Up @@ -14062,7 +14062,11 @@
"tests/corpus/2898-child-stdin-spawn-failure.ts",
"tests/corpus/2911-execfile-callback.ts",
"tests/corpus/2939-child-shell-text.ts",
"tests/corpus/2946-child-fork-ipc/main.ts"
"tests/corpus/2946-child-fork-ipc/main.ts",
"tests/corpus/3127-spawn-runtime-options.ts",
"tests/corpus/3130-child-generic-streams.ts",
"tests/corpus/3131-child-rest-listeners.js",
"tests/corpus/3132-child-generic-stream-completion.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -14237,7 +14241,11 @@
"tests/corpus/1565-spawn-pipe-streams.ts",
"tests/corpus/2911-execfile-callback.ts",
"tests/corpus/2939-child-shell-text.ts",
"tests/corpus/2946-child-fork-ipc/main.ts"
"tests/corpus/2946-child-fork-ipc/main.ts",
"tests/corpus/3127-spawn-runtime-options.ts",
"tests/corpus/3130-child-generic-streams.ts",
"tests/corpus/3131-child-rest-listeners.js",
"tests/corpus/3132-child-generic-stream-completion.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -14352,7 +14360,11 @@
"tests/corpus/1565-spawn-pipe-streams.ts",
"tests/corpus/2911-execfile-callback.ts",
"tests/corpus/2939-child-shell-text.ts",
"tests/corpus/2946-child-fork-ipc/main.ts"
"tests/corpus/2946-child-fork-ipc/main.ts",
"tests/corpus/3127-spawn-runtime-options.ts",
"tests/corpus/3130-child-generic-streams.ts",
"tests/corpus/3131-child-rest-listeners.js",
"tests/corpus/3132-child-generic-stream-completion.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -14386,7 +14398,11 @@
"tests/corpus/1565-spawn-pipe-streams.ts",
"tests/corpus/2911-execfile-callback.ts",
"tests/corpus/2939-child-shell-text.ts",
"tests/corpus/2946-child-fork-ipc/main.ts"
"tests/corpus/2946-child-fork-ipc/main.ts",
"tests/corpus/3127-spawn-runtime-options.ts",
"tests/corpus/3130-child-generic-streams.ts",
"tests/corpus/3131-child-rest-listeners.js",
"tests/corpus/3132-child-generic-stream-completion.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -14420,7 +14436,11 @@
"tests/corpus/1565-spawn-pipe-streams.ts",
"tests/corpus/2911-execfile-callback.ts",
"tests/corpus/2939-child-shell-text.ts",
"tests/corpus/2946-child-fork-ipc/main.ts"
"tests/corpus/2946-child-fork-ipc/main.ts",
"tests/corpus/3127-spawn-runtime-options.ts",
"tests/corpus/3130-child-generic-streams.ts",
"tests/corpus/3131-child-rest-listeners.js",
"tests/corpus/3132-child-generic-stream-completion.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -15153,7 +15173,8 @@
"status": "partial",
"evidence": "compiler-feature:child_process.'close'",
"tests": [
"tests/corpus/2939-child-shell-text.ts"
"tests/corpus/2939-child-shell-text.ts",
"tests/corpus/3131-child-rest-listeners.js"
]
},
"dynamic": {
Expand Down Expand Up @@ -59460,6 +59481,7 @@
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts",
"tests/corpus/3133-text-decoder-streaming.ts",
"tests/corpus/text-codec-values/main.ts",
"tests/harness/fetch-conformance.test.ts"
]
Expand Down Expand Up @@ -60857,7 +60879,8 @@
"evidence": "compiler-feature:globals.TextDecoder",
"tests": [
"tests/corpus/1423-text-codec.ts",
"tests/corpus/text-codec-values/main.ts"
"tests/corpus/text-codec-values/main.ts",
"tests/corpus/3133-text-decoder-streaming.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -60921,7 +60944,8 @@
"evidence": "compiler-feature:globals.TextEncoder",
"tests": [
"tests/corpus/1423-text-codec.ts",
"tests/corpus/text-codec-values/main.ts"
"tests/corpus/text-codec-values/main.ts",
"tests/corpus/3133-text-decoder-streaming.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -110429,6 +110453,7 @@
"tests/corpus/1573-promisify-execfile-env-spread.ts",
"tests/corpus/2440-console-inspect-args.ts",
"tests/corpus/2912-promisify-fs-readfile.ts",
"tests/corpus/3133-text-decoder-streaming.ts",
"tests/corpus/text-codec-values/main.ts",
"tests/fixtures/node-types/text-codecs.mts",
"tests/harness/project-config.test.ts"
Expand Down Expand Up @@ -110985,7 +111010,8 @@
"tests": [
"tests/corpus/text-codec-values/main.ts",
"tests/fixtures/node-types/text-codecs.mts",
"tests/harness/project-config.test.ts"
"tests/harness/project-config.test.ts",
"tests/corpus/3133-text-decoder-streaming.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -111128,7 +111154,8 @@
"tests": [
"tests/corpus/text-codec-values/main.ts",
"tests/fixtures/node-types/text-codecs.mts",
"tests/harness/project-config.test.ts"
"tests/harness/project-config.test.ts",
"tests/corpus/3133-text-decoder-streaming.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -111241,7 +111268,8 @@
"tests": [
"tests/corpus/text-codec-values/main.ts",
"tests/fixtures/node-types/text-codecs.mts",
"tests/harness/project-config.test.ts"
"tests/harness/project-config.test.ts",
"tests/corpus/3133-text-decoder-streaming.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -111276,7 +111304,8 @@
"tests": [
"tests/corpus/text-codec-values/main.ts",
"tests/fixtures/node-types/text-codecs.mts",
"tests/harness/project-config.test.ts"
"tests/harness/project-config.test.ts",
"tests/corpus/3133-text-decoder-streaming.ts"
]
},
"dynamic": {
Expand Down
Loading
Loading