v0.2.0 — QuickJS executor backend
Highlights
- New
QuickJSExecutor— pure-WASM sandbox backend viaquickjs-emscripten. Optional peer dependency. Auto-selected on Bun and other runtimes whereisolated-vmcannot dlopen. createExecutor()— runtime-aware backend picker. Use this as the default for new integrations:executor: await createExecutor({ memoryMB: 128, timeoutMs: 60_000 }).- Stats parity —
ExecuteStatsshape locked across backends so callers can swap transparently. - Shared executor contract test suite — adding a new contract test automatically covers every backend.
When to use which backend
| Backend | Recommended for |
|---|---|
IsolatedVMExecutor |
Production on Node. Native V8 speed, mature, no upstream async bugs. |
QuickJSExecutor |
Fallback only — runtimes where isolated-vm can't load (Bun, Cloudflare Workers, browser). See README for known upstream quickjs-emscripten@0.32.0 regressions and the Promise.all-over-sequential-await guest-code constraint. |
Other changes
- Dep bumps:
vitest3 → 4,typescript5 → 6,jdx/mise-actionv2 → v4, plus non-major patches acrossconvex,hono,isolated-vm,tsx,zod. - 97/97 tests green across both executors.
Full diff: #11