A mechanized formalization of WebAssembly 2.0 in Coq (Rocq) with soundness proofs and an extracted interpreter.
WasmCert-Coq is a formal, machine-checked mechanization of the WebAssembly 2.0 specification in the Coq proof assistant. It defines Wasm's core semantics, typing rules, and execution model, and provides proven soundness properties and an extracted interpreter. The project solves the problem of establishing a rigorous, verifiable foundation for Wasm to enable high-assurance analysis and implementation.
Programming language researchers, formal methods practitioners, and developers working on verified WebAssembly toolchains or needing certified Wasm semantics.
Developers choose WasmCert-Coq for its comprehensive, proven formalization of Wasm 2.0 with extensions, its extracted conformance-tested interpreter, and its integration with proof frameworks like Iris for advanced verification.
A mechanisation of Wasm in Rocq
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides machine-checked proofs for Wasm 2.0 semantics, including soundness, type safety, and conformance, as evidenced by published results and passing over 54,000 official tests.
Formalizes advanced features like subtyping systems from future proposals and tail-call instructions, going beyond the base specification to support cutting-edge research.
Includes an executable interpreter extracted from Coq that validates against the official test suite, ensuring practical correctness and usability for testing.
Offers a mechanized program logic using the Iris framework, enabling advanced verification techniques for properties like concurrency and resource management.
The parser for Wasm binary format is unverified, which could lead to incorrect syntax errors for valid modules, as admitted in the README's experimental section.
Compilation requires at least 8 GB of RAM, making it inaccessible for developers with limited hardware or in resource-constrained environments.
Heavily relies on Coq and formal methods knowledge, with complex setup via opam and academic-oriented documentation, hindering adoption by non-experts.
The extracted interpreter is designed for verification and testing, not optimized for speed, limiting its use in performance-critical applications or real-time execution.