Repository logo
 

Mechanising and verifying the WebAssembly specification

Accepted version
Peer-reviewed

Type

Conference Object

Change log

Authors

Abstract

WebAssembly is a new low-level language currently being implemented in all major web browsers. It is designed to become the universal compilation target for the web, obsoleting existing solutions in this area, such as asm.js and Native Client. The WebAssembly working group has incorporated formal techniques into the development of the language, but their efforts so far have focussed on pen and paper formal specification.

We present a mechanised Isabelle specification for the WebAssembly language, together with a verified executable interpreter and type checker. Moreover, we present a fully mechanised proof of the soundness of the WebAssembly type system, and detail how our work on this proof has exposed several issues with the official WebAssembly specification, influencing its development. Finally, we give a brief account of our efforts in performing differential fuzzing of our interpreter against industry implementations.

Description

Keywords

46 Information and Computing Sciences, 4612 Software Engineering

Journal Title

Proceedings of the 7th ACM SIGPLAN International Conference on Certified Programs and Proofs

Conference Name

CPP '18: Certified Proofs and Programs

Journal ISSN

Volume Title

Publisher

ACM
Sponsorship
Engineering and Physical Sciences Research Council (EP/K008528/1)
Engineering and Physical Sciences Research Council (1790117)