wasm-idle 1.0.11 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +92 -64
  2. package/dist/playground/aheui.d.ts +18 -0
  3. package/dist/playground/aheui.js +21 -0
  4. package/dist/playground/apecode.d.ts +18 -0
  5. package/dist/playground/apecode.js +21 -0
  6. package/dist/playground/applicationAssets.js +2 -0
  7. package/dist/playground/assets.d.ts +18 -0
  8. package/dist/playground/assets.js +28 -0
  9. package/dist/playground/commonlisp.d.ts +8 -0
  10. package/dist/playground/commonlisp.js +33 -0
  11. package/dist/playground/commonlispAssets.d.ts +30 -0
  12. package/dist/playground/commonlispAssets.js +184 -0
  13. package/dist/playground/golfscript.d.ts +6 -0
  14. package/dist/playground/golfscript.js +8 -0
  15. package/dist/playground/index.d.ts +1 -1
  16. package/dist/playground/index.js +95 -0
  17. package/dist/playground/javaRuntimeStdin.d.ts +9 -0
  18. package/dist/playground/javaRuntimeStdin.js +145 -0
  19. package/dist/playground/lean4.d.ts +13 -0
  20. package/dist/playground/lean4.js +50 -0
  21. package/dist/playground/lean4Assets.d.ts +25 -0
  22. package/dist/playground/lean4Assets.js +123 -0
  23. package/dist/playground/loadingProgress.js +4 -1
  24. package/dist/playground/python.d.ts +6 -2
  25. package/dist/playground/python.js +81 -15
  26. package/dist/playground/ruby.d.ts +6 -0
  27. package/dist/playground/ruby.js +108 -56
  28. package/dist/playground/wasiInterpreters.d.ts +15 -0
  29. package/dist/playground/wasiInterpreters.js +67 -0
  30. package/dist/playground/wasm.d.ts +3 -0
  31. package/dist/playground/wasm.js +44 -3
  32. package/dist/playground/wasmAheuiVersion.d.ts +7 -0
  33. package/dist/playground/wasmAheuiVersion.js +10 -0
  34. package/dist/playground/wasmApecodeVersion.d.ts +7 -0
  35. package/dist/playground/wasmApecodeVersion.js +9 -0
  36. package/dist/playground/wasmCommonLispVersion.d.ts +32 -0
  37. package/dist/playground/wasmCommonLispVersion.js +33 -0
  38. package/dist/playground/wasmGolfscriptVersion.d.ts +10 -0
  39. package/dist/playground/wasmGolfscriptVersion.js +10 -0
  40. package/dist/playground/wasmLean4Version.d.ts +110 -0
  41. package/dist/playground/wasmLean4Version.js +111 -0
  42. package/dist/playground/worker/golfscriptMount.d.ts +45 -0
  43. package/dist/playground/worker/golfscriptMount.js +79 -0
  44. package/dist/playground/worker/java.js +17 -29
  45. package/dist/playground/worker/python.js +311 -155
  46. package/dist/playground/worker/python.runtime.cases.d.ts +1 -0
  47. package/dist/playground/worker/python.runtime.cases.js +374 -0
  48. package/dist/playground/worker/pythonDebugPreview.d.ts +2 -0
  49. package/dist/playground/worker/pythonDebugPreview.js +55 -0
  50. package/dist/playground/worker/pythonExecution.d.ts +8 -0
  51. package/dist/playground/worker/pythonExecution.js +167 -0
  52. package/dist/playground/worker/pythonStdio.d.ts +32 -0
  53. package/dist/playground/worker/pythonStdio.js +253 -0
  54. package/dist/playground/worker/ruby.js +151 -15
  55. package/dist/playground/worker/wasm.js +106 -7
  56. package/package.json +32 -10
package/README.md CHANGED
@@ -10,6 +10,9 @@ PostgreSQL, and PHP code.
10
10
  Experimental LFortran execution is available separately from f2c Fortran; see
11
11
  [the LFortran consumer contract and local setup](docs/lfortran.md).
12
12
 
13
+ Lean 4 runs the upstream `lean --run` interpreter in the browser; see
14
+ [Lean 4 browser execution](docs/lean4.md).
15
+
13
16
  V runs the real V 0.5.2 compiler in the browser and compiles its C output with the shared
14
17
  llvm-core Clang host; see [the V browser integration](docs/v-browser.md).
15
18
 
@@ -37,63 +40,74 @@ implementations. `Editor support` lists browser LSP/compiler diagnostics when wi
37
40
  means Monaco syntax highlighting only. C, C++, and `wasm32-wasip1` Rust use the browser LLDB/WAMR
38
41
  debug runtime; the remaining debug-enabled languages retain wasm-idle's trace controls.
39
42
 
