wasm-idle 1.0.12 → 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 (30) hide show
  1. package/README.md +17 -7
  2. package/dist/playground/applicationAssets.js +2 -0
  3. package/dist/playground/commonlisp.d.ts +8 -0
  4. package/dist/playground/commonlisp.js +33 -0
  5. package/dist/playground/commonlispAssets.d.ts +30 -0
  6. package/dist/playground/commonlispAssets.js +184 -0
  7. package/dist/playground/index.d.ts +1 -1
  8. package/dist/playground/index.js +14 -0
  9. package/dist/playground/javaRuntimeStdin.d.ts +9 -0
  10. package/dist/playground/javaRuntimeStdin.js +145 -0
  11. package/dist/playground/lean4.d.ts +13 -0
  12. package/dist/playground/lean4.js +50 -0
  13. package/dist/playground/lean4Assets.d.ts +25 -0
  14. package/dist/playground/lean4Assets.js +123 -0
  15. package/dist/playground/loadingProgress.js +4 -1
  16. package/dist/playground/wasmCommonLispVersion.d.ts +32 -0
  17. package/dist/playground/wasmCommonLispVersion.js +33 -0
  18. package/dist/playground/wasmLean4Version.d.ts +110 -0
  19. package/dist/playground/wasmLean4Version.js +111 -0
  20. package/dist/playground/worker/java.js +17 -29
  21. package/dist/playground/worker/python.js +85 -122
  22. package/dist/playground/worker/python.runtime.cases.d.ts +1 -0
  23. package/dist/playground/worker/python.runtime.cases.js +374 -0
  24. package/dist/playground/worker/pythonDebugPreview.d.ts +2 -0
  25. package/dist/playground/worker/pythonDebugPreview.js +55 -0
  26. package/dist/playground/worker/pythonExecution.d.ts +8 -0
  27. package/dist/playground/worker/pythonExecution.js +167 -0
  28. package/dist/playground/worker/pythonStdio.d.ts +32 -0
  29. package/dist/playground/worker/pythonStdio.js +253 -0
  30. package/package.json +17 -9
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
 
@@ -91,9 +94,11 @@ debug runtime; the remaining debug-enabled languages retain wasm-idle's trace co
91
94
  | Fennel | fennel.lua on Wasmoon | Yes | syntax | - |
92
95
  | Zig | zig_small.wasm | Yes | syntax | - |
93
96
  | Scheme | Puppy Scheme / wasm-lisp | Yes | syntax | - |
97
+ | Common Lisp | ECL 26.5.5 (Embeddable Common-Lisp) WASM | Yes | syntax | - |
94
98
  | Ruby | CRuby WASI | Yes | syntax | - |
95
99
  | Haskell | ghc-in-browser | Yes | syntax | - |
96
100
  | LFortran | LFortran LLVM evaluator (experimental) | Yes | compiler diagnostics | - |
101
+ | Lean 4 | Lean 4.34.1 lean --run (Emscripten) | Yes | compiler diagnostics | - |
97
102
  | Fortran | f2c + @wasm-idle/llvm-core | Yes | Fortran LSP | - |
98
103
  | COBOL | GnuCOBOL 3.2 + @wasm-idle/llvm-core | Yes | syntax | - |
99
104
  | V | V 0.5.2 + @wasm-idle/llvm-core | Yes | syntax | - |
@@ -252,10 +257,10 @@ variables or import SvelteKit modules.
252
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 |
253
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 |
254
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 |
255
- | C<br>`C` | @wasm-idle/llvm-core@1.0.12 / 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` |
256
- | C++<br>`CPP` | @wasm-idle/llvm-core@1.0.12 / 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` |
257
- | Objective-C<br>`OBJC` | GNUstep libobjc2 v2.3 assets from the `wasm-llvm` producer + @wasm-idle/llvm-core@1.0.12 | `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` |
258
- | 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.12; 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` |
259
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` |
260
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 |
261
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 |
@@ -296,12 +301,14 @@ variables or import SvelteKit modules.
296
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` |
297
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` |
298
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 |
299
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` |
300
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` |
301
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 |
302
- | Fortran<br>`FORTRAN` | Netlib f2c 2022-09-09 + `@cowasm/f2c 1.0.0` libf2c + @wasm-idle/llvm-core@1.0.12 | 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` |
303
- | COBOL<br>`COBOL` | GnuCOBOL 3.2 + GMP 6.3.0 assets from the `wasm-llvm` producer + @wasm-idle/llvm-core@1.0.12 | 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` |
304
- | 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.12 | 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` |
305
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` |
306
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_*` |
307
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` |
@@ -584,6 +591,9 @@ browser UI thread.
584
591
  C3 local asset setup, byte I/O ABI, and its 1 GiB default memory budget are documented in
