Wasm SpecTec: Engineering a Formal Language Standard
Joachim Breitner, Philippa Gardner, Jaehyun Lee, Sam Lindley, Matija, Pretnar, Xiaojia Rao, Andreas Rossberg, Sukyoung Ryu, Wonho Shin, Conrad, Watt, Dongjun Youn

TL;DR
Wasm SpecTec introduces a domain-specific language to automate and error-check the formal specification process of WebAssembly, reducing manual effort and improving accuracy in standardization artifacts.
Contribution
It presents a novel DSL for formal WebAssembly specifications, enabling automatic generation and validation of specification artefacts from a single source.
Findings
Successfully generates various specification artefacts
Facilitates error-checking and consistency verification
Aims to replace manual specifications with automated ones
Abstract
WebAssembly (Wasm) is a low-level bytecode language and virtual machine, intended as a compilation target for a wide range of programming languages, which is seeing increasing adoption across diverse ecosystems. As a young technology, Wasm continues to evolve -- it reached version 2.0 last year and another major update is expected soon. For a new feature to be standardised in Wasm, four key artefacts must be presented: a formal (mathematical) specification of the feature, an accompanying prose pseudocode description, an implementation in the official reference interpreter, and a suite of unit tests. This rigorous process helps to avoid errors in the design and implementation of new Wasm features, and Wasm's distinctive formal specification in particular has facilitated machine-checked proofs of various correctness properties for the language. However, manually crafting all of these…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSecurity and Verification in Computing · Advanced Malware Detection Techniques · Software Testing and Debugging Techniques
