WebAssembly: The Path to Components

November 15, 202217928


In 2019, the WASI standardization effort was started in the WebAssembly CG as a way to bootstrap an ecosystem of safe, portable WebAssembly modules running outside (or inside) the browser. The starting point of the design, captured in WASI "Preview1", included tried-and-true POSIX concepts like files and directories. However, as the standards group worked to realize high-level goals including language neutrality, low-latency startup, low-overhead virtualization, heterogeneous host environments, fine-grained sandboxing and robust composition of programs from modules, the approach of mapping classic POSIX concepts into WebAssembly kept running into problems and a new approach had to be explored. Two years (and one pandemic) later, based on experience gained from Preview1, an improved design has emerged that splits the problem in two, factoring out a foundational "component model" layer that is implemented by the WebAssembly engine, providing a more lightweight, composable, declarative unit of code, along with new Wit and World syntax for defining WASI and other component interfaces. This talk will describe some of the original problems and how they are proposed to be addressed, present some examples of next-iteration WASI interfaces in action and discuss paths of incremental adoption. PUBLICATION PERMISSIONS: Original video was published with the Creative Commons Attribution license (reuse allowed). Link: https://www.youtube.com/watch?v=phodPLY8zNE