585
592
  [C3 browser integration](docs/c3-browser.md).
586
593
 
594
+ Common Lisp (ECL) asset download, stdin behaviour and limits are documented in
595
+ [Common Lisp browser integration](docs/commonlisp.md).
596
+
587
597
  Grain's pinned upstream compiler, stdin model, and asset refresh are documented in
588
598
  [Grain browser integration](docs/grain-browser.md).
589
599
 
@@ -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),
@@ -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>>;
@@ -0,0 +1,184 @@
1
+ import { AssetIntegrityError, defineRuntimeRegistryManifest, UnsupportedBrowserFeatureError, preflightRuntimeAssets, ResourceLimitError, RuntimeConfigurationError, verifyRuntimeAssetIntegrity } from '@wasm-idle/core';
2
+ import { WASM_COMMONLISP_PROFILE as profile } from './wasmCommonLispVersion';
3
+ export const COMMONLISP_INITIAL_MEMORY_BYTES = 64 * 1024 * 1024;
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 const COMMONLISP_WASM_STORAGE_PATH = 'ecl.wasm.gz.bin';
7
+ const identityAsset = (name, mediaType) => ({
8
+ key: name,
9
+ path: name,
10
+ compressedSha256: profile.assets[name].sha256,
11
+ uncompressedSha256: profile.assets[name].sha256,
12
+ compressedBytes: profile.assets[name].bytes,
13
+ uncompressedBytes: profile.assets[name].bytes,
14
+ encoding: 'identity',
15
+ mediaType
16
+ });
17
+ const deliveryAssets = [
18
+ identityAsset('producer-receipt.json', 'application/json'),
19
+ identityAsset('ecl.mjs', 'text/javascript'),
20
+ {
21
+ key: 'ecl.wasm',
22
+ path: COMMONLISP_WASM_STORAGE_PATH,
23
+ compressedSha256: profile.assets['ecl.wasm.gz'].sha256,
24
+ uncompressedSha256: profile.runtime['ecl.wasm'].sha256,
25
+ compressedBytes: profile.assets['ecl.wasm.gz'].bytes,
26
+ uncompressedBytes: profile.runtime['ecl.wasm'].bytes,
27
+ encoding: 'gzip',
28
+ mediaType: 'application/wasm'
29
+ }
30
+ ];
31
+ export const COMMONLISP_RUNTIME_MANIFEST = defineRuntimeRegistryManifest({
32
+ schemaVersion: 2,
33
+ manifestId: 'wasm-idle/commonlisp',
34
+ revision: profile.assets['producer-receipt.json'].sha256,
35
+ runtimes: [
36
+ {
37
+ runtimeId: 'COMMONLISP',
38
+ identity: {
39
+ languageId: 'COMMONLISP',
40
+ implementationId: 'ecl-emscripten',
41
+ implementationVersion: profile.version,
42
+ profile: {
43
+ profileId: profile.profileId,
44
+ manifestSchemaVersion: 1,
45
+ manifestSha256: profile.assets['producer-receipt.json'].sha256,
46
+ protocolVersion: 1,
47
+ trustProfileId: profile.profileId,
48
+ trustProfileSchemaVersion: 1
49
+ }
50
+ },
51
+ capabilities: {
52
+ stdin: 'streaming',
53
+ workspace: true,
54
+ abort: true,
55
+ artifacts: false,
56
+ streamingOutput: true
57
+ },
58
+ workerLifetime: { mode: 'per-run' },
59
+ requiredBrowserFeatures: ['wasm', 'wasm-exceptions', 'decompression-stream'],
60
+ assetRoot: '.',
61
+ assets: deliveryAssets,
62
+ contracts: {
63
+ routeId: 'COMMONLISP',
64
+ runtimeAssetKey: 'commonlisp',
65
+ documentationId: 'commonlisp',
66
+ syncTarget: 'wasm-commonlisp',
67
+ browserTestId: 'COMMONLISP'
68
+ }
69
+ }
70
+ ]
71
+ });
72
+ export function resolveCommonLispRuntimeAssetConfig(assets, currentUrl) {
73
+ const root = typeof assets === 'string' ? assets : assets.rootUrl || '';
74
+ const override = typeof assets === 'string' ? undefined : assets.commonlisp?.baseUrl;
75
+ const baseUrl = new URL(override ?? `${root.replace(/\/+$/, '')}/wasm-commonlisp/`, currentUrl);
76
+ if (!['http:', 'https:'].includes(baseUrl.protocol) ||
77
+ baseUrl.username ||
78
+ baseUrl.password ||
79
+ baseUrl.search ||
80
+ baseUrl.hash) {
81
+ throw new RuntimeConfigurationError('Common Lisp requires a credential-free HTTP(S) asset directory.', { runtimeId: 'COMMONLISP' });
82
+ }
83
+ if (!baseUrl.pathname.endsWith('/'))
84
+ baseUrl.pathname += '/';
85
+ const workerUrl = new URL('runner-worker.js', baseUrl);
86
+ workerUrl.searchParams.set('v', profile.workerReceipt.sha256);
87
+ return {
88
+ baseUrl: baseUrl.href,
89
+ workerUrl: workerUrl.href,
90
+ manifestFingerprint: profile.assets['producer-receipt.json'].sha256,
91
+ workerReceipt: profile.workerReceipt
92
+ };
93
+ }
94
+ export async function preflightCommonLispRuntimeAssets(baseUrl, options) {
95
+ if (options.limits.maxWasmMemoryBytes < COMMONLISP_INITIAL_MEMORY_BYTES) {
96
+ throw new ResourceLimitError('Common Lisp needs at least 64 MiB of Wasm memory.', {
97
+ runtimeId: 'COMMONLISP',
98
+ phase: 'asset',
99
+ resource: 'wasm-memory',
100
+ actual: COMMONLISP_INITIAL_MEMORY_BYTES,
101
+ limit: options.limits.maxWasmMemoryBytes
102
+ });
103
+ }
104
+ const loaded = new Map();
105
+ const total = deliveryAssets.reduce((sum, asset) => sum + asset.compressedBytes, 0);
106
+ const result = await preflightRuntimeAssets({
107
+ manifest: COMMONLISP_RUNTIME_MANIFEST,
108
+ runtimeId: 'COMMONLISP',
109
+ rootUrl: baseUrl,
110
+ assetUrls: Object.fromEntries(deliveryAssets.map((asset) => [
111
+ asset.key,
112
+ new URL(`${asset.path}?v=${asset.compressedSha256}`, baseUrl)
113
+ ])),
114
+ limits: options.limits,
115
+ persistentCache: options.persistentCache,
116
+ signal: options.signal,
117
+ fetch: options.fetch,
118
+ redirect: 'error',
119
+ requireExactResponseUrl: true,
120
+ maxConcurrentDownloads: 2,
121
+ maxTotalDeliveryBytes: total,
122
+ reportProgress(progress) {
123
+ loaded.set(progress.assetKey, progress.loadedBytes);
124
+ options.reportProgress?.(0.04 + (0.13 * [...loaded.values()].reduce((a, b) => a + b, 0)) / total, `Verifying ECL ${progress.assetKey}`);
125
+ }
126
+ });
127
+ const wasm = await decompressCommonLispWasm(result.assets['ecl.wasm'].bytes, options.signal);
128
+ return Object.freeze({
129
+ fingerprint: profile.assets['producer-receipt.json'].sha256,
130
+ 'producer-receipt.json': result.assets['producer-receipt.json'].bytes,
131
+ 'ecl.mjs': result.assets['ecl.mjs'].bytes,
132
+ 'ecl.wasm': wasm
133
+ });
134
+ }
135
+ /** Decode the verified gzip delivery into an exactly sized buffer and verify the logical receipt. */
136
+ export async function decompressCommonLispWasm(compressed, signal) {
137
+ const context = { runtimeId: 'COMMONLISP', profileId: profile.profileId };
138
+ if (typeof DecompressionStream !== 'function')
139
+ throw new UnsupportedBrowserFeatureError('DecompressionStream(gzip)', {
140
+ ...context,
141
+ phase: 'asset'
142
+ });
143
+ const expected = profile.runtime['ecl.wasm'];
144
+ const body = new Response(Uint8Array.from(compressed)).body;
145
+ const reader = body.pipeThrough(new DecompressionStream('gzip')).getReader();
146
+ const wasm = new Uint8Array(expected.bytes);
147
+ let offset = 0;
148
+ try {
149
+ for (;;) {
150
+ signal?.throwIfAborted();
151
+ const { done, value } = await reader.read();
152
+ if (done)
153
+ break;
154
+ if (offset + value.byteLength > wasm.byteLength)
155
+ throw new AssetIntegrityError('ECL ecl.wasm gzip output exceeds its receipt', context);
156
+ wasm.set(value, offset);
157
+ offset += value.byteLength;
158
+ }
159
+ }
160
+ catch (error) {
161
+ void reader.cancel().catch(() => undefined);
162
+ if (error instanceof AssetIntegrityError || signal?.aborted)
163
+ throw error;
164
+ throw new AssetIntegrityError('ECL ecl.wasm gzip decompression failed', {
165
+ ...context,
166
+ cause: error
167
+ });
168
+ }
169
+ if (offset !== wasm.byteLength)
170
+ throw new AssetIntegrityError('ECL ecl.wasm gzip output is truncated', context);
171
+ await verifyRuntimeAssetIntegrity({
172
+ asset: 'ecl.wasm',
173
+ bytes: wasm,
174
+ expected: {
175
+ ...expected,
176
+ uncompressedSha256: expected.sha256,
177
+ uncompressedBytes: expected.bytes
178
+ },
179
+ stage: 'uncompressed',
180
+ mimeType: 'application/wasm',
181
+ ...context
182
+ });
183
+ return wasm;
184
+ }
@@ -1,6 +1,6 @@
1
1
  import type { BoundSandbox, PlaygroundBinding, Sandbox, SandboxRuntimeAssets } from './sandbox';
