Skip to content

Add in-browser execution mode via Hemlock WASM#22

Open
nbeerbower wants to merge 1 commit into
mainfrom
claude/hemlock-browser-wasm-mode-kvu49l
Open

Add in-browser execution mode via Hemlock WASM#22
nbeerbower wants to merge 1 commit into
mainfrom
claude/hemlock-browser-wasm-mode-kvu49l

Conversation

@nbeerbower

Copy link
Copy Markdown
Contributor

Adds a Server/Browser toggle to the playground. In Browser mode, code runs
entirely client-side through the Hemlock interpreter compiled to WebAssembly
(no Grove server, no network round-trip).

  • playground.html: execution-mode toggle (persisted in localStorage), lazy
    load + init of the WASM interpreter, stdout/stderr capture, and graceful
    fallback when artifacts are missing. Check/Format/stdin (server-backed) are
    disabled in Browser mode. Supports a ?wasm=URL override for CDN hosting.
  • wasm/: vendored JS wrapper (hemlock-api.js, pre.js) plus the generated
    interpreter artifacts (hemlock.js, hemlock.wasm) built from hemlang/hemlock.
  • build-wasm.sh: regenerates the artifacts via 'make wasm-interpreter'.
  • grove.hml: serve /wasm/* static assets, streaming the binary .wasm
    byte-for-byte so it isn't corrupted by string concatenation.
  • Docs: README, wasm/README, and CLAUDE.md updated.

Frontend verified end-to-end in a headless browser (run, error output, mode
persistence, toggle re-enabling server controls).

Adds a Server/Browser toggle to the playground. In Browser mode, code runs
entirely client-side through the Hemlock interpreter compiled to WebAssembly
(no Grove server, no network round-trip).

- playground.html: execution-mode toggle (persisted in localStorage), lazy
  load + init of the WASM interpreter, stdout/stderr capture, and graceful
  fallback when artifacts are missing. Check/Format/stdin (server-backed) are
  disabled in Browser mode. Supports a ?wasm=URL override for CDN hosting.
- wasm/: vendored JS wrapper (hemlock-api.js, pre.js) plus the generated
  interpreter artifacts (hemlock.js, hemlock.wasm) built from hemlang/hemlock.
- build-wasm.sh: regenerates the artifacts via 'make wasm-interpreter'.
- grove.hml: serve /wasm/* static assets, streaming the binary .wasm
  byte-for-byte so it isn't corrupted by string concatenation.
- Docs: README, wasm/README, and CLAUDE.md updated.

Frontend verified end-to-end in a headless browser (run, error output, mode
persistence, toggle re-enabling server controls).
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.

2 participants