Paul Krill
Editor at Large

Wasm 3.0 adds 64-bit backing, language support

news
Sep 19, 20253 mins

WebAssembly 3.0 adds support for compiling high-level programming languages, with 64-bit address spacing and the ability to declare multiple memories, among other improvements.

An assortment of colorful building blocks. Build, assemble, WebAssembly
Credit: locrifa/Shutterstock

WebAssembly (Wasm) 3.0, the latest version of the binary instruction format enabling web development in multiple languages, was announced complete. The Wasm 3.0 standard features 64-bit address spacing, multiple memories, improved garbage collection, and more language support.

New features in WebAssembly 3.0 provide better support for compiling high-level programming languages, according to the Wasm W3C (World Wide Web Consortium) community group and working group overseeing development. Proponents said languages targeting Wasm with the new garbage collection feature include Java, OCaml, Scala, Kotlin, Scheme, and Dart.

Announced September 17, the Wasm 3.0 specification supports declaring memories and tables using i64 as the address type instead of just i32. This expands the available address space of Wasm applications from 4 gigabytes to (theoretically)16 exabytes, to the extent physical hardware allows.

WebAssembly 3.0 also improves garbage collection in the WasmGC extension. In addition to expanding the capabilities of raw linear memories, support was added for a new form of storage that is managed by the Wasm runtime automatically. WasmGC is low-level; a compiler targeting Wasm can declare the memory layout of its runtime data structures in terms of struct and array types, plus unboxed tagged integers, whose allocation and lifetime are then handled by Wasm. The WasmGC extension, which is built upon a substantial extension to the Wasm type system, also now supports much richer type references.

In the realm of memory, a single module now can declare multiple memories and directly access them, including copying data between them. This improvement allows tools like wasm-merge, which perform “static linking” on two or more Wasm modules by merging them into one, to work for all Wasm modules. It also paves the way for new uses of separate address spaces; examples provided were for security (separating private data), buffering, or instrumentation.

Wasm 3.0 already is shipping in most major web browsers, and support in standalone engines like Wasmtime is on track to completion, said proponents. Other improvements include:

  • The Wasm text format was enriched with generic syntax for placing annotations in Wasm source code.
  • Wasm now specifies a deterministic default behavior for every instruction with otherwise non-deterministic results—currently, this includes floating-point operators and their generated NaN values and relaxed vector instructions.
Paul Krill

Paul Krill is editor at large at InfoWorld. Paul has been covering computer technology as a news and feature reporter for more than 35 years, including 30 years at InfoWorld. He has specialized in coverage of software development tools and technologies since the 1990s, and he continues to lead InfoWorld’s news coverage of software development platforms including Java and .NET and programming languages including JavaScript, TypeScript, PHP, Python, Ruby, Rust, and Go. Long trusted as a reporter who prioritizes accuracy, integrity, and the best interests of readers, Paul is sought out by technology companies and industry organizations who want to reach InfoWorld’s audience of software developers and other information technology professionals. Paul has won a “Best Technology News Coverage” award from IDG.

More from this author