40
- | Language | Browser runtime/compiler | Stdin | Editor support | Debug |
41
- | -------------- | --------------------------------------- | ----- | -------------------- | ----- |
42
- | C3 | C3 0.8.3 + LLVM/lld WASM (byte ABI) | Yes | compiler diagnostics | - |
43
- | C | @wasm-idle/llvm-core / Clang WASI | Yes | clangd | LLDB |
44
- | C++ | @wasm-idle/llvm-core / Clang WASI | Yes | clangd | LLDB |
45
- | Objective-C | GNUstep libobjc2 + @wasm-idle/llvm-core | Yes | clangd | Trace |
46
- | Objective-C++ | GNUstep libobjc2 + @wasm-idle/llvm-core | Yes | clangd | - |
47
- | Python | Pyodide | Yes | Python LSP | Trace |
48
- | Hy | Hy 1.3.1 on Pyodide | Yes | syntax | - |
49
- | Java | TeaVM | Yes | syntax | - |
50
- | Rust | wasm-rust / browser rustc | Yes | rustc diagnostics | LLDB |
51
- | Go | wasm-go / browser Go compiler | Yes | compiler diagnostics | Trace |
52
- | D | wasm-d | Yes | syntax | - |
53
- | C# | wasm-dotnet | Yes | compiler diagnostics | - |
54
- | F# | wasm-dotnet | Yes | compiler diagnostics | - |
55
- | VB.NET | wasm-dotnet | Yes | compiler diagnostics | - |
56
- | Elixir | AtomVM / Popcorn | Yes | syntax | - |
57
- | Erlang | AtomVM / Popcorn | Yes | syntax | - |
58
- | Prolog | SWI-Prolog WASM worker | Yes | syntax | - |
59
- | Gleam | Gleam precompiled browser runtime | Yes | compiler diagnostics | - |
60
- | Grain | Grain 0.7.2 js_of_ocaml compiler + WASI | Yes | compiler diagnostics | - |
61
- | Perl | Perl WASM worker | Yes | syntax | - |
62
- | Tcl | Wacl Tcl WASM worker | Yes | syntax | - |
63
- | AWK | GoAWK WASM worker | Yes | syntax | - |
64
- | Pascal | pas2js worker | Yes | syntax | - |
65
- | Forth | WAForth WASM worker | Yes | syntax | - |
66
- | J | J playground WASM worker | Yes | syntax | - |
67
- | BQN | CBQN WASM worker | Yes | syntax | - |
68
- | Janet | Janet VM WASM worker | Yes | syntax | - |
69
- | Julia | Julia 1.3.0-DEV.560 legacy WASM worker | Yes | syntax | - |
70
- | Nim | Nim 2.2.4 WASM + clang/lld WASM | Yes | syntax | - |
71
- | Bash | GNU Bash WASIX / Wasmer SDK | Yes | syntax | - |
72
- | ClojureScript | cljs.js self-hosted compiler | Yes | syntax | - |
73
- | ReScript | ReScript 12.3.1 compiler (js_of_ocaml) | Yes | compiler diagnostics | - |
74
- | TinyGo | wasm-tinygo | Yes | syntax | - |
75
- | OCaml | wasm-of-js-of-ocaml / js_of_ocaml | Yes | syntax | - |
76
- | JavaScript | wasm-typescript / TypeScript service | Yes | TypeScript LSP | - |
77
- | TypeScript | wasm-typescript / TypeScript service | Yes | TypeScript LSP | - |
78
- | AssemblyScript | AssemblyScript compiler | Yes | AssemblyScript LSP | - |
79
- | WAT | WABT | Yes | WAT LSP | - |
80
- | WASM | Browser WebAssembly + WASI shim | Yes | syntax | - |
81
- | Lua | Wasmoon | Yes | syntax | - |
82
- | Fennel | fennel.lua on Wasmoon | Yes | syntax | - |
83
- | Zig | zig_small.wasm | Yes | syntax | - |
84
- | Scheme | Puppy Scheme / wasm-lisp | Yes | syntax | - |
85
- | Ruby | CRuby WASI | Yes | syntax | - |
86
- | Haskell | ghc-in-browser | Yes | syntax | - |
87
- | LFortran | LFortran LLVM evaluator (experimental) | Yes | compiler diagnostics | - |
88
- | Fortran | f2c + @wasm-idle/llvm-core | Yes | Fortran LSP | - |
89
- | COBOL | GnuCOBOL 3.2 + @wasm-idle/llvm-core | Yes | syntax | - |
90
- | V | V 0.5.2 + @wasm-idle/llvm-core | Yes | syntax | - |
91
- | R | WebR | Yes | syntax | - |
92
- | Octave | wasm-octave | Yes | syntax | - |
93
- | DuckDB | DuckDB-Wasm | Files | DuckDB LSP | - |
94
- | SQLite | sql.js | n/a | syntax | - |
95
- | PostgreSQL | PostgreSQL 18 / PGlite | Files | syntax | - |
96
- | PHP | PHP 8.4 / php-wasm | Yes | syntax | - |
43
+ | Language | Browser runtime/compiler | Stdin | Editor support | Debug |
44
+ | -------------- | -------------------------------------------- | ----- | -------------------- | ----- |
45
+ | GolfScript | Original GolfScript interpreter on Ruby/WASI | Yes | plain text | - |
46
+ | APECode | Original APECode interpreter on Pyodide | Yes | plain text | - |
47
+ | LOLCODE 1.3 | Original lci 1.3 interpreter on WASI | Yes | plain text | - |
48
+ | UHMLANG (엄준식) | Original Umjunsik Go interpreter on WASI | Yes | plain text | - |
49
+ | Aheui | rpaheui 1.2.5 on Pyodide | Yes | plain text | - |
50
+ | Malbolge | Ben Olmstead Malbolge on WASI | Yes | plain text | - |
51
+ | Whitespace | koturn/Whitespace 0.3 on WASI | Yes | plain text | - |
52
+ | C3 | C3 0.8.3 + LLVM/lld WASM (byte ABI) | Yes | compiler diagnostics | - |
53
+ | C | @wasm-idle/llvm-core / Clang WASI | Yes | clangd | LLDB |
54
+ | C++ | @wasm-idle/llvm-core / Clang WASI | Yes | clangd | LLDB |
55
+ | Objective-C | GNUstep libobjc2 + @wasm-idle/llvm-core | Yes | clangd | Trace |
56
+ | Objective-C++ | GNUstep libobjc2 + @wasm-idle/llvm-core | Yes | clangd | - |
57
+ | Python | Pyodide | Yes | Python LSP | Trace |
58
+ | Befunge-93 | Chris Pressey Befunge-93 on WASI | Yes | plain text | - |
59
+ | Brainfuck | susam/bfc on WASI | Yes | plain text | - |
60
+ | Hy | Hy 1.3.1 on Pyodide | Yes | syntax | - |
61
+ | Java | TeaVM | Yes | syntax | - |
62
+ | Rust | wasm-rust / browser rustc | Yes | rustc diagnostics | LLDB |
63
+ | Go | wasm-go / browser Go compiler | Yes | compiler diagnostics | Trace |
64
+ | D | wasm-d | Yes | syntax | - |
65
+ | C# | wasm-dotnet | Yes | compiler diagnostics | - |
66
+ | F# | wasm-dotnet | Yes | compiler diagnostics | - |
67
+ | VB.NET | wasm-dotnet | Yes | compiler diagnostics | - |
68
+ | Elixir | AtomVM / Popcorn | Yes | syntax | - |
69
+ | Erlang | AtomVM / Popcorn | Yes | syntax | - |
70
+ | Prolog | SWI-Prolog WASM worker | Yes | syntax | - |
71
+ | Gleam | Gleam precompiled browser runtime | Yes | compiler diagnostics | - |
72
+ | Grain | Grain 0.7.2 js_of_ocaml compiler + WASI | Yes | compiler diagnostics | - |
73
+ | Perl | Perl WASM worker | Yes | syntax | - |
74
+ | Tcl | Wacl Tcl WASM worker | Yes | syntax | - |
75
+ | AWK | GoAWK WASM worker | Yes | syntax | - |
76
+ | Pascal | pas2js worker | Yes | syntax | - |
77
+ | Forth | WAForth WASM worker | Yes | syntax | - |
78
+ | J | J playground WASM worker | Yes | syntax | - |
79
+ | BQN | CBQN WASM worker | Yes | syntax | - |
80
+ | Janet | Janet VM WASM worker | Yes | syntax | - |
81
+ | Julia | Julia 1.3.0-DEV.560 legacy WASM worker | Yes | syntax | - |
82
+ | Nim | Nim 2.2.4 WASM + clang/lld WASM | Yes | syntax | - |
83
+ | Bash | GNU Bash WASIX / Wasmer SDK | Yes | syntax | - |
84
+ | ClojureScript | cljs.js self-hosted compiler | Yes | syntax | - |
85
+ | ReScript | ReScript 12.3.1 compiler (js_of_ocaml) | Yes | compiler diagnostics | - |
86
+ | TinyGo | wasm-tinygo | Yes | syntax | - |
87
+ | OCaml | wasm-of-js-of-ocaml / js_of_ocaml | Yes | syntax | - |
88
+ | JavaScript | wasm-typescript / TypeScript service | Yes | TypeScript LSP | - |
89
+ | TypeScript | wasm-typescript / TypeScript service | Yes | TypeScript LSP | - |
90
+ | AssemblyScript | AssemblyScript compiler | Yes | AssemblyScript LSP | - |
91
+ | WAT | WABT | Yes | WAT LSP | - |
92
+ | WASM | Browser WebAssembly + WASI shim | Yes | syntax | - |
93
+ | Lua | Wasmoon | Yes | syntax | - |
94
+ | Fennel | fennel.lua on Wasmoon | Yes | syntax | - |
95
+ | Zig | zig_small.wasm | Yes | syntax | - |
96
+ | Scheme | Puppy Scheme / wasm-lisp | Yes | syntax | - |
97
+ | Common Lisp | ECL 26.5.5 (Embeddable Common-Lisp) WASM | Yes | syntax | - |
98
+ | Ruby | CRuby WASI | Yes | syntax | - |
99
+ | Haskell | ghc-in-browser | Yes | syntax | - |
100
+ | LFortran | LFortran LLVM evaluator (experimental) | Yes | compiler diagnostics | - |
101
+ | Lean 4 | Lean 4.34.1 lean --run (Emscripten) | Yes | compiler diagnostics | - |
102
+ | Fortran | f2c + @wasm-idle/llvm-core | Yes | Fortran LSP | - |
103
+ | COBOL | GnuCOBOL 3.2 + @wasm-idle/llvm-core | Yes | syntax | - |
104
+ | V | V 0.5.2 + @wasm-idle/llvm-core | Yes | syntax | - |
105
+ | R | WebR | Yes | syntax | - |
106
+ | Octave | wasm-octave | Yes | syntax | - |
107
+ | DuckDB | DuckDB-Wasm | Files | DuckDB LSP | - |
108
+ | SQLite | sql.js | n/a | syntax | - |
109
+ | PostgreSQL | PostgreSQL 18 / PGlite | Files | syntax | - |
110
+ | PHP | PHP 8.4 / php-wasm | Yes | syntax | - |
97
111
 
