Whamm! A WebAssembly Bytecode Instrumentation DSL
summary
Wham is a WebAssembly bytecode instrumentation DSL that compiles monitors to WM modules and targets either bytecode rewriting via the Orca Rust library or engine-backed callbacks (currently Wizard/Virgil). Match rules specify function/PC locations and globals; the compiler splits predicates into static and dynamic parts and applies predication optimization (truth-table constant propagation) to remove runtime checks. Language features include report and unshared vars, demoed with a branch monitor; current requirements include multi-memory and waszy, roadmap adds component/GC support, portable engine API, composable monitors and source mapping.
AI-written summary · about
chapters (19)
- 0:00Whamm introduction
- 1:01Why WASM instrumentation
- 2:27Current WASM instrumentation
- 3:52Engine API vs bytecode
- 5:58Instrumentation anatomy
- 7:47Whamm monitor syntax
- 9:12Portable engine API design
- 11:40Optimizing predicates
- 14:33Proposing portable API
- 15:16Live demo: branch monitor
- 20:42Report variables for output
- 22:25Unshared variables for readability
- 25:21MVP status and plans
- 26:47Developer tooling vision
- 28:11Performance overhead
- 29:21Probes as WASM binaries
- 32:15Publication plans
- 33:59Support for function references
- 37:14Future of WASM debugging
related talks
23mWhamm: A Framework for Performant, Sandboxed Instrumentation.
16mDebugging WebAssembly? Put some Whamm on it!
01h 08mOn WebAssembly
35mInside the Wizard Research Engine
49mWasmer Things: An Upside-Down Guide to WebAssembly
45mWasmer Things: An Upside-Down Guide to WebAssembly
16mWasmgrind: Towards Dynamic Concurrency Analysis for Multithreaded WebAssembly
17mWasmRef-Isabelle: A Verified Monadic Interpreter and Industrial Fuzzing Oracle for(…)
