From 1b7de2c9c6bcb8f4bbc8ae25fa76879db1b8b9e0 Mon Sep 17 00:00:00 2001 From: "russell@unturf.com" Date: Sun, 14 Jun 2026 12:13:20 -0400 Subject: [PATCH] wasm/playground: cancel button, asm state-leak fix, restyle to match homepage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User-visible changes - Cancel button — terminates the running worker. Pyodide's slow mandelbrot no longer freezes the UI; click cancel and the elapsed counter freezes at "(cancelled @ NNNN ms)". - Live ms counter ticks per animation frame while a tier is busy, so the Pyodide tier's ~5-15 s wait is visible instead of looking hung. - Restyled to match lumbda.com: chunkfive wordmark, --green: #227842 (light) / #5ec07a (dark), lumbda-logo-green.png, lowercase "lumbda" everywhere. Pulls fonts/chunkfive locally so the playground stays self-contained. Architecture - All tier evaluations now run inside a Web Worker (wasm/app/worker.mjs) so the main thread stays responsive. Cancel = worker.terminate(); next eval respawns a fresh worker. - Loaders use new URL("./...", import.meta.url) so paths resolve against the loader file's own location — works identically in window and worker contexts, no baseURL argument needed. - C tier Emscripten build flipped to EXPORT_ES6=1; loader uses dynamic `import()` of the factory module. Integration test updated accordingly. - Python loader uses `import("pyodide.mjs")` (ES module) instead of document.createElement, which doesn't exist in workers. Bug fixes - Asm tier state leak: running the same demo twice on a cached WASM instance produced corrupted output (every other cell on row 2+ rendered as " " instead of the expected shade char). Root cause: top-level eval passed `global_env` as the env, so closures captured stale globals; fixed by passing NIL — env_lookup falls back to the CURRENT global_env via its existing two-pass walk. Multi-run regression added to the functional test suite. - fib-ack demo: (ack 3 4) was too heavy for Pyodide (minutes). Cut to (ack 3 3) + (fib 20) max so every tier finishes in seconds. Test discipline - Root `make test-all` now includes `wasm-test`. Adding a language feature without exercising it on all six implementations is no longer possible by accident. - Functional suite: 11 assertions (was 10) — adds asm multi-run stability. - Integration + unit: still 20 + 8. --- Makefile | 4 +- wasm/Makefile | 8 +- wasm/app/app.js | 168 +++++++++-- wasm/app/demos/fib-ack.lsp | 7 +- .../chunkfive/chunkfive-regular-webfont.woff | Bin 0 -> 24956 bytes .../chunkfive/chunkfive-regular-webfont.woff2 | Bin 0 -> 18792 bytes wasm/app/index.html | 47 +-- wasm/app/lumbda-logo-green.png | Bin 0 -> 12063 bytes wasm/app/runner.js | 32 +-- wasm/app/style.css | 270 ++++++++++++------ wasm/app/worker.mjs | 19 ++ wasm/asm/lumbda-asm.loader.js | 10 +- wasm/asm/lumbda.wat | 9 +- wasm/c/lumbda-c.loader.js | 33 +-- wasm/python/lumbda-py.js | 39 +-- wasm/tests/functional.mjs | 21 ++ wasm/tests/integration.mjs | 5 +- www/playground/app.js | 168 +++++++++-- www/playground/asm/lumbda-asm.loader.js | 10 +- www/playground/asm/lumbda-asm.wasm | Bin 4965 -> 4965 bytes www/playground/c/lumbda-c.js | 4 +- www/playground/c/lumbda-c.loader.js | 33 +-- www/playground/demos/fib-ack.lsp | 7 +- .../chunkfive/chunkfive-regular-webfont.woff | Bin 0 -> 24956 bytes .../chunkfive/chunkfive-regular-webfont.woff2 | Bin 0 -> 18792 bytes www/playground/index.html | 47 +-- www/playground/lumbda-logo-green.png | Bin 0 -> 12063 bytes www/playground/python/lumbda-py.js | 39 +-- www/playground/runner.js | 32 +-- www/playground/style.css | 270 ++++++++++++------ www/playground/worker.mjs | 19 ++ 31 files changed, 866 insertions(+), 435 deletions(-) create mode 100644 wasm/app/fonts/chunkfive/chunkfive-regular-webfont.woff create mode 100644 wasm/app/fonts/chunkfive/chunkfive-regular-webfont.woff2 create mode 100644 wasm/app/lumbda-logo-green.png create mode 100644 wasm/app/worker.mjs create mode 100644 www/playground/fonts/chunkfive/chunkfive-regular-webfont.woff create mode 100644 www/playground/fonts/chunkfive/chunkfive-regular-webfont.woff2 create mode 100644 www/playground/lumbda-logo-green.png create mode 100644 www/playground/worker.mjs diff --git a/Makefile b/Makefile index f933c46..0d102e5 100644 --- a/Makefile +++ b/Makefile @@ -117,9 +117,9 @@ regression-named-let-leak: c-build prove-ursa-runs: c-build @bash tests/prove-ursa-runs.sh -test-all: test c-test asm-test functional-test portal-rng-cross-test zoe-favorites-test regression-named-let-leak +test-all: test c-test asm-test functional-test portal-rng-cross-test zoe-favorites-test regression-named-let-leak wasm-test @echo "════════════════════════════════════════════════════" - @echo "All tests passed (Python + C + Assembly + functional + portal-rng-cross + zoe-favorites)" + @echo "All tests passed (Python + C + Assembly + functional + portal-rng-cross + zoe-favorites + wasm)" # ─── Benchmarks (reproducible; referenced in whitepaper §6–§11) ─── diff --git a/wasm/Makefile b/wasm/Makefile index fdec50c..763edc3 100644 --- a/wasm/Makefile +++ b/wasm/Makefile @@ -87,7 +87,7 @@ C_JIT_STUB := c/jit-stub.c C_CFLAGS := -O2 -DLUMBDA_WASM -std=c11 -D_POSIX_C_SOURCE=200809L -D_GNU_SOURCE \ -I$(C_SRC_DIR) -Wno-everything -C_LDFLAGS := -s WASM=1 -s MODULARIZE=1 -s EXPORT_ES6=0 \ +C_LDFLAGS := -s WASM=1 -s MODULARIZE=1 -s EXPORT_ES6=1 \ -s EXPORT_NAME=createLumbdaC \ -s EXPORTED_FUNCTIONS='["_lumbda_wasm_init","_lumbda_wasm_eval","_lumbda_wasm_free_result","_malloc","_free"]' \ -s EXPORTED_RUNTIME_METHODS='["cwrap","ccall","UTF8ToString","stringToUTF8","lengthBytesUTF8"]' \ @@ -128,9 +128,11 @@ $(DIST)/asm/lumbda-asm.loader.js: asm/lumbda-asm.loader.js # ─── SPA shell ───────────────────────────────────────────────────── -APP_SRC := $(wildcard app/*.html app/*.css app/*.js app/demos/*.lsp) +APP_SRC := $(wildcard app/*.html app/*.css app/*.js app/*.mjs app/demos/*.lsp) -app: $(DIST)/index.html $(DIST)/style.css $(DIST)/app.js $(DIST)/runner.js +app: $(DIST)/index.html $(DIST)/style.css $(DIST)/app.js $(DIST)/runner.js $(DIST)/worker.mjs \ + $(DIST)/lumbda-logo-green.png $(DIST)/fonts/chunkfive/chunkfive-regular-webfont.woff2 \ + $(DIST)/fonts/chunkfive/chunkfive-regular-webfont.woff $(DIST)/%: app/% @mkdir -p $(@D) diff --git a/wasm/app/app.js b/wasm/app/app.js index 53dc99c..e1a9abb 100644 --- a/wasm/app/app.js +++ b/wasm/app/app.js @@ -1,5 +1,7 @@ // wasm/app/app.js -// Single-page app shell — CodeMirror 6 editor + tier runner. +// Single-page app shell — CodeMirror 6 editor + Web-Worker-backed tier +// runner. The main thread stays responsive: the live ms counter ticks +// every animation frame, and Cancel terminates the worker mid-eval. import { EditorState } from "@codemirror/state"; import { EditorView, keymap, lineNumbers, drawSelection } from "@codemirror/view"; @@ -8,10 +10,7 @@ import { syntaxHighlighting, defaultHighlightStyle, StreamLanguage } from "@code import { scheme } from "@codemirror/legacy-modes/mode/scheme"; import { oneDark } from "@codemirror/theme-one-dark"; -import { runOnTiers } from "./runner.js"; - -const DEMOS = ["mandelbrot", "fib-ack", "sieve", "self-interp"]; -const TIERS = { python: "Python (Pyodide)", c: "C (emcc)", asm: "Asm (WAT)" }; +const TIERS = { python: "python (pyodide)", c: "c (emcc)", asm: "asm (wat)" }; const demoSources = {}; @@ -27,6 +26,7 @@ const editorParent = document.getElementById("editor"); const outputEl = document.getElementById("output"); const statusEl = document.getElementById("status"); const runBtn = document.getElementById("run"); +const cancelBtn = document.getElementById("cancel"); const editorView = new EditorView({ state: EditorState.create({ @@ -71,51 +71,157 @@ function setStatus(text, cls) { statusEl.className = "status" + (cls ? " " + cls : ""); } -function renderResults(results) { - outputEl.innerHTML = ""; - for (const r of results) { - const block = document.createElement("div"); - block.className = "tier-block"; - const h = document.createElement("h3"); - h.textContent = TIERS[r.tier] || r.tier; - const t = document.createElement("span"); - t.className = "time"; - t.textContent = ` (${r.elapsed.toFixed(0)} ms)`; - h.appendChild(t); - block.appendChild(h); - const pre = document.createElement("pre"); - if (r.error) { - pre.className = "err"; - pre.textContent = r.error; - } else { - pre.textContent = r.output; - } - block.appendChild(pre); - outputEl.appendChild(block); +// ─── Worker plumbing ─────────────────────────────────────────────── +// One worker hosts all tiers. Cancel terminates it; the next eval +// creates a fresh one. Cached Pyodide / Emscripten state is lost on +// cancel, which is the price of true cancellation. + +const workerState = { worker: null, runId: 0, pending: null }; + +function spawnWorker() { + return new Worker(new URL("./worker.mjs", import.meta.url), { type: "module" }); +} + +function ensureWorker() { + if (!workerState.worker) workerState.worker = spawnWorker(); + return workerState.worker; +} + +function runOnTierInWorker(tier, src, onLoading) { + return new Promise((resolve, reject) => { + const w = ensureWorker(); + const myRunId = ++workerState.runId; + workerState.pending = { runId: myRunId, resolve, reject }; + const handler = (e) => { + if (e.data.runId !== myRunId) return; + if (e.data.kind === "loading") { + onLoading && onLoading(e.data.tier); + } else if (e.data.kind === "done") { + w.removeEventListener("message", handler); + workerState.pending = null; + resolve(e.data.output); + } else if (e.data.kind === "error") { + w.removeEventListener("message", handler); + workerState.pending = null; + reject(new Error(e.data.message)); + } + }; + w.addEventListener("message", handler); + w.postMessage({ kind: "eval", runId: myRunId, tier, src }); + }); +} + +function cancelCurrentRun() { + if (workerState.worker) { + workerState.worker.terminate(); + workerState.worker = null; + } + if (workerState.pending) { + workerState.pending.reject(new Error("cancelled")); + workerState.pending = null; } } +// ─── Per-tier output block with live ms counter ──────────────────── + +function makeLiveBlock(tierName) { + const block = document.createElement("div"); + block.className = "tier-block"; + const h = document.createElement("h3"); + h.textContent = TIERS[tierName] || tierName; + const t = document.createElement("span"); + t.className = "time"; + t.textContent = " loading…"; + h.appendChild(t); + block.appendChild(h); + const pre = document.createElement("pre"); + pre.textContent = ""; + block.appendChild(pre); + outputEl.appendChild(block); + + let raf = 0; + let start = 0; + function tickerLoop() { + const ms = (performance.now() - start) | 0; + t.textContent = ` ${ms} ms…`; + raf = requestAnimationFrame(tickerLoop); + } + return { + startTimer() { start = performance.now(); tickerLoop(); return start; }, + stop(elapsedMs) { + if (raf) cancelAnimationFrame(raf); + t.textContent = ` (${elapsedMs.toFixed(0)} ms)`; + }, + cancelled(elapsedMs) { + if (raf) cancelAnimationFrame(raf); + t.textContent = ` (cancelled @ ${elapsedMs.toFixed(0)} ms)`; + }, + setOutput(text) { pre.textContent = text; }, + setError(msg) { pre.className = "err"; pre.textContent = msg; }, + }; +} + +// ─── Run / cancel ────────────────────────────────────────────────── + +let inFlight = false; + async function runAll() { + if (inFlight) return; + inFlight = true; runBtn.disabled = true; - setStatus("loading tiers…", "busy"); + cancelBtn.disabled = false; + setStatus("running…", "busy"); outputEl.innerHTML = ""; + let anyErr = false; + let cancelled = false; try { const tiers = selectedTiers(); const src = getEditorText(); - const results = await runOnTiers(tiers, src, (msg) => setStatus(msg, "busy")); - renderResults(results); - const anyErr = results.some((r) => r.error); - setStatus(anyErr ? "completed with errors" : "ok", anyErr ? "err" : "ok"); + for (const t of tiers) { + const live = makeLiveBlock(t); + const startMark = live.startTimer(); + try { + const output = await runOnTierInWorker(t, src, (loadingTier) => { + setStatus(`loading ${loadingTier} tier…`, "busy"); + }); + setStatus(`running ${t}…`, "busy"); + const elapsed = performance.now() - startMark; + live.stop(elapsed); + live.setOutput(output); + } catch (e) { + const elapsed = performance.now() - startMark; + if (e.message === "cancelled") { + live.cancelled(elapsed); + cancelled = true; + break; + } + live.stop(elapsed); + live.setError(e.message || String(e)); + anyErr = true; + } + } + if (cancelled) setStatus("cancelled", "warn"); + else setStatus(anyErr ? "completed with errors" : "ok", anyErr ? "err" : "ok"); } catch (e) { setStatus(`fatal: ${e.message}`, "err"); outputEl.textContent = e.stack || e.message; } finally { + inFlight = false; runBtn.disabled = false; + cancelBtn.disabled = true; } } +function onCancel() { + if (!inFlight) return; + setStatus("cancelling…", "warn"); + cancelCurrentRun(); +} + document.querySelectorAll('input[name="program"]').forEach((el) => { el.addEventListener("change", loadCurrentDemo); }); runBtn.addEventListener("click", runAll); +cancelBtn.addEventListener("click", onCancel); +cancelBtn.disabled = true; loadCurrentDemo(); diff --git a/wasm/app/demos/fib-ack.lsp b/wasm/app/demos/fib-ack.lsp index c8f4511..391dbce 100644 --- a/wasm/app/demos/fib-ack.lsp +++ b/wasm/app/demos/fib-ack.lsp @@ -10,8 +10,11 @@ ((= n 0) (ack (- m 1) 1)) (else (ack (- m 1) (ack m (- n 1)))))) +; Demo deliberately stays small so Pyodide finishes in a few seconds. +; (ack 3 4) is 125 but takes minutes via CPython-in-WASM tree-walker; +; cut down to (ack 3 3) so every tier can run it. +(display "fib(15) = ") (print (fib 15)) (display "fib(20) = ") (print (fib 20)) -(display "fib(25) = ") (print (fib 25)) (display "ack(2,3) = ") (print (ack 2 3)) -(display "ack(3,4) = ") (print (ack 3 4)) +(display "ack(3,3) = ") (print (ack 3 3)) (print "done") diff --git a/wasm/app/fonts/chunkfive/chunkfive-regular-webfont.woff b/wasm/app/fonts/chunkfive/chunkfive-regular-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..54ced0028be7f687ab80d8a6b04c9cb1621dc847 GIT binary patch literal 24956 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 Wv~vR$aD~9QksCy`0kJ?axc~rSA!HZ; literal 0 HcmV?d00001 diff --git a/wasm/app/fonts/chunkfive/chunkfive-regular-webfont.woff2 b/wasm/app/fonts/chunkfive/chunkfive-regular-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7cecf49d71379c767febb6ab2cb5ebdf0e2b3557 GIT binary patch literal 18792 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 literal 0 HcmV?d00001 diff --git a/wasm/app/index.html b/wasm/app/index.html index a7c5f6d..648ccef 100644 --- a/wasm/app/index.html +++ b/wasm/app/index.html @@ -3,7 +3,7 @@ -Lumbda playground — Lisp in your browser, three tiers +lumbda playground — lisp in your browser, three tiers