98
112
  ## Browser LLDB debug runtime
99
113
 
@@ -235,12 +249,21 @@ variables or import SvelteKit modules.
235
249
 
236
250
  | Language / IDs | Package/version base | Execution defaults / flags | Customization |
237
251
  | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
252
+ | GolfScript<br>`GOLFSCRIPT` | darrenks/golfscript cded5425 (upstream MIT notice), original Ruby source on the bundled Ruby/WASI VM | Loads the unchanged GolfScript CLI in a fresh Ruby VM; supports stack operations, arrays, blocks, arbitrary integers, Ruby string interpolation and original -q/-n/-r options; reads stdin to EOF, or accepts argument-array input after --, with original implicit final output | `runtimeAssets.golfscript.interpreterUrl`, `runtimeAssets.rootUrl`, `runtimeAssets.ruby`, `stdin`, `programArgs`, `activePath`, `workspaceFiles`; code-pinned original script, readonly source files, execution limits and cancellation; prepare initializes Ruby without running GolfScript source |
253
+ | APECode<br>`APECODE` | seo-rii/apecode 0.1.0 (c7ae98d3), original pure Python wheel on Pyodide; upstream has no declared standalone license | Runs the original parser and state-machine interpreter through run_source; reads numeric test cases to EOF, models rock weights, grippers and built-in states, and writes original result/trace bytes through Python file descriptors; each run creates fresh interpreter state | `runtimeAssets.apecode.baseUrl`, `runtimeAssets.rootUrl`, `stdin`, `activePath`, `workspaceFiles`; code-pinned local wheel; execution timeout, output and workspace limits plus cancellation; prepare loads the interpreter without parsing or running user source |
254
+ | LOLCODE 1.3<br>`LOLCODE` | justinmeza/lci v1.3 (GPL-3.0-or-later), wasi-sdk 33.0 build | Runs the unchanged lci lexer, parser and interpreter for LOLCODE 1.3, including functions, loops, arrays, type casts and Unicode string escapes; GIMMEH reads a line and VISIBLE normally adds a newline; each run starts with fresh state | `runtimeAssets.rootUrl`, `stdin`, `activePath`, `workspaceFiles`; fixed interpreter argv; prepare compiles the runtime without executing or validating the source |
255
+ | UHMLANG (엄준식)<br>`UHMLANG` | rycont/umjunsik-lang e973f9d2 (MIT), Go 1.25.3 WASI build | Runs the original Go lexer, parser and evaluator with signed 64-bit arithmetic, variables, jumps and conditional statements; numeric stdin is line based and character output writes Unicode code points; each execution starts with fresh state | `runtimeAssets.rootUrl`, `stdin`, `activePath`, `workspaceFiles`; fixed interpreter argv; prepare compiles the runtime without executing or validating the source |
256
+ | Aheui<br>`AHEUI` | aheui/rpaheui 1.2.5 (BSD-2-Clause) on Pyodide 314.0.7; one receipt-verified pure Python wheel | Runs the original rpaheui compiler and interpreter with --no-c --warning-limit=0, 26 stacks, a queue and a port, with Unicode character/integer stdin; normal halt returns its stack value; no handwritten parser or subset executor | `runtimeAssets.rootUrl`, `runtimeAssets.aheui.baseUrl`, `stdin`, `activePath`, `workspaceFiles`; fixed interpreter argv; prepare loads the interpreter without executing source |
257
+ | Malbolge<br>`MALBOLGE` | Original Ben Olmstead interpreter, TryItOnline/malbolge b0869870 (public domain), compiled with WASI SDK 33 | Runs the original 59049-cell ternary and self-modifying interpreter; source-file input is separate from byte stdin/stdout; EOF stores 59048; requires at least two non-whitespace source bytes | `runtimeAssets.rootUrl`, `stdin`, `activePath`, `workspaceFiles`; fixed interpreter argv; prepare compiles the runtime without executing or validating the source |
258
+ | Whitespace<br>`WHITESPACE` | koturn/Whitespace 22a57aab (MIT), compiled with WASI SDK 33 | Runs the upstream Whitespace 0.3 interpreter with a documented divisor-guard correction, copy/slide, heap, labels, calls and signed 32-bit integers; character/numeric stdin and exact stdout; character EOF is -1; source limit 65535 UTF-8 bytes | `runtimeAssets.rootUrl`, `stdin`, `activePath`, `workspaceFiles`; fixed interpreter argv; prepare compiles the runtime without executing or validating the source |
238
259
  | C3<br>`C3` | wasm-llvm/c3-browser: C3 0.8.3 / LLVM 22.1.8 | Verified c3c and builtin LLD compile real C3 in a fresh browser Worker; UTF-8 env.readByte/env.writeByte ABI and exported main; std::io and WASI unavailable | `runtimeAssets.c3.baseUrl`, `stdin`, `activePath`, `workspaceFiles`; fixed compiler flags and bounded Wasm memories |
