Cross-platform assembly language and bytecode designed for execution in web browsers
WebAssembly
Paradigm
structured; stack machine[1]
Designed by
W3C
Developer
W3C
Mozilla
Microsoft
Google
Apple
First appeared
March 2017; 7 years ago (2017-03)
License
Apache License 2.0
Filename extensions
.wat (text format)
.wasm (binary format)
Website
webassembly.org
Influenced by
asm.js
PNaCl
WebAssembly (sometimes abbreviated Wasm) defines a portable binary-code format and a corresponding text format for executable programs[2] as well as software interfaces for facilitating interactions between such programs and their host environment.[3][4][5][6]
The main goal of WebAssembly is to enable high-performance applications on web pages, "but it does not make any Web-specific assumptions or provide Web-specific features, so it can be employed in other environments as well."[7] It is an open standard[8][9] and aims to support any language on any operating system,[10] and in practice all of the most popular languages already have at least some level of support.
Announced in 2015 (2015) and first released in March 2017 (2017-03), WebAssembly became a World Wide Web Consortium recommendation on 5 December 2019[11][12][13] and it received the Programming Languages Software Award from ACM SIGPLAN in 2021.[14] The World Wide Web Consortium (W3C) maintains the standard with contributions from Mozilla, Microsoft, Google, Apple, Fastly, Intel, and Red Hat.[15][16]
^"WebAssembly/design/Semantics.md". GitHub. Retrieved 23 February 2021. WebAssembly code can be considered a structured stack machine; a machine where most computations use a stack of values, but control flow is expressed in structured constructs such as blocks, ifs, and loops. In practice, implementations need not maintain an actual value stack, nor actual data structures for control; they need only behave as if they did so.
^Mozilla. "Understanding WebAssembly text format". MDN Web Docs. Retrieved 9 December 2019.
^"Introduction — WebAssembly 1.0". webassembly.github.io. Retrieved 18 June 2019. WebAssembly is an open standard...
^"Introduction — WebAssembly 1.0". webassembly.github.io. Retrieved 18 June 2019. WebAssembly is a ... code format
^"Conventions — WebAssembly 1.0". webassembly.github.io. Retrieved 17 May 2019. WebAssembly is a programming language that has multiple concrete representations (its binary format and the text format). Both map to a common structure.
^"Introduction — WebAssembly 1.0". webassembly.github.io. Retrieved 18 June 2019. ... this specification is complemented by additional documents defining interfaces to specific embedding environments such as the Web. These will each define a WebAssembly application programming interface (API) suitable for a given environment.
^"Introduction — WebAssembly 1.1". webassembly.github.io. Retrieved 19 February 2021. Its main goal is to enable high performance applications on the Web, but it does not make any Web-specific assumptions or provide Web-specific features, so it can be employed in other environments as well.
^Haas, Andreas; Rossberg, Andreas; Schuff, Derek L.; Titzer, Ben L.; Holman, Michael; Gohman, Dan; Wagner, Luke; Zakai, Alon; Bastien, JF (14 June 2017). "Bringing the Web Up to Speed with WebAssembly". SIGPLAN Notices. 52 (6): 185–200. doi:10.1145/3140587.3062363. ISSN 0362-1340. While the Web is the primary motivation for WebAssembly, nothing in its design depends on the Web or a JavaScript environment. It is an open standard specifically designed for embedding in multiple contexts, and we expect that stand-alone implementations will become available in the future.
^Cite error: The named reference :1 was invoked but never defined (see the help page).
^Cite error: The named reference Wasmer was invoked but never defined (see the help page).
^World Wide Web Consortium. "WebAssembly Core Specification". World Wide Web Consortium (W3). Retrieved 9 December 2019.
^Couriol, Bruno. "WebAssembly 1.0 Becomes a W3C Recommendation and the Fourth Language to Run Natively in Browsers". infoq.com. Retrieved 9 December 2019.
^"WebAssembly Specification — WebAssembly 1.1". webassembly.github.io. Retrieved 22 March 2021.
^"Programming Languages Software Award". www.sigplan.org.
^Cite error: The named reference ars was invoked but never defined (see the help page).
^Cite error: The named reference bytecode was invoked but never defined (see the help page).
source code to WebAssembly (or to a subset of JavaScript known as asm.js, its original compilation target before the advent of WebAssembly in 2017), primarily...
AssemblyScript is a TypeScript-based programming language that is optimized for, and statically compiled to, WebAssembly (currently using asc, the reference...
of behavior. The newer WebAssembly language can also be used as a supplement. The most sophisticated web pages, known as web apps, combine these elements...
WebAssembly. It is intended to work on any platform with a standards-compliant browser, including desktop and mobile devices. Since a progressive web...
number of bytes. LEB128 is used in the DWARF debug file format and the WebAssembly binary encoding for all integer literals. LEB128 format is very similar...
Platform (UWP) - based code to run on iOS, macOS, Linux, Android, and WebAssembly. Uno Platform is released under the Apache 2.0 license. Applications...
NET assemblies that were running on a lightweight third-party open-source .NET runtime, called DotNetAnywhere, that had been compiled to WebAssembly. The...
[citation needed] LLVM also supports WebAssembly as a target, enabling compiled programs to execute in WebAssembly-enabled environments such as Google...
engine is another name for these implementations. With the advent of WebAssembly, some engines can also execute this code in the same sandbox as regular...
JavaScript. WebAssembly is a newer language with a bytecode format designed to complement JavaScript, especially the performance-critical portions of web page...
is implemented with the standard web technologies of HTML, CSS, JavaScript, and WebAssembly. In addition, WebGL and WebGPU enable more sophisticated graphics...
destaffed. On 30 May 2017, Google announced deprecation of PNaCl in favor of WebAssembly. Although initially Google planned to remove PNaCl in first quarter of...
SpiderMonkey is an open-source JavaScript and WebAssembly engine by the Mozilla Foundation. It is the first JavaScript engine, written by Brendan Eich...
emboldening support and reduced memory usage 8.0 introduced support for using WebAssembly-based shaper embedded in fonts Most applications don't use HarfBuzz directly...
database within the browser, using the official SQLite Wasm (WebAssembly) build, or using the Web SQL Database technology, although the latter is becoming...