# WebAssembly (Wasm) 3.0 Confidence: high Last verified: 2026-05-22 Generation: human_only ## TL;DR WebAssembly (Wasm) is a portable binary instruction format for stack-based virtual machines, designed as a compilation target for programming languages. Wasm 3.0, completed on September 17, 2025 (announced by Andreas Rossberg of the W3C WebAssembly Community Group), represents the culmination of 6-8 years of specification work, adding 10 major features including 64-bit addressing, garbage collection, exception handling, tail calls, and multiple memories. It is now available in all major browsers and standalone engines like Wasmtime. ## Core Explanation WebAssembly was originally designed (2015-2017) to run code at near-native speed in web browsers as a complement to JavaScript, supporting languages like C, C++, and Rust. It has since expanded beyond the browser to server-side, edge computing (Cloudflare Workers), blockchain (deterministic smart contracts), and plugin systems. Wasm 3.0 (2025) transforms it from a relatively constrained compilation target into a general-purpose execution platform capable of hosting managed languages (Java, OCaml, Kotlin) with full garbage collection support. ## Detailed Analysis ### Wasm 3.0 — 10 New Features (September 17, 2025) | # | Feature | Description | |:-:|---------|------------| | 1 | **Memory64** | 64-bit addressing, expanding addressable memory from 4 GB to 16 EB (theoretical). Browsers limit to 16 GB. | | 2 | **Multiple Memories** | Single modules can declare and directly access multiple memory regions, enabling memory-to-memory copies without host intervention. | | 3 | **Garbage Collection (GC)** | Runtime-managed heap with struct, array, and tagged integer types. Language-agnostic — no built-in object system. Enables Java, Kotlin, OCaml, Dart compilation. | | 4 | **Typed References** | Subtyping and recursive types enabling safe indirect function calls (`call_ref`) without runtime type checks. | | 5 | **Tail Calls** | Function calls that exit the caller immediately, avoiding stack overflow. Supports both static and dynamic tail calls. | | 6 | **Exception Handling** | Native Wasm exceptions with tags and payloads, eliminating dependence on JavaScript exception mechanisms. | | 7 | **Relaxed SIMD** | Relaxed variants of Wasm 2.0's vector instructions, trading strict determinism for higher performance. | | 8 | **Deterministic Profile** | Default deterministic behavior for all non-deterministic operations (NaN generation, relaxed SIMD) — critical for blockchain and reproducible computing. | | 9 | **Custom Annotation Syntax** | Generic annotation syntax in the text format for embedding custom metadata, analogous to custom sections in the binary format. | | 10 | **JS String Builtins** | Wasm modules can import functions to manipulate JavaScript string externref values directly, improving JS-Wasm interop. | ### WASI Preview 2 (2024) WASI (WebAssembly System Interface) standardizes OS-level capabilities (filesystem, networking, clocks) for Wasm outside the browser. WASI Preview 2, stabilized in 2024, introduced the Component Model — a standard for composing multiple Wasm modules with typed interfaces, enabling language-agnostic component reuse. Combined, Wasm 3.0 + WASI Preview 2 + Component Model position WebAssembly as a "write once, run anywhere" platform competitive with Docker containers, but with stronger sandboxing, smaller footprints, and near-native startup times. ### Adoption - **Browsers**: Firefox, Chrome, Safari, Edge all ship Wasm 3.0 (September 2025) - **Standalone**: Wasmtime, Wasmer, WAMR support completing - **Languages**: Rust, C, C++, Go, Java, Kotlin, OCaml, Dart, Python (via Pyodide), Ruby - **Production use**: Cloudflare Workers, Shopify Functions, Figma, AutoCAD Web, Adobe Photoshop Web, 1Password - **Blockchain**: Polkadot, NEAR, Cosmos use Wasm for deterministic smart contracts ## Further Reading - [Wasm 3.0 Announcement](https://webassembly.org/news/2025-09-17-wasm-3.0/): Official release by Andreas Rossberg - [Wasi Preview 2](https://github.com/WebAssembly/WASI): System interface standard - [WebAssembly Feature Status](https://webassembly.org/features/): Engine support tracker