WASM 3 Released With 64-bit Address Space Support |
Written by Kay Ewbank | |||
Monday, 22 September 2025 | |||
Web Assembly (WASM) 3 has been released with a number of improvements, including support for 64-bit address space; the ability to use multiple memory objects from a single module; and a garbage collector. WASM is a low-level intermediate language that can be processed by the JavaScript engine alongside JavaScript. It is designed to be portable and to run at near-native speeds to support the creation of high-performance applications on the web. The advantage of WASM is that it is a much lower level representation of the program than the equivalent JavaScript. This makes it possible for the engine to run the code much faster than the more sophisticated and expressive JavaScript. The support for 64-bit address spaces mean that memories and tables can now be declared to use i64 as their 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 that physical hardware allows. The ability to use multiple memory objects, and hence multiple address spaces, simultaneously was until now only possible by declaring and accessing each of them in separate modules. In the new version, a single module can now declare multiple memories and directly access them, including directly copying data between them. This means tools such as wasm-merge will work for all Wasm modules. The new garbage collector underpins support for a new and separate form of storage that is automatically managed by the Wasm runtime. This is limited, but means 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 is then handled by Wasm. Other improvements include the ability to use typed references that describe the exact shape of the referenced heap value, avoiding additional runtime checks that would otherwise be needed to ensure safety. This more expressive typing mechanism, including subtyping and type recursion, is also available for function references. Native exception handling has also been added. Exceptions are defined by declaring exception tags with associated payload data, and an exception can be thrown, and selectively be caught by a surrounding handler, based on its tag. In addition to these core features, embeddings of Wasm into JavaScript benefit from a new extension to the JS API, specifically JS string builtins. JavaScript string values could already be passed to Wasm as externrefs. Functions from this new primitive library can be imported into a Wasm module to directly access and manipulate such external string values inside Wasm. WASM 3 is available for use now. More InformationRelated ArticlesMicrosoft Announces Hyperlight Wasm Run WebAssembly Components Inside Node.js With Jco Wasmer's py2wasm Compiles Python To WebAssembly WCGI Is WebAssembly + Old School CGI To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.
Comments
or email your comment to: comments@i-programmer.info |
|||
Last Updated ( Monday, 22 September 2025 ) |