2
2
  import { type PlaygroundBindingOptions } from '@wasm-idle/core';
3
- export declare const supportedLanguages: ("C" | "CPP" | "OBJC" | "OBJECTIVECXX" | "D" | "TINYGO" | "RUBY" | "PERL" | "TCL" | "AWK" | "PASCAL" | "JANET" | "JULIA" | "NIM" | "BASH" | "GOLFSCRIPT" | "APECODE" | "AHEUI" | "PYTHON3" | "BRAINFUCK" | "BEFUNGE93" | "WHITESPACE" | "MALBOLGE" | "UHMLANG" | "LOLCODE" | "WASM" | "BQN" | "CLOJURESCRIPT" | "FORTH" | "J" | "PROLOG" | "RESCRIPT" | "C3" | "JAVA" | "RUST" | "GO" | "CSHARP" | "FSHARP" | "VBNET" | "ELIXIR" | "ERLANG" | "GLEAM" | "GRAIN" | "HY" | "FORTRAN" | "LFORTRAN" | "COBOL" | "V" | "OCAML" | "JAVASCRIPT" | "TYPESCRIPT" | "ASSEMBLYSCRIPT" | "WAT" | "LUA" | "FENNEL" | "ZIG" | "LISP" | "HASKELL" | "R" | "OCTAVE" | "DUCKDB" | "SQLITE" | "POSTGRESQL" | "PHP")[];
3
+ export declare const supportedLanguages: ("C" | "CPP" | "OBJC" | "OBJECTIVECXX" | "D" | "TINYGO" | "RUBY" | "PERL" | "TCL" | "AWK" | "PASCAL" | "JANET" | "JULIA" | "NIM" | "BASH" | "GOLFSCRIPT" | "APECODE" | "AHEUI" | "PYTHON3" | "BRAINFUCK" | "BEFUNGE93" | "WHITESPACE" | "MALBOLGE" | "UHMLANG" | "LOLCODE" | "WASM" | "BQN" | "CLOJURESCRIPT" | "FORTH" | "J" | "PROLOG" | "RESCRIPT" | "C3" | "JAVA" | "RUST" | "GO" | "CSHARP" | "FSHARP" | "VBNET" | "ELIXIR" | "ERLANG" | "GLEAM" | "GRAIN" | "HY" | "FORTRAN" | "LFORTRAN" | "LEAN4" | "COBOL" | "V" | "OCAML" | "JAVASCRIPT" | "TYPESCRIPT" | "ASSEMBLYSCRIPT" | "WAT" | "LUA" | "FENNEL" | "ZIG" | "LISP" | "COMMONLISP" | "HASKELL" | "R" | "OCTAVE" | "DUCKDB" | "SQLITE" | "POSTGRESQL" | "PHP")[];
4
4
  export declare function createPlaygroundBinding(runtimeAssets: SandboxRuntimeAssets, options?: PlaygroundBindingOptions): PlaygroundBinding;
