Wasm 3.0 Completed Published on September 17, 2025, by Andreas Rossberg Three years after Wasm 2.0 introduced features like vector instructions, bulk memory operations, multiple return values, and simple reference types, the WebAssembly (Wasm) community proudly announces Wasm 3.0 as the new live standard. This release brings a substantial update with several major features developed over six to eight years. --- Key Features of Wasm 3.0 64-bit Address Space Memories and tables can now use 64-bit (i64) addresses instead of 32-bit (i32). Expands addressable memory from 4 GB to theoretically 16 exabytes. Web environments still limit 64-bit memory to 16 GB, but non-web ecosystems can benefit from much larger applications and data. Multiple Memories in a Single Module Allows a single module to declare and access multiple memories directly, removing prior restrictions. Enables static linking tools like wasm-merge to work on all Wasm modules. Opens possibilities for using separate address spaces for security, buffering, or instrumentation. Garbage Collection (GC) Adds a new form of storage managed automatically via a GC in the Wasm runtime. GC is low-level, focusing on memory management with structs, arrays, and unboxed tagged integers. Leaves high-level object system implementations to language compilers, avoiding bias toward specific languages. Typed References Extends the Wasm type system with richer reference types describing exact heap value shapes. Enables safe indirect function calls without runtime type or bounds checks using the new callref instruction. Supports subtyping and type recursion for function references. Tail Calls Introduces fully general tail calls, allowing functions to exit immediately after calling another, saving stack space. Supports both statically and dynamically selected callees. Facilitates language features (functional languages) and internal compiler techniques. Exception Handling Native support for exceptions with declaration of exception tags and payloads. Enables throwing and catching exceptions in Wasm modules efficiently and portably. Introduces new block instructions for exception handlers with dispatch lists for tag matching. Relaxed Vector Instructions Adds "relaxed" SIMD instruction variants with implementation-dependent behaviors in edge cases for better performance. Behavior must be chosen from a set of legal, predefined options. Deterministic Profile Defines deterministic defaults for instructions with non-deterministic results (floating-point, NaNs, relaxed SIMD). Ensures reproducible and portable code execution for use cases like blockchains and replayable systems. Custom Annotation Syntax New generic syntax for annotations in Wasm text format. Annotations don't affect Wasm semantics but can represent custom section information in human-readable form. Can be utilized by downstream standards. --- JavaScript Embeddings Enhancement JS String Builtins**: New primitive library allows Wasm modules to import functions that directly access and manipulate JavaScript string values passed as externref. --- Impact and Adoption Wasm 3.0 significantly improves support for compiling high-level languages such as: Java OCaml Scala Kotlin Scheme Dart These languages leverage the new GC feature extensively. The specification was developed using the new SpecTec toolchain, enhancing reliability. Wasm 3.0 is already shipping in major web browsers, with standalone engines like Wasmtime nearing completion of support. Current feature support can be tracked at the Wasm Feature Status page. --- Wasm 3.0 marks a major milestone with powerful new capabilities that position WebAssembly as a versatile, high-performance, and portable standard for web and non-web