Inside the Wizard Research Engine
summary
Wizard is a research Wasm engine that ships an in-place interpreter plus a simple Baseline JIT and an API of probes that can insert and remove probes at runtime so instrumentation is always available with low overhead. Implementations total ~18,000 lines of Virgil, probes cost ~10–20% vs ~2x for bytecode rewriting, and the Baseline compiler gives ~20× speedup over interpretation. Built tools include coverage, branch profiling, loop counters, a breakpoint debugger, and the system reliably switches between interpreter and JIT.
AI-written summary · about
chapters (19)
- 0:00WebAssembly and research engines
- 3:56Building research VMs like Wizard
- 7:21What is the Wizard engine
- 9:05Design priorities for Wizard
- 11:12Observability in VM design
- 13:57Dynamic analysis with callbacks
- 17:48Probe mechanisms in Wizard
- 22:47Code coverage with probes
- 24:54Student analyses in Wizard
- 28:03Instrumentation capabilities
- 30:56Instrumentation overhead
- 31:40Baseline JIT in Wizard
- 34:29JIT and interpreter compatibility
- 35:31Single-pass baseline compiler
- 37:15Execution tier trade-offs
- 39:45Full instrumentation with JIT
- 40:28Approachability in Wizard
- 41:54Robustness and memory safety
- 42:38Self-explanatory code
related talks
44mInside the Wizard Research Engine
35mInside the Wizard Research Engine
29mA Fast In-Place Interpreter for WebAssembly
23mWhamm: A Framework for Performant, Sandboxed Instrumentation.
16mDebugging WebAssembly? Put some Whamm on it!
40mWhamm! A WebAssembly Bytecode Instrumentation DSL
17mWasmRef-Isabelle: A Verified Monadic Interpreter and Industrial Fuzzing Oracle for(…)
25mBehind the Scenes: Debugging Kotlin/Wasm
