Despite the odd name, WebAssembly (Wasm) has been adopted as a low-level VM of choice across diverse ecosystems from web, over cloud, edge, blockchain, mobile, to embedded systems. It also is becoming a compilation target for an increasingly broad range of programming languages, including enjoyable ones like Haskell and OCaml. At the same time, Wasm itself is evolving: last year it reached version 2.0, and soon we are looking forward to another substantial update adding features like tail calls, garbage collection, and threads, on its trajectory towards decent support for high-level languages.
One exciting aspect of Wasm is that it is very much informed by modern programming language research. It has an end-to-end formal specification, a soundness proof, and multiple mechanisations thereof. Moreover, various of its proposed extensions build on language-related research: on weak memory models, on type systems, on effect handlers, on formal methods, and lo and behold, advanced module systems. Recently, we sought new territory with the language specification itself: a DSL from which the official document, verified interpreters, and mechanised definitions can all be generated. Key to all this have been collaborations with patient researchers from the programming language community.