Immersive Web Weekly

Issue #018, September 08, 2020, ImmersiveWebWeekly.com

This is the week of labor day here in North America so instead of the usual news links I'm trying something different. This week we'll take a deeper dive into WebAssembly, a technology that has arrived thanks to many person-years of (mostly thankless) labor by browser teams. WebAssembly is a new way to write fast, safe, and programming-language-agnostic code modules that nicely fit into web browsers and enable a better immersive web.

"Fast" means we can render more complex 3D scenes on time so that fewer people experience VR sickness. "Safe" means that we don't violate people's expectations about what sites can do and see. "Programming language agnostic" means that we can write in C, Go, Rust and other efficient languages that are more commonly used for XR than Javascript.

So, take a bit of time to appreciate the fruits of the web community's labor in the latest issue of the Immersive Web Weekly.

- Trevor Flowers from Transmutable

WebAssembly Concepts

This article explains the high level concepts behind WebAssembly including its goals, the problems it solves, and how it runs inside a web browser's rendering engine.

WebAssembly Community

This site links to many aspects of the WebAssembly effort including the specifications and a getting started guide.

specification webassembly.org

Bytecode Alliance

The Bytecode Alliance is an open source community dedicated to creating secure new software foundations using WebAssembly and the WebAssembly System Interface (WASI).

WebAssembly System Interface

WebAssembly is an assembly language for a conceptual machine but to work outside of the browser it also needs a system interface for a conceptual operating system. Lin Clark's introduction to WASI is the best summary of its goals and features.

Wasmtime

Wasmtime is a standalone runtime for WebAssembly that works outside of web browsers. It fits on tiny chips and effectively scales up up on servers. Wasmtime is designed to be embedded in many different applications.

Interface Types Proposal

This proposal adds a new set of interface types to WebAssembly that describe high-level values like strings, sequences, records and variants. This encourages better interoperation between WebAssembly modules and with external application programming interfaces like Web APIs.

specification github.com