239
- | C<br>`C` | @wasm-idle/llvm-core@1.0.11 / Clang 22.1.8 WASI sysroot from the `wasm-llvm` producer | `clang` for `wasm32-wasi`; default `-std=gnu11`; LLDB mode compiles untouched source with embedded DWARF at `-g -O0` and runs it in WAMR; normal runs still use the browser WASI host; supports `stdin` and `programArgs` | `runtimeAssets.clang.baseUrl`/`loader` or `rootUrl`; `compileArgs`, `programArgs`, `cVersion`, `activePath`, `workspaceFiles`, `debugMode`, `breakpoints`, `pauseOnEntry` |
240
- | C++<br>`CPP` | @wasm-idle/llvm-core@1.0.11 / Clang 22.1.8 WASI sysroot from the `wasm-llvm` producer | `clang++` for `wasm32-wasi`; default `-std=gnu++20`; LLDB mode compiles untouched source with embedded DWARF at `-g -O0` and runs it in WAMR; normal runs still use the browser WASI host; supports `stdin` and `programArgs` | `runtimeAssets.clang.baseUrl`/`loader` or `rootUrl`; `compileArgs`, `programArgs`, `cppVersion`, `activePath`, `workspaceFiles`, `debugMode`, `breakpoints`, `pauseOnEntry` |
241
- | Objective-C<br>`OBJC` | GNUstep libobjc2 v2.3 assets from the `wasm-llvm` producer + @wasm-idle/llvm-core@1.0.11 | `clang -x objective-c -fobjc-runtime=gnustep-2.0 -fblocks` for `wasm32-wasi`; links `libobjc.a`, `libgnustep-base.a`, and `libffi.a` when Foundation is imported; Foundation headers are inlined from `foundation-headers.json`; includes a constructor wrapper for Objective-C class registration; auto-compiles `.m`/`.mm`/`.c` workspace files; trace debug instruments active source and uses wasm-idle controls; supports `stdin` and `programArgs`; large Objective-C assets may be served as gzip-only `.gz` files through the service worker or worker fallback | `runtimeAssets.objectivec.baseUrl`/`libobjcUrl`/`headersUrl`/`libgnustepBaseUrl`/`libgnustepBaseObjectUrl`/`foundationHeadersUrl`/`libffiUrl` or `PUBLIC_WASM_OBJECTIVEC_*`; `runtimeAssets.clang.baseUrl`/`loader` for the clang toolchain; `activePath`, `workspaceFiles`, `compileArgs`, `debug`, `breakpoints`, `pauseOnEntry` |
242
- | Objective-C++<br>`OBJECTIVECXX` | Same GNUstep libobjc2 v2.3 + libc++ assets as Objective-C from the `wasm-llvm` producer + @wasm-idle/llvm-core@1.0.11; no extra compiler assets | `clang -x objective-c++ -std=gnu++20 -fobjc-runtime=gnustep-2.0 -fblocks` for `wasm32-wasi` with libc++ headers; active file defaults to `main.mm`; links `libobjc.a` (plus GNUstep Base and `libffi.a` when Foundation is imported); auto-compiles `.mm`/`.m`/`.c` workspace files; supports `stdin` and `programArgs`; trace debugging is not supported | Shares `runtimeAssets.objectivec` and `runtimeAssets.clang` with Objective-C; `activePath`, `workspaceFiles`, `compileArgs`, `programArgs` |
260
+ | C<br>`C` | @wasm-idle/llvm-core@1.1.0 / Clang 22.1.8 WASI sysroot from the `wasm-llvm` producer | `clang` for `wasm32-wasi`; default `-std=gnu11`; LLDB mode compiles untouched source with embedded DWARF at `-g -O0` and runs it in WAMR; normal runs still use the browser WASI host; supports `stdin` and `programArgs` | `runtimeAssets.clang.baseUrl`/`loader` or `rootUrl`; `compileArgs`, `programArgs`, `cVersion`, `activePath`, `workspaceFiles`, `debugMode`, `breakpoints`, `pauseOnEntry` |
261
+ | C++<br>`CPP` | @wasm-idle/llvm-core@1.1.0 / Clang 22.1.8 WASI sysroot from the `wasm-llvm` producer | `clang++` for `wasm32-wasi`; default `-std=gnu++20`; LLDB mode compiles untouched source with embedded DWARF at `-g -O0` and runs it in WAMR; normal runs still use the browser WASI host; supports `stdin` and `programArgs` | `runtimeAssets.clang.baseUrl`/`loader` or `rootUrl`; `compileArgs`, `programArgs`, `cppVersion`, `activePath`, `workspaceFiles`, `debugMode`, `breakpoints`, `pauseOnEntry` |
262
+ | Objective-C<br>`OBJC` | GNUstep libobjc2 v2.3 assets from the `wasm-llvm` producer + @wasm-idle/llvm-core@1.1.0 | `clang -x objective-c -fobjc-runtime=gnustep-2.0 -fblocks` for `wasm32-wasi`; links `libobjc.a`, `libgnustep-base.a`, and `libffi.a` when Foundation is imported; Foundation headers are inlined from `foundation-headers.json`; includes a constructor wrapper for Objective-C class registration; auto-compiles `.m`/`.mm`/`.c` workspace files; trace debug instruments active source and uses wasm-idle controls; supports `stdin` and `programArgs`; large Objective-C assets may be served as gzip-only `.gz` files through the service worker or worker fallback | `runtimeAssets.objectivec.baseUrl`/`libobjcUrl`/`headersUrl`/`libgnustepBaseUrl`/`libgnustepBaseObjectUrl`/`foundationHeadersUrl`/`libffiUrl` or `PUBLIC_WASM_OBJECTIVEC_*`; `runtimeAssets.clang.baseUrl`/`loader` for the clang toolchain; `activePath`, `workspaceFiles`, `compileArgs`, `debug`, `breakpoints`, `pauseOnEntry` |
263
+ | Objective-C++<br>`OBJECTIVECXX` | Same GNUstep libobjc2 v2.3 + libc++ assets as Objective-C from the `wasm-llvm` producer + @wasm-idle/llvm-core@1.1.0; no extra compiler assets | `clang -x objective-c++ -std=gnu++20 -fobjc-runtime=gnustep-2.0 -fblocks` for `wasm32-wasi` with libc++ headers; active file defaults to `main.mm`; links `libobjc.a` (plus GNUstep Base and `libffi.a` when Foundation is imported); auto-compiles `.mm`/`.m`/`.c` workspace files; supports `stdin` and `programArgs`; trace debugging is not supported | Shares `runtimeAssets.objectivec` and `runtimeAssets.clang` with Objective-C; `activePath`, `workspaceFiles`, `compileArgs`, `programArgs` |
243
264
  | Python<br>`PYTHON3` | static ESM `static/pyodide/pyodide.mjs` / pyodide@314.0.7 | loads `pyodide.mjs`, `pyodide.asm.mjs`, `pyodide.asm.wasm`, and `python_stdlib.zip` from the configured static asset tree on demand; supports `stdin`, workspace files, and trace debugging | `runtimeAssets.python.baseUrl`/`loader` or `rootUrl`; `stdin`, `activePath`, `workspaceFiles`, `debug`, `breakpoints`, `pauseOnEntry`, `debugPath` |
