Skip to content

feat(deno): boot unchanged deno_core hello world - #4766

Merged
js2-merge-queue-bot[bot] merged 10 commits into
loopdive:mainfrom
ttraenkler:codex/4376-deno-core-boot-vertical-slice
Aug 22, 2026
Merged

feat(deno): boot unchanged deno_core hello world#4766
js2-merge-queue-bot[bot] merged 10 commits into
loopdive:mainfrom
ttraenkler:codex/4376-deno-core-boot-vertical-slice

Conversation

@ttraenkler

@ttraenkler ttraenkler commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • preserve structural values read from the standalone realm global as open carriers and call their live methods through the dynamic closure bridge
  • reuse optional-call receivers exactly once and keep calls beyond the bridge's 8-argument cap on the typed path
  • finalize Array.isArray in generateMultiModule
  • extend the hash-pinned deno_core 0.407.0 graph through timers, ext:core/mod.js, typed info arrays, and the exact hello_world usage
  • expose a narrow nine-import scalar ABI for real Rust-owned op_sum and op_print callbacks
  • record the exact architecture, measurements, limitations, and handover in fix(codegen): make Lit and styled-components emit valid Wasm #4376

Together with loopdive/v8x#1 at 92b83ba6, unchanged pinned Rust deno_core exits 0 and prints:

The sum of
1,2,3
is
6
Exception:
TypeError: serde_v8 error: invalid type; expected: array, got: Number

This is a synchronous vertical slice, not a claim that general Deno APIs, module live bindings, shared Rust/Wasm object identity, or async promise/microtask semantics are complete.

Measurements

  • raw Wasm: 3,975,227 bytes; Darwin arm64 SHA-256 452d485bd70d7cb8d5d7958e0aebfddf71463a8cb9710de56dffc9ff23f50e85, Linux x64 SHA-256 0738f4ca2b8852ee7262bd306efb70754dc4c7d5532288af2b16f46caca0eeda
  • Wasmtime 47.0.3 precompiled image: 62,035,464 bytes, SHA-256 05b75d7f1e46f92565c42e5a8a3e336983e7e2b0eecfe4889dadab9075988a5a
  • two isolated raw-Wasm stores: stages 42/43/44, two sums and six prints each
  • seven deferred Promise/eval imports remain prelinked but unexecuted

Verification

  • pre-commit and pre-push typecheck, lint, formatting, LOC/function budgets, oracle/coercion ratchets, issue integrity, and numeric-local IR parity passed
  • tests/issue-4376-deno-core-bootstrap.test.ts: 1/1
  • tests/issue-4376-realm-structural-carrier.test.ts: 8/8
  • v8x semantic integration tests: 11/11 nonignored
  • v8x public exact Script/Module/usage test with diagnostic ABI: 1/1
  • v8x generic AOT replay rejects missing, wrong-graph, and wrong-artifact SHA-256 bindings
  • Wasmtime raw-module precompile/bootstrap: 1/1 in 500.49 s
  • unchanged deno_core::hello_world: exit 0 with the exact six lines above

Relates to #4376 and loopdive/v8x#1.

ttraenkler and others added 4 commits August 22, 2026 10:22
Preserve structural values read from the realm global as open carriers, route their callable properties through the dynamic closure bridge, and finalize Array.isArray in compileMulti. Extend the pinned Deno graph through timers, core module evaluation, typed info arrays, and the exact hello_world usage.

The generated artifact now exposes a narrow scalar op_sum/op_print ABI that is value-tested in two stores and completes unchanged deno_core through real Rust callbacks. Record exact raw/precompiled measurements, verification, limitations, and next steps without claiming general Deno API support.

Co-authored-by: Codex <codex@openai.com>
Bring the verified loopdive#4376 vertical slice onto current main and refresh the raw and Wasmtime-precompiled artifact identities after the merge. The unchanged pinned deno_core example still exits 0 with the exact six-line output.

Co-authored-by: Codex <codex@openai.com>
Integrate the final five upstream commits before publication. The import-resolver change leaves the generated Deno artifact bit-for-bit identical, so the measured precompiled image and unchanged-deno_core proof remain valid.

Co-authored-by: Codex <codex@openai.com>
Replace the final dirty-tree placeholders with the committed v8x PR head that carries the unchanged deno_core vertical slice.

Co-authored-by: Codex <codex@openai.com>
js2-merge-queue-bot Bot and others added 5 commits August 22, 2026 09:33
Bring the current upstream Jest and CI maintenance onto the feature branch before final validation.\n\nCo-authored-by: Codex <codex@openai.com>
Reuse the receiver already captured by optional-call lowering so live realm getters run once, and keep calls beyond the dynamic dispatcher's arity limit on the typed field path.\n\nTreat the generated raw Wasm digest as producer-specific while continuing to pin source hashes, graph shape, size, imports, and runtime behavior.\n\nCo-authored-by: Codex <codex@openai.com>
Preserve the remote branch's newer main merges and Test262 benchmark refresh before publishing the Deno boot fixes.\n\nCo-authored-by: Codex <codex@openai.com>
@js2-merge-queue-bot
js2-merge-queue-bot Bot added this pull request to the merge queue Aug 22, 2026
Update the loopdive#4376 issue and handover with the published v8x commit, graph/artifact binding, reentrancy safety, and final integration counts.\n\nCo-authored-by: Codex <codex@openai.com>
Merged via the queue into loopdive:main with commit a2aa72d Aug 22, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant