Skip to content

Back to the catalog

simonwillison.netarticle

pwasm 0.2a0

Simon Willison describes pwasm, a pure-Python WebAssembly engine he originally vibe-coded in January, and how he later let Claude Opus 5.5 work on it autonomously with minimal prompting: over 42 commits the model extended it to handle almost all of the WASM spec and got working builds of MicroPython, QuickJS and Micro QuickJS running inside it, bundled in the PyPI wheel. He frames it as a rough but telling illustration of how much more capable today's coding agents are than the models used ten months earlier, while still not trusting the alpha-tagged result.

TL;DR Simon Willison let Claude Opus 5.5 autonomously extend his pure-Python WASM engine (pwasm) across 42 commits, adding near-full WASM spec support plus working MicroPython/QuickJS builds.
Document

What it claims

pwasm 0.2a0 is a pure-Python WebAssembly engine on PyPI. Simon Willison vibe-coded it in January. He then had Claude Opus 5.5 work on it with a single open-ended prompt and minimal follow-up. After 42 commits, the engine handles "almost all of the WASM specification." The PyPI wheel now bundles working WASM builds of MicroPython, QuickJS and Micro QuickJS.

How it works

The method is the prompt, which the page gives verbatim:

Evaluate current state of pwasm - then consider what it would take to get the MicroPython and micro JavaScript experiments from the research repo working under it - and what it would take to speed it up

The prompt sets three goals:

  1. Assess the existing codebase.
  2. Get the MicroPython and micro JavaScript experiments from the author's separate research repo running under the engine.
  3. Make the engine faster.

Willison describes his follow-up prompting during the 42 commits only as "minimal." The page does not show those follow-ups.

Evidence

The page reports only outcomes, with no numbers attached:

  • Spec coverage: "almost all" of WASM. No test suite or conformance figure is given.
  • Bundled runtimes: MicroPython, QuickJS and Micro QuickJS run inside the engine and ship in the wheel.

Limits

  • Performance is unreported. The prompt asked how to speed the engine up, but the page gives no performance results or benchmarks. Do not assume the engine got faster.
  • Untested coverage. "Almost all of the WASM specification" is unquantified, and the page does not name which parts are missing.
  • Untrusted by its author. Willison says "I wouldn't trust this thing at all," and the alpha version tag (0.2a0) reflects that. It is a "folly project," not something he intends for real use.
  • Missing practical details. The page gives no install command, API, licence, or Python version requirements. Check the PyPI page and the repository before trying it.
  • Weak model comparison. The comparison with models from 10 months earlier is anecdotal: one project, with no controlled baseline.

Organisations named here

  • Simon Willison

Technologies named here

  • Claude Opus 5.5
  • pwasm
  • MicroPython
  • QuickJS
  • MicroQuickJS
  • WebAssembly
  • Python