265
+ | Befunge-93<br>`BEFUNGE93` | catseye/Befunge-93 8fe4065c (BSD-3-Clause), compiled with WASI SDK 33 | Runs the original interpreter with an 80 by 25 wrapping playfield, signed 32-bit stack, string mode and self-modifying p/g instructions; character and integer stdin share the WASI terminal; character EOF is -1 | `runtimeAssets.rootUrl`, `stdin`, `activePath`, `workspaceFiles`; fixed quiet argv; prepare compiles the runtime without executing or validating the source |
266
+ | Brainfuck<br>`BRAINFUCK` | susam/bfc b1b92fc (MIT), compiled with WASI SDK 33 | Runs the pinned upstream interpreter in a browser Worker with a fresh read-only source filesystem; 30000 wrapping 8-bit cells, UTF-8 byte stdin/stdout, EOF sets the cell to zero | `runtimeAssets.rootUrl`, `stdin`, `activePath`, `workspaceFiles`; fixed interpreter argv; prepare compiles the runtime without executing or validating the source |
244
267
  | Hy<br>`HY` | Hy 1.3.1 + funcparserlib 1.0.1 pure-Python wheels on pyodide@314.0.7 | receipt-verifies the bundled wheels, unpacks them into Pyodide site-packages, and compiles Hy with `hy.compiler.hy_compile`; `(input)`/`(print)` share the Python stdin/stdout bridge; no debugger or automatic package loading | `runtimeAssets.hy.baseUrl` or `PUBLIC_WASM_HY_BASE_URL` plus the Python runtime assets; `stdin`, `activePath` |
245
268
  | Java<br>`JAVA` | @wasm-idle/runtime-teavm@0.0.0 / TeaVM compiler assets | `compiler.wasm` compiles Java to browser WASM/JS; supports `stdin` and `programArgs` | `runtimeAssets.java.baseUrl`/`loader` or `rootUrl` |
246
269
  | Rust<br>`RUST` | wasm-rust@0.1.0 / rust-1.99.0-browser-integrated-v1 + integrated LLVM/LLD 22.1.8 from the `wasm-llvm` producer; exact rustc/LLVM provenance is recorded for LLDB compatibility | browser host `wasm32-wasip1-threads`; default target `wasm32-wasip1`, selectable `wasm32-wasip1`, `wasm32-wasip2`, `wasm32-wasip3`; LLDB mode is currently limited to `wasm32-wasip1` and emits embedded DWARF with `-C debuginfo=2 -C opt-level=0`; normal Preview 1/2/3 execution remains unchanged; supports `stdin` and `programArgs` | `runtimeAssets.rust.compilerUrl`, `runtimeAssets.rust.debugModuleUrl`, or `PUBLIC_WASM_RUST_COMPILER_URL`; `rootUrl`, `rustTargetTriple`, `programArgs`, `debugMode`; compiler requests accept `edition`, `crateType`, `extendedTimeout`, `log`, and `onProgress`; runtime manifest controls compiler memory, timeout, and shared workspace size |
@@ -278,12 +301,14 @@ variables or import SvelteKit modules.
278
301
  | Fennel<br>`FENNEL` | static wasm-fennel `fennel-1.6.1.lua.gz` (official Fennel 1.6.1) on wasm-lua@0.1.0 | receipt-verified `fennel.lua` compiler evaluated by the Wasmoon Lua VM; supports `stdin` and `programArgs` | `runtimeAssets.fennel.compilerUrl` or `PUBLIC_WASM_FENNEL_COMPILER_URL` plus the Lua module URL; `programArgs` |
279
302
  | Zig<br>`ZIG` | static wasm-zig assets / `zig_small.wasm` + `std.tar.gz` | native gzip delivery for the tar standard library; default target `wasm64-wasi`; Zig compile args are appended; supports `stdin`, `compileArgs`, `programArgs` | `runtimeAssets.zig.compilerUrl`/`stdlibUrl` or `PUBLIC_WASM_ZIG_*`; `zigTargetTriple`, `activePath`, `workspaceFiles` |
280
303
  | Scheme<br>`LISP` | wasm-lisp@0.1.0 / Puppy Scheme WASM component | receipt-verified Puppy Scheme compiler/runtime; supports `stdin` and `programArgs` | `runtimeAssets.lisp.{moduleUrl,manifestUrl,manifestFingerprint}` or `PUBLIC_WASM_LISP_{MODULE_URL,MANIFEST_URL,MANIFEST_FINGERPRINT}`; `programArgs` |
304
+ | Common Lisp<br>`COMMONLISP` | receipt-pinned `wasm-llvm/producer/ecl-browser` ECL 26.5.5 artifacts downloaded into `static/wasm-commonlisp` | real upstream ECL bytecode compiler/interpreter LOADs the active file in a fresh Worker; shared-ring stdin serves READ-LINE/READ with EOF; unhandled conditions print to stderr and fail the run; recursion deeper than the browser call stack (about 150 levels in a Chromium Worker) fails as a stack-overflow error | `runtimeAssets.commonlisp.baseUrl` relocates the reviewed bundle; `stdin`, `activePath`, workspace files loadable with `LOAD`, cancellation and Wasm memory limits; no program arguments, native compiler or contrib modules |
281
305
  | Ruby<br>`RUBY` | receipt-pinned `static/wasm-ruby` profile produced from @ruby/3.4-wasm-wasi@2.10.1 + @ruby/wasm-wasi@2.10.1 | host-verifies the manifest, canonical stored module and gzip bytes, and logical WASM before transferring three owned buffers to a no-fetch CRuby 3.4 worker; supports `stdin`, `programArgs`, and workspace files | `rootUrl` mirrors reuse the bundled profile; explicit `runtimeAssets.ruby` overrides require one complete profile and same-origin canonical paths; URL-only `PUBLIC_WASM_RUBY_*` overrides fail closed; `stdin`, `programArgs`, `workspaceFiles` |
282
306
  | Haskell<br>`HASKELL` | ghc-in-browser / GHC 9.14.0.20251031 WASI rootfs | loads `dyld.mjs`, `rootfs.tar.zst`, `bsdtar.wasm`; `compileArgs` become GHC args, otherwise legacy `args` become GHC args | `runtimeAssets.haskell.moduleUrl`/`rootfsUrl`/`bsdtarUrl`; `mainSoPath`, `searchDirs`, `activePath`, `workspaceFiles` |
283
307
  | LFortran<br>`LFORTRAN` | receipt-pinned `wasm-llvm/producer/lfortran-browser` artifacts in `static/wasm-lfortran` | real LFortran 0.65.0-97-gab867a23 LLVM evaluator compiles and executes Emscripten side modules in a fresh Worker; shared-ring stdin supports delayed READ and EOF; experimental Fortran feature coverage | `runtimeAssets.lfortran.baseUrl` relocates the reviewed bundle; `stdin`, `activePath`, workspace data/include files, cancellation and execution limits; no program arguments or multi-file module build orchestration |