5
5
  declare function playground(language: string): Promise<Sandbox>;
6
6
  declare function playground(language: string, runtimeAssets: SandboxRuntimeAssets, options?: PlaygroundBindingOptions): Promise<BoundSandbox>;
@@ -312,6 +312,13 @@ const sandboxRoutes = [
312
312
  return new LFortran();
313
313
  }
314
314
  },
315
+ {
316
+ languageId: 'LEAN4',
317
+ load: async () => {
318
+ const { default: Lean4 } = await import('./lean4');
319
+ return new Lean4();
320
+ }
321
+ },
315
322
  {
316
323
  languageId: 'FORTRAN',
317
324
  load: async () => {
@@ -410,6 +417,13 @@ const sandboxRoutes = [
410
417
  return new Lisp();
411
418
  }
412
419
  },
420
+ {
421
+ languageId: 'COMMONLISP',
422
+ load: async () => {
423
+ const { default: CommonLisp } = await import('./commonlisp');
424
+ return new CommonLisp();
425
+ }
426
+ },
413
427
  {
414
428
  languageId: 'RUBY',
415
429
  load: async () => {
@@ -0,0 +1,9 @@
1
+ import { type PreparedJavaStdinInjection } from './javaStdin';
2
+ /** Browser execution input is runtime data. Retain the snapshot API for standalone callers. */
3
+ export declare function prepareJavaRuntimeStdinInjection(code: string): PreparedJavaStdinInjection;
4
+ /** Single cursor shared by compatibility byte reads and bounded block reads. */
5
+ export declare function createJavaStdinBridge(initialInput: string, explicit: boolean, readInput: () => string | null, maxChunkBytes?: number): {
6
+ readByte(): number;
7
+ readChunk(): Int8Array | null;
8
+ dispose(): void;
9
+ };
@@ -0,0 +1,145 @@
1
+ import { prepareJavaStdinInjection } from './javaStdin';
2
+ /** Browser execution input is runtime data. Retain the snapshot API for standalone callers. */
3
+ export function prepareJavaRuntimeStdinInjection(code) {
4
+ const injection = prepareJavaStdinInjection(code, '', false);
5
+ if (!injection.usesStdin || !injection.helperSourcePath)
6
+ return injection;
7
+ const parts = injection.helperSourcePath.split('/');
8
+ const className = parts.pop().replace(/\.java$/, '');
9
+ const packageName = parts.join('.');
10
+ return {
11
+ ...injection,
12
+ stdinCacheKey: 'host-chunks-v2-jso',
13
+ helperSource: `${packageName ? `package ${packageName};\n\n` : ''}import java.io.InputStream;
14
+ import org.teavm.jso.JSObject;
15
+ import org.teavm.jso.browser.Window;
16
+ import org.teavm.jso.core.JSFunction;
17
+ import org.teavm.jso.core.JSMapLike;
18
+ import org.teavm.jso.core.JSObjects;
19
+ import org.teavm.jso.typedarrays.Int8Array;
20
+
21
+ final class ${className} extends InputStream {
22
+ private static final ${className} INSTANCE = new ${className}();
23
+ private byte[] chunk = new byte[0];
24
+ private int position = 0;
25
+ private boolean ended = false;
26
+
27
+ private ${className}() {}
28
+
29
+ static InputStream open() {
30
+ return INSTANCE;
31
+ }
32
+
33
+ // Use classlib overlay methods: the pinned source compiler cannot compile @JSBody.
34
+ // A host call obtains a block; copying its bytes keeps Java array ownership explicit.
35
+ private static byte[] readFromHost() {
36
+ Window current = Window.current();
37
+ if (current == null) return null;
38
+ JSMapLike<JSObject> globals = current.cast();
39
+ JSObject stdin = globals.get("wasmIdleJavaStdin");
40
+ if (stdin == null) return null;
41
+ JSMapLike<JSObject> input = stdin.cast();
42
+ if (JSObjects.hasProperty(stdin, "readChunk")) {
43
+ JSFunction readChunk = input.get("readChunk").cast();
44
+ JSObject result = (JSObject) readChunk.call(stdin);
45
+ if (result == null) return null;
46
+ Int8Array array = result.cast();
47
+ byte[] next = new byte[array.getLength()];
48
+ for (int i = 0; i < next.length; i++) next[i] = array.get(i);
49
+ return next;
50
+ }
51
+ JSFunction readByte = input.get("readByte").cast();
52
+ Object value = readByte.call(stdin);
53
+ int next = value != null ? Integer.parseInt(value.toString()) : -1;
54
+ return next < 0 ? null : new byte[] { (byte) next };
55
+ }
56
+
57
+ private boolean ensureChunk() {
58
+ while (position == chunk.length && !ended) {
59
+ byte[] next = readFromHost();
60
+ position = 0;
61
+ if (next == null) {
62
+ chunk = new byte[0];
63
+ ended = true;
64
+ } else {
65
+ chunk = next;
66
+ }
67
+ }
68
+ return position < chunk.length;
69
+ }
70
+
71
+ @Override
72
+ public int read() {
73
+ return ensureChunk() ? chunk[position++] & 0xff : -1;
74
+ }
75
+
76
+ @Override
77
+ public int read(byte[] bytes, int offset, int length) {
78
+ if (bytes == null) throw new NullPointerException();
79
+ if (offset < 0 || length < 0 || length > bytes.length - offset) {
80
+ throw new IndexOutOfBoundsException();
81
+ }
82
+ if (length == 0) return 0;
83
+ if (!ensureChunk()) return -1;
84
+ int count = Math.min(length, chunk.length - position);
85
+ System.arraycopy(chunk, position, bytes, offset, count);
86
+ position += count;
87
+ return count;
88
+ }
89
+
90
+ @Override
91
+ public int available() {
92
+ return chunk.length - position;
93
+ }
94
+ }
95
+ `
96
+ };
97
+ }
98
+ /** Single cursor shared by compatibility byte reads and bounded block reads. */
99
+ export function createJavaStdinBridge(initialInput, explicit, readInput, maxChunkBytes = 4096) {
100
+ if (!Number.isSafeInteger(maxChunkBytes) || maxChunkBytes < 1) {
101
+ throw new RangeError('Java stdin chunk size must be a positive safe integer');
102
+ }
103
+ const encoder = new TextEncoder();
104
+ let bytes = encoder.encode(initialInput);
105
+ let offset = 0;
106
+ let ended = false;
107
+ function ensureBytes() {
108
+ while (offset === bytes.length && !ended) {
109
+ const input = explicit ? null : readInput();
110
+ bytes = input === null ? new Uint8Array(0) : encoder.encode(input);
111
+ offset = 0;
112
+ ended = input === null;
113
+ }
114
+ return offset < bytes.length;
115
+ }
116
+ function releaseConsumed() {
117
+ if (offset === bytes.length) {
118
+ bytes = new Uint8Array(0);
119
+ offset = 0;
120
+ }
121
+ }
122
+ return {
123
+ readByte() {
124
+ if (!ensureBytes())
125
+ return -1;
126
+ const value = bytes[offset++];
127
+ releaseConsumed();
128
+ return value;
129
+ },
130
+ readChunk() {
131
+ if (!ensureBytes())
132
+ return null;
133
+ const count = Math.min(maxChunkBytes, bytes.length - offset);
134
+ const chunk = new Int8Array(bytes.buffer, bytes.byteOffset + offset, count);
135
+ offset += count;
136
+ releaseConsumed();
137
+ return chunk;
138
+ },
139
+ dispose() {
140
+ bytes = new Uint8Array(0);
141
+ offset = 0;
142
+ ended = true;
143
+ }
144
+ };
145
+ }
@@ -0,0 +1,13 @@
1
+ import { StaticWorkerRuntimeSandbox } from './staticWorkerRuntime';
2
+ /** Upstream Lean 4 frontend and IR interpreter (`lean --run`) compiled to wasm32 Emscripten. */
3
+ export default class Lean4 extends StaticWorkerRuntimeSandbox {
4
+ readonly defaultExecutionLimits: Readonly<{
5
+ maxWasmMemoryBytes: number;
6
+ }>;
7
+ readonly evidence: {
8
+ current: unknown;
9
+ };
10
+ constructor();
11
+ load(...args: Parameters<StaticWorkerRuntimeSandbox['load']>): Promise<void>;
12
+ run(...args: Parameters<StaticWorkerRuntimeSandbox['run']>): Promise<string | boolean>;
13
+ }