Technology Guide

WebAssembly & WASI

License: Apache-2.0 OR MIT

WebAssembly & WASI Logo

Field Guide

Complete Guide

WebAssembly (Wasm) is a portable binary instruction format for a stack-based virtual machine. It was originally designed so browsers could run languages other than JavaScript at near-native speed, and is a W3C standard shipped in every major browser. Code written in C, C++, Rust, Go, Zig, AssemblyScript, and increasingly other languages can be compiled to a .wasm module and executed inside a sandboxed VM with explicit, capability-based access to the outside world.

That sandboxing model is what makes Wasm interesting outside the browser. A module has no ambient access to the filesystem, network, or clock; the host must explicitly grant each capability. WASI, the WebAssembly System Interface, standardizes those host APIs so the same module can run on Wasmtime, Wasmer, WasmEdge, or a browser polyfill. The Component Model builds on top of WASI with typed interfaces (WIT), so components written in different source languages can link together without sharing ABIs.

Wasm is now used well beyond the browser: as a plugin format for Envoy and Istio, as a serverless runtime (Fastly Compute, Fermyon Spin, wasmCloud), as an embedded scripting engine inside databases and proxies, and as a secure sandbox for user-provided code.