284
- | Fortran<br>`FORTRAN` | Netlib f2c 2022-09-09 + `@cowasm/f2c 1.0.0` libf2c + @wasm-idle/llvm-core@1.0.11 | runs `f2c.wasm` in WASI, compiles generated C with the llvm-core Clang host, links `libf2c.a`, then executes the resulting WASI module with `stdin` and `programArgs` | `runtimeAssets.fortran.baseUrl`/`f2cWasmUrl`/`libf2cUrl`/`f2cHeaderUrl`/`analyzerUrl` or `PUBLIC_WASM_FORTRAN_*`; `runtimeAssets.clang.baseUrl`/`loader` for the C backend; `activePath`, `workspaceFiles`, `compileArgs` |
285
- | COBOL<br>`COBOL` | GnuCOBOL 3.2 + GMP 6.3.0 assets from the `wasm-llvm` producer + @wasm-idle/llvm-core@1.0.11 | native gzip delivery for the frontend Wasm and filesystem tar assets; translates free-format COBOL with the real GnuCOBOL `cobc` frontend, compiles the generated C with the llvm-core Clang host, links libcob/GMP, and executes the resulting WASI module with `stdin` and `programArgs` | `runtimeAssets.cobol.baseUrl` or `PUBLIC_WASM_COBOL_BASE_URL`; `runtimeAssets.clang.baseUrl`/`loader` for the C backend; `activePath`, `workspaceFiles`, `compileArgs` |
286
- | V<br>`V` | V 0.5.2 compiler, vlib and WASI C sysroot assets from the `wasm-llvm` producer + @wasm-idle/llvm-core@1.0.11 | native gzip delivery for the compiler Wasm and filesystem tar assets; translates V to C with the real V compiler (built from the upstream `vc` bootstrap for WASI), compiles the generated C with the llvm-core Clang host, and executes the resulting WASI module with `stdin` and `programArgs` | `runtimeAssets.v.baseUrl` or `PUBLIC_WASM_V_BASE_URL`; `runtimeAssets.clang.baseUrl`/`loader` for the C backend; `activePath`, `workspaceFiles`, `compileArgs` |
308
+ | Lean 4<br>`LEAN4` | receipt-pinned `wasm-llvm/producer/lean-browser` release downloaded from its immutable commit into `static/wasm-lean4` | real Lean 4.34.1 frontend and IR interpreter (`lean --run`) built for wasm32 Emscripten with pthreads; imports a wasm32 `Init` library compiled by that build; shared-ring stdin supports interactive `getLine` and EOF | `runtimeAssets.lean4.baseUrl` relocates the reviewed bundle; `stdin`, program arguments, `activePath`, cancellation and execution limits; single-file programs importing `Init` only (no `Std`/`Lean` imports or Lake packages) |
309
+ | Fortran<br>`FORTRAN` | Netlib f2c 2022-09-09 + `@cowasm/f2c 1.0.0` libf2c + @wasm-idle/llvm-core@1.1.0 | runs `f2c.wasm` in WASI, compiles generated C with the llvm-core Clang host, links `libf2c.a`, then executes the resulting WASI module with `stdin` and `programArgs` | `runtimeAssets.fortran.baseUrl`/`f2cWasmUrl`/`libf2cUrl`/`f2cHeaderUrl`/`analyzerUrl` or `PUBLIC_WASM_FORTRAN_*`; `runtimeAssets.clang.baseUrl`/`loader` for the C backend; `activePath`, `workspaceFiles`, `compileArgs` |
310
+ | COBOL<br>`COBOL` | GnuCOBOL 3.2 + GMP 6.3.0 assets from the `wasm-llvm` producer + @wasm-idle/llvm-core@1.1.0 | native gzip delivery for the frontend Wasm and filesystem tar assets; translates free-format COBOL with the real GnuCOBOL `cobc` frontend, compiles the generated C with the llvm-core Clang host, links libcob/GMP, and executes the resulting WASI module with `stdin` and `programArgs` | `runtimeAssets.cobol.baseUrl` or `PUBLIC_WASM_COBOL_BASE_URL`; `runtimeAssets.clang.baseUrl`/`loader` for the C backend; `activePath`, `workspaceFiles`, `compileArgs` |
311
+ | V<br>`V` | V 0.5.2 compiler, vlib and WASI C sysroot assets from the `wasm-llvm` producer + @wasm-idle/llvm-core@1.1.0 | native gzip delivery for the compiler Wasm and filesystem tar assets; translates V to C with the real V compiler (built from the upstream `vc` bootstrap for WASI), compiles the generated C with the llvm-core Clang host, and executes the resulting WASI module with `stdin` and `programArgs` | `runtimeAssets.v.baseUrl` or `PUBLIC_WASM_V_BASE_URL`; `runtimeAssets.clang.baseUrl`/`loader` for the C backend; `activePath`, `workspaceFiles`, `compileArgs` |
287
312
  | R<br>`R` | versioned static `static/webr/<hash>/webr.js` / webr@0.6.0 | loads the browser ESM entry `webr.js` and its WebR runtime files from the configured static asset tree on demand; supports `stdin`, `programArgs`, and workspace files | `runtimeAssets.r.baseUrl` or `PUBLIC_WASM_R_BASE_URL`; `stdin`, `programArgs`, `activePath`, `workspaceFiles` |
288
313
  | Octave<br>`OCTAVE` | Octave 10.3.0 (octave-10.3.0-pl5321h996e327_3.tar.bz2) | Octave CLI Emscripten worker; supports `stdin` and `programArgs` | `runtimeAssets.octave.baseUrl`/`workerUrl`/`manifestUrl` or `PUBLIC_WASM_OCTAVE_*` |
289
314
  | DuckDB<br>`DUCKDB` | static ESM `static/wasm-duckdb/runtime.mjs` produced from @duckdb/duckdb-wasm@1.33.1-dev57.0 | selects the best DuckDB-Wasm MVP/EH bundle on demand and creates a fresh in-memory database per run; `stdin` is registered as `stdin.txt` and `/dev/stdin` rather than terminal stdin | `runtimeAssets.duckdb.moduleUrl` or `PUBLIC_WASM_DUCKDB_MODULE_URL` or `rootUrl`; `stdin`, `activePath`, `workspaceFiles` |
@@ -566,6 +591,9 @@ browser UI thread.
566
591
  C3 local asset setup, byte I/O ABI, and its 1 GiB default memory budget are documented in
567
592
  [C3 browser integration](docs/c3-browser.md).
568
593
 
594
+ Common Lisp (ECL) asset download, stdin behaviour and limits are documented in
595
+ [Common Lisp browser integration](docs/commonlisp.md).
596
+
569
597
  Grain's pinned upstream compiler, stdin model, and asset refresh are documented in
570
598
  [Grain browser integration](docs/grain-browser.md).
571
599
 
@@ -0,0 +1,18 @@
1
+ import Python from './python';
2
+ import { type PlaygroundRuntimeAssets } from './assets';
3
+ export type AheuiWorkerExtension = {
4
+ language: 'aheui';
5
+ version: string;
6
+ wheels: {
7
+ url: string;
8
+ fileName: string;
9
+ bytes: number;
10
+ sha256: string;
11
+ }[];
12
+ };
13
+ /** Executes the original rpaheui interpreter on the shared Pyodide worker. */
14
+ declare class Aheui extends Python {
15
+ protected readonly workerLanguage: "aheui";
16
+ protected workerLoadExtension(runtimeAssets: string | PlaygroundRuntimeAssets, currentUrl: string): AheuiWorkerExtension;
17
+ }
18
+ export default Aheui;
@@ -0,0 +1,21 @@
1
+ import Python from './python';
2
+ import { resolveAheuiBaseUrl } from './assets';
3
+ import { WASM_AHEUI_VERSION, WASM_AHEUI_WHEELS } from './wasmAheuiVersion';
4
+ /** Executes the original rpaheui interpreter on the shared Pyodide worker. */
5
+ class Aheui extends Python {
6
+ workerLanguage = 'aheui';
7
+ workerLoadExtension(runtimeAssets, currentUrl) {
8
+ const baseUrl = resolveAheuiBaseUrl(runtimeAssets, currentUrl);
9
+ return {
10
+ language: 'aheui',
11
+ version: WASM_AHEUI_VERSION,
12
+ wheels: WASM_AHEUI_WHEELS.map((wheel) => ({
13
+ url: `${baseUrl}${wheel.fileName}`,
14
+ fileName: wheel.fileName,
15
+ bytes: wheel.bytes,
16
+ sha256: wheel.sha256
17
+ }))
18
+ };
19
+ }
20
+ }
21
+ export default Aheui;
@@ -0,0 +1,18 @@
1
+ import Python from './python';
2
+ import { type PlaygroundRuntimeAssets } from './assets';
3
+ export type ApecodeWorkerExtension = {
4
+ language: 'apecode';
5
+ version: string;
6
+ wheels: {
7
+ url: string;
8
+ fileName: string;
9
+ bytes: number;
10
+ sha256: string;
11
+ }[];
12
+ };
13
+ /** Executes the original APECode interpreter on the shared Pyodide worker. */
14
+ declare class Apecode extends Python {
15
+ protected readonly workerLanguage: "apecode";
16
+ protected workerLoadExtension(runtimeAssets: string | PlaygroundRuntimeAssets, currentUrl: string): ApecodeWorkerExtension;
17
+ }
18
+ export default Apecode;
@@ -0,0 +1,21 @@
1
+ import Python from './python';
2
+ import { resolveApecodeBaseUrl } from './assets';
3
+ import { WASM_APECODE_VERSION, WASM_APECODE_WHEELS } from './wasmApecodeVersion';
4
+ /** Executes the original APECode interpreter on the shared Pyodide worker. */
5
+ class Apecode extends Python {
6
+ workerLanguage = 'apecode';
7
+ workerLoadExtension(runtimeAssets, currentUrl) {
8
+ const baseUrl = resolveApecodeBaseUrl(runtimeAssets, currentUrl);
9
+ return {
10
+ language: 'apecode',
11
+ version: WASM_APECODE_VERSION,
12
+ wheels: WASM_APECODE_WHEELS.map((wheel) => ({
13
+ url: `${baseUrl}${wheel.fileName}`,
14
+ fileName: wheel.fileName,
15
+ bytes: wheel.bytes,
16
+ sha256: wheel.sha256
17
+ }))
18
+ };
19
+ }
20
+ }
21
+ export default Apecode;
@@ -256,6 +256,8 @@ export function createApplicationRuntimeAssets(rootUrl) {
256
256
  integrity: HASKELL_RUNTIME_ASSET_RECEIPTS
257
257
  },
258
258
  lfortran: { baseUrl: asset('wasm-lfortran/') },
259
+ lean4: { baseUrl: asset('wasm-lean4/') },
260
+ commonlisp: { baseUrl: asset('wasm-commonlisp/') },
259
261
  fortran: {
260
262
  baseUrl: asset('wasm-fortran/'),
261
263
  f2cWasmUrl: asset('wasm-fortran/f2c.wasm', WASM_FORTRAN_EXECUTION_ASSET_VERSION),
@@ -597,6 +597,15 @@ export interface PlaygroundRuntimeAssets extends RuntimeAssetKeySource {
597
597
  hy?: {
598
598
  baseUrl?: string;
599
599
  };
600
+ aheui?: {
601
+ baseUrl?: string;
602
+ };
603
+ apecode?: {
604
+ baseUrl?: string;
605
+ };
606
+ golfscript?: {
607
+ interpreterUrl?: string;
608
+ };
600
609
  nim?: NimRuntimeAssetConfig;
601
610
  bash?: BashRuntimeAssetConfig;
602
611
  clojurescript?: ClojureScriptRuntimeAssetConfig;
@@ -961,3 +970,12 @@ export declare function resolveC3BaseUrl(options: string | PlaygroundRuntimeAsse
961
970
  export declare function resolveGrainBaseUrl(options: string | PlaygroundRuntimeAssets | undefined, currentUrl?: string): string;
962
971
  /** Hy wheels are code-pinned receipts served from this base URL and installed into Pyodide. */
963
972
  export declare function resolveHyBaseUrl(options: string | PlaygroundRuntimeAssets | undefined, currentUrl?: string): string;
973
+ /** Aheui's receipt-verified upstream wheel is installed into Pyodide from this base URL. */
974
+ export declare function resolveAheuiBaseUrl(options: string | PlaygroundRuntimeAssets | undefined, currentUrl?: string): string;
975
+ /** APECode's pinned original wheel is installed into Pyodide from this base URL. */
976
+ export declare function resolveApecodeBaseUrl(options?: string | PlaygroundRuntimeAssets, currentUrl?: string): string;
977
+ /** Resolve the unchanged GolfScript source; its receipt is pinned independently of the URL. */
978
+ export declare function resolveGolfscriptRuntimeAssetConfig(options: string | PlaygroundRuntimeAssets | undefined, currentUrl?: string): {
979
+ interpreterUrl: string;
980
+ assetKey: string;
981
+ };
@@ -12,6 +12,7 @@ import { WASM_RESCRIPT_ASSET_VERSION, WASM_RESCRIPT_RUNNER_RECEIPT, WASM_RESCRIP
12
12
  import { WASM_J_ASSET_VERSION, WASM_J_RUNNER_RECEIPT, WASM_J_RUNTIME_PROFILE } from './wasmJVersion';
13
13
  import { WASM_JANET_RUNTIME_BUNDLE } from './wasmJanetVersion';
14
14
  import { WASM_FENNEL_COMPILER_RECEIPT } from './wasmFennelVersion';
15
+ import { WASM_GOLFSCRIPT_ASSET_VERSION, WASM_GOLFSCRIPT_INTERPRETER_RECEIPT } from './wasmGolfscriptVersion';
15
16
  import { WASM_JULIA_RUNTIME_BUNDLE } from './wasmJuliaVersion';
16
17
  import { WASM_LISP_ASSET_VERSION } from './wasmLispVersion';
17
18
  import { WASM_NIM_RUNTIME_BUNDLE } from './wasmNimVersion';
@@ -2246,3 +2247,30 @@ export function resolveHyBaseUrl(options, currentUrl = '') {
2246
2247
  const root = typeof options === 'string' ? options : options?.rootUrl;
2247
2248
  return normalizeBaseUrl(`${normalizeRootUrl(root || '') || ''}/wasm-hy/`, currentUrl);
2248
2249
  }
2250
+ /** Aheui's receipt-verified upstream wheel is installed into Pyodide from this base URL. */
2251
+ export function resolveAheuiBaseUrl(options, currentUrl = '') {
2252
+ const configured = typeof options === 'object' ? options?.aheui?.baseUrl : undefined;
2253
+ if (configured)
2254
+ return normalizeBaseUrl(configured, currentUrl);
2255
+ const root = typeof options === 'string' ? options : options?.rootUrl;
2256
+ return normalizeBaseUrl(`${normalizeRootUrl(root || '') || ''}/wasm-aheui/`, currentUrl);
2257
+ }
2258
+ /** APECode's pinned original wheel is installed into Pyodide from this base URL. */
2259
+ export function resolveApecodeBaseUrl(options = '', currentUrl = globalThis.location?.href || 'http://localhost/') {
2260
+ const configured = typeof options === 'object' ? options?.apecode?.baseUrl : undefined;
2261
+ if (configured)
2262
+ return normalizeBaseUrl(configured, currentUrl);
2263
+ const root = typeof options === 'string' ? options : options?.rootUrl;
2264
+ return normalizeBaseUrl(`${normalizeRootUrl(root || '') || ''}/wasm-apecode/`, currentUrl);
2265
+ }
2266
+ /** Resolve the unchanged GolfScript source; its receipt is pinned independently of the URL. */
2267
+ export function resolveGolfscriptRuntimeAssetConfig(options, currentUrl = globalThis.location?.href || 'http://localhost/') {
2268
+ const configured = typeof options === 'object' ? options?.golfscript?.interpreterUrl : undefined;
2269
+ const root = typeof options === 'string' ? options : options?.rootUrl;
2270
+ const interpreterUrl = resolveConfiguredUrl(configured ||
2271
+ `${normalizeRootUrl(root || '')}/wasm-golfscript/golfscript.rb?v=${WASM_GOLFSCRIPT_ASSET_VERSION}`, currentUrl || 'http://localhost/');
2272
+ return {
2273
+ interpreterUrl,
2274
+ assetKey: JSON.stringify({ interpreterUrl, receipt: WASM_GOLFSCRIPT_INTERPRETER_RECEIPT })
2275
+ };
2276
+ }
@@ -0,0 +1,8 @@
1
+ import { StaticWorkerRuntimeSandbox } from './staticWorkerRuntime';
2
+ /** Real upstream ECL (Embeddable Common-Lisp) built to Wasm by the wasm-llvm producer. */
3
+ export default class CommonLisp extends StaticWorkerRuntimeSandbox {
4
+ readonly evidence: {
5
+ current: unknown;
6
+ };
7
+ constructor();
8
+ }
@@ -0,0 +1,33 @@
1
+ import { StaticWorkerRuntimeSandbox } from './staticWorkerRuntime';
2
+ import { preflightCommonLispRuntimeAssets, resolveCommonLispRuntimeAssetConfig } from './commonlispAssets';
3
+ /** Real upstream ECL (Embeddable Common-Lisp) built to Wasm by the wasm-llvm producer. */
4
+ export default class CommonLisp extends StaticWorkerRuntimeSandbox {
5
+ evidence;
6
+ constructor() {
7
+ const evidence = { current: undefined };
8
+ super({
9
+ displayName: 'Common Lisp',
10
+ languageId: 'COMMONLISP',
11
+ defaultActivePath: 'main.lisp',
12
+ workerLifetime: { mode: 'per-run' },
13
+ runtimePreflightDelivery: 'transfer-owned',
14
+ inlineVerifiedWorker: true,
15
+ requireExactWorkerResponseUrl: true,
16
+ moduleWorker: true,
17
+ includeExecutionLimits: true,
18
+ onEvidence(value) {
19
+ evidence.current = value;
20
+ },
21
+ stdin: {
22
+ mode: 'streaming',
23
+ sourceHintPattern: /\(\s*(?:read|read-line|read-char|read-byte|peek-char)\b|\*standard-input\*/i
24
+ },
25
+ resolveRuntimeAssets: resolveCommonLispRuntimeAssetConfig,
26
+ async preflightRuntimeAssets(urls, context) {
27
+ evidence.current = undefined;
28
+ return context.createOwnedDelivery(await preflightCommonLispRuntimeAssets(urls.baseUrl, context));
29
+ }
30
+ });
31
+ this.evidence = evidence;
32
+ }
33
+ }
@@ -0,0 +1,30 @@
1
+ import { type ExecutionLimits, type RuntimeAssetCacheOptions } from '@wasm-idle/core';
2
+ import type { PlaygroundRuntimeAssets } from './assets';
3
+ export declare const COMMONLISP_INITIAL_MEMORY_BYTES: number;
4
+ /** ecl.wasm is delivered as the producer's pinned gzip bytes; `.bin` keeps hosts from adding
5
+ * Content-Encoding, so the browser never transparently decodes it before verification. */
6
+ export declare const COMMONLISP_WASM_STORAGE_PATH = "ecl.wasm.gz.bin";
7
+ export declare const COMMONLISP_RUNTIME_MANIFEST: import("@wasm-idle/core").RuntimeRegistryManifest;
8
+ export declare function resolveCommonLispRuntimeAssetConfig(assets: string | PlaygroundRuntimeAssets, currentUrl: string): {
9
+ baseUrl: string;
10
+ workerUrl: string;
11
+ manifestFingerprint: "56f1eb7cf6470619cb3393e99d5c8ad1841a001ab758f388c006ca1d801ba071";
12
+ workerReceipt: {
13
+ readonly bytes: 11814;
14
+ readonly sha256: "46b24c0fbde93dfaa71ddbce697d717c772ad8fd03f8486ad2102c41145606c6";
15
+ };
16
+ };
17
+ export declare function preflightCommonLispRuntimeAssets(baseUrl: string, options: {
18
+ limits: ExecutionLimits;
19
+ persistentCache?: RuntimeAssetCacheOptions;
20
+ signal?: AbortSignal;
21
+ reportProgress?: (value: number, stage: string) => void;
22
+ fetch?: typeof globalThis.fetch;
23
+ }): Promise<Readonly<{
24
+ fingerprint: "56f1eb7cf6470619cb3393e99d5c8ad1841a001ab758f388c006ca1d801ba071";
25
+ 'producer-receipt.json': Uint8Array<ArrayBufferLike>;
26
+ 'ecl.mjs': Uint8Array<ArrayBufferLike>;
27
+ 'ecl.wasm': Uint8Array<ArrayBuffer>;
28
+ }>>;
29
+ /** Decode the verified gzip delivery into an exactly sized buffer and verify the logical receipt. */
30
+ export declare function decompressCommonLispWasm(compressed: Uint8Array, signal?: AbortSignal): Promise<Uint8Array<ArrayBuffer>>;