← Back to results

WebAssembly - Wikipedia Jump to content Main menu Main m

enu move to sidebar hide Navigation Main page Contents Current events Random article About Wikipedia Contact us Contribute Help Learn to edit Community portal Recent changes Upload file Special pages Search Search Appearance Donate Create account Log in Personal tools Donate Create account Log in Contents move to sidebar hide (Top) 1 History 2 Implementations Toggle Implementations subsection 2.1 Web browsers 2.2 Non-browser runtimes 2.3 Compilers 2.3.1 Compiler toolchains 2.3.2 Language support 3 Limits 4 Security considerations 5 Performance 6 WASI 7 Specification Toggle Specification subsection 7.1 Host environment 7.2 Virtual machine 7.3 Wasm program 7.3.1 Instruction set 7.3.2 Code representation 7.3.3 Memory and variables 7.3.4 Control flow 7.3.5 Functions 8 See also 9 Notes 10 References 11 External links Toggle the table of contents WebAssembly 26 languages العربية Azərbaycanca Català Čeština Deutsch Español فارسی Suomi Français עברית Magyar Italiano 日本語 한국어 Nederlands Polski پښتو Português Русский ไทย Türkçe Українська Oʻzbekcha / ўзбекча 閩南語 / Bân-lâm-gí 粵語 中文 Edit links Article Talk English Read Edit View history Tools Tools move to sidebar hide Actions Read Edit View history General What links here Related changes Upload file Permanent link Page information Cite this page Get shortened URL Print/export Download as PDF Printable version In other projects Wikimedia Commons Wikidata item Appearance move to sidebar hide From Wikipedia, the free encyclopedia Assembly language and bytecode for web browsers WebAssembly Paradigm structured ; stack machine [ 1 ] Designed by W3C Developer W3C Mozilla Microsoft Google Apple First appeared March 2017 &#59; 9 years ago  ( 2017-03 ) OS Platform independent License Apache License 2.0 Filename extensions .wat (text format) .wasm (binary format) Website webassembly .org Influenced by asm.js PNaCl Lisp WebAssembly ( Wasm ) defines a portable binary code format and a corresponding text format for executable programs [ 2 ] and software interfaces for facilitating communication between such programs and their host environment. [ 3 ] [ 4 ] [ 5 ] [ 6 ] The main goal of WebAssembly is to facilitate high-performance applications on web pages , but it is also designed to be usable in non-web environments. [ 7 ] It is an open standard [ 8 ] [ 9 ] intended to support any language on any operating system, [ 10 ] and in practice many 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 (W3C) recommendation on 5 December 2019 [ 11 ] [ 12 ] [ 13 ] and it received the Programming Languages Software Award from the Association for Computing Machinery (ACM) SIGPLAN in 2021. [ 14 ] The W3C maintains the standard with contributions from Mozilla , Microsoft , Google , Apple , Fastly , Intel , and Red Hat . [ 15 ] [ 16 ] History [ edit ] The name "WebAssembly" is intended to suggest bringing assembly language programming to the World Wide Web , where it will be executed client-side , by the website-user's computer via the user's web browser . To accomplish this, WebAssembly must be much more hardware-independent than a true assembly language. WebAssembly was first announced in 2015, [ 17 ] and the first demonstration was executing Unity 's Angry Bots in Firefox , [ 18 ] Google Chrome , [ 19 ] and Microsoft Edge [Legacy] . [ 20 ] The precursor technologies were asm.js from Mozilla and Google Native Client , [ 21 ] [ 22 ] and the initial implementation was based on the feature set of asm.js. [ 23 ] [ note 1 ] In March 2017, the design of the minimum viable product (MVP) was declared to be finished and the preview phase ended. [ 25 ] In late September 2017, Safari 11 was released with support. In February 2018, the WebAssembly Working Group published three public working drafts for the Core Specification, JavaScript Interface, and Web API. [ 26 ] [ 27 ] [ 28 ] [ 29 ] The MVP was focused on low-level languages such as C and C++ , with the intent to add features useful for high-level languages in a future version. [ 30 ] Multithreading is currently a draft, but has been supported by Chrome since version 75 in June 2019, Firefox version 79, and Safari version 14.1 [ 31 ] [ 32 ] [ 33 ] The WebAssembly 2.0 specification was finished in 2022 and became a W3C standard in December 2024. It adds many single instruction, multiple data (SIMD) related instructions and a new v128 datatype, with the ability for functions to return multiple values, mass memory initialize/copy instructions, and reference types, which are opaque pointers to objects outside of the linear memory. [ 34 ] WebAssembly 3.0 was released in September 2025. New features include a 64-bit address space, multiple address spaces, exception handling, and garbage collected struct and array types. [ 35 ] Support for garbage collection enables more efficient compiling for high-level languages, [ 36 ] [ 37 ] but WasmGC from WebAssembly 3.0 lacks the abilities needed by .NET runtime . [ 38 ] Implementations [ edit ] While WebAssembly was initially designed to permit near-native code execution speed in the web browser, it has been considered valuable outside of such, in more generalized contexts. [ 39 ] [ 40 ] A WebAssembly runtime environment is a low-level virtual stack machine , akin to JVM or Flash VM ; it can be embedded into any host application, and thus there have been created standalone WebAssembly runtime environments, including Wasmtime   [ d ] , WebAssembly Micro Runtime   [ d ] , Wasmer   [ d ] , WasmEdge   [ d ] and wazero   [ d ] . [ 9 ] [ 10 ] WebAssembly runtime environments are embedded in application servers to host "server-side" WebAssembly applications and in other applications to support plug-in -based software extension architectures, e.g., WebAssembly for Proxies (Proxy-Wasm) which specifies a WebAssembly-based application binary interface (ABI) to extend proxy servers . [ 41 ] [ 42 ] Web browsers [ edit ] In November 2017, Mozilla declared support "in all major browsers", [ 43 ] after WebAssembly was enabled by default in Edge [Legacy] 16. [ 44 ] This support also includes mobile web browsers for iOS and Android. As of March 2024, [update] 99% of tracked web browsers support WebAssembly (version 1.0), [ 45 ] more than for its predecessor asm.js . [ 46 ] For some extensions, from the 2.0 draft standard, support may be lower, but still more than 90% of web browsers may already support, e.g. the reference types extension. [ 47 ] Non-browser runtimes [ edit ] Non-browser WebAssembly runtimes include Wasmer, [ 10 ] Wasmtime, [ 48 ] WAMR, WAVM, wasm3, and others. [ 49 ] These systems execute precompiled Wasm modules and often provide additional APIs for embedding WebAssembly in different environments. Use cases for wasm outside the browser include plug-in interfaces and lightweight virtualization. [ 50 ] Compilers [ edit ] WebAssembly implementations generally use either ahead-of-time (AOT) or just-in-time (JIT) compiling, though some may also use an interpreter . While the first implementations appeared in web browsers, there are now many non-browser implementations for general-purpose use. Compiler toolchains [ edit ] Because WebAssembly executables are precompiled, a variety of programming languages can target Wasm. [ 51 ] Compiling is done either through direct output to Wasm or via intermediate virtual machines implemented in Wasm. Notable toolchains include: Emscripten , which compiles C and C++ to Wasm using Clang as a frontend, Binaryen as an optimizer, and can also target any LLVM-supported language. [ 25 ] Standalone Clang (version 8 and later), which supports direct compiling to Wasm. [ 52 ] LLVM-based workflows for languages such as Rust and AssemblyScript. [ 53 ] Language support [ edit ] As of 2021, around 40 programming languages support WebAssembly as a compiling target. [ 53 ] Examples include: C and C++ : via Emscripten or Clang standalone. [ 25 ] Rust : via rustc with Wasm target. [ 54 ] [ 53 ] AssemblyScript : a TypeScript-like language compiling directly to Wasm. [ 55 ] Go : native WebAssembly support introduced in Go 1.11. [ 56 ] .NET languages: C# (via Blazor ), F# (via Bolero and Blazor). [ 57 ] [ 58 ] [ 59 ] Python : implementations such as Pyodide. [ 60 ] Java and Java virtual machine (JVM) languages: via CheerpJ, [ 61 ] JWebAssembly, [ 62 ] and TeaVM. [ 63 ] Kotlin : direct Wasm compiling support. [ 64 ] [ 65 ] Haskell : supported via Glasgow Haskell Compiler (GHC) backend. [ 66 ] Julia : community implementations. [ 67 ] Ruby : supported through MRuby. [ 68 ] Ring: supported with Wasm backend. [ 69 ] Dart : supported WebAssembly as a compiling target when building Dart and Flutter applications for the web. [ 70 ] Scheme : GNU Guile via Hoot. [ 71 ] Limits [ edit ] Web browsers prevent WebAssembly code from directly manipulating the Document Object Model . Wasm code must defer to JavaScript for this. [ note 2 ] In an October 2023 survey of developers, less than half of the 303 participants were satisfied with the state of WebAssembly. A large majority cited the need for improvement in four areas: § WASI , debugging support, integration with JavaScript and browser APIs, and build tooling. [ 74 ] For memory-intensive allocations in WebAssembly, there are "grave limitations that make many applications infeasible to be reliably deployed on mobile browsers [..] Currently allocating more than ~300MB of memory is not reliable on Chrome on Android without resorting to Chrome-specific workarounds, nor in Safari on iOS." [ 75 ] All major browsers allow WebAssembly if Content-Security-Policy is not specified, or if the value unsafe-eval is used, but behave differently otherwise; [ 76 ] Chrome requires unsafe-eval , [ 77 ] [ 78 ] though a worker thread can be a workaround. [ 78 ] Security considerations [ edit ] In June 2018, a security researcher presented the possibility of using WebAssembly to circumvent browser mitigations for Spectre and Meltdown security vulnerabilities once support for threads with shared memory is added. Due to this concern, WebAssembly developers put the feature on hold. [ 79 ] [ 80 ] However, in order to explore these future language extensions, Google Chrome added experimental support for the WebAssembly thread proposal in October 2018. [ 81 ] WebAssembly has been criticized for allowing greater ease of hiding the evidence for malware writers, scammers and phishing attackers; WebAssembly is present on the user's machine only in its compiled form, which "[makes malware] detection difficult". [ 82 ] Speed and the easy ability to conceal in WebAssembly have led to its use in hidden crypto mining within the website visitor's device. [ 82 ] [ 83 ] Coinhive, a now defunct service facilitating cryptocurrency mining in website visitors' browsers, claims their "miner uses WebAssembly and runs with about 65% of the performance of a native Miner." [ citation needed ] A June 2019 study from the Technische Universität Braunschweig analyzed the usage of WebAssembly in the Alexa top 1 million websites and found the prevalent use was for malicious crypto mining, and that malware accounted for more than half of the WebAssembly-using websites studied. [ 84 ] [ 85 ] An April 2021 study from Universität Stuttgart found that since then crypto mining has been marginalized, falling to below 1% of all WebAssembly modules gathered from a wide range of sources, also including the Alexa top 1 million websites. [ 86 ] As WebAssembly supports only structured control flow , it is amenable toward security verification techniques including symbolic execution . [ 87 ] Performance [ edit ] Early on, the execution speed of a Wasm program was benchmarked to be around 91% of (or about 10% slower than) a comparable native program, not including load/instantiation time; however, various later benchmarks indicate a wide range of performance characteristics, from 33% to 200% [ citation needed ] of the execution speed of native code, depending on the task. In 2019, a group of researchers from the University of Massachusetts Amherst presented a comprehensive analysis of WebAssembly's performance compared to native code. [ 88 ] This study used the SPEC CPU suite of benchmarks and a system called "Browsix-Wasm" to run unmodified Unix applications in the browser, thereby allowing for a test of real-world applications, finding a significant performance gap between Wasm execution and native execution; in particular, Wasm programs showed an average slowdown of 45% in Firefox and 55% in Chrome across the real-world benchmarks; peak slowdowns resulted in a Wasm program taking 2.08 times as long to run in Firefox and 2.5 times as long to run in Chrome. The paper identified several reasons for this performance difference, including missing optimizations, code generation issues in WebAssembly compilers, and inherent limits of the WebAssembly platform. A 2021 study suggested that WebAssembly is much faster than JavaScript in certain cases, such as running a complex function on a small file ( e.g. , processing a graphics file); however, at the time, the JavaScript interpreter had some optimizations available that the WebAssembly implementations did not have ( e.g. , Just-in-time compilation ). [ 89 ] In 2022, it was determined by researchers that a Wasm program runs at about 120% of (or 20% faster than) the speed of a comparable JavaScript program. [ 90 ] Those findings align with the experience of a startup company named "Zaplib", whose founders summarized in a blog that it was shutting down due to lack of performance in WebAssembly. [ 91 ] Their goal had been to significantly increase the performance of existing web apps by incrementally porting them to Rust /Wasm; however, porting a customer's simulator from JavaScript yielded only a 5% improvement in performance. Similarly, regarding Figma , they stated the following: [Upon] closer inspection it seems that [Figma's] use of Wasm is more due to historical accidents—wanting to build in C++ to hedge for their native app—than for critical performance needs. Figma files are processed in C++/Wasm, and this is likely a huge speedup, but most of Figma's performance magic is due to their WebGL renderer. In 2023, a study of Wasm's performance for cryptographic tasks indicated that "when using the fastest runtime, WebAssembly was only about 2.32 times slower (median) than native code with architecture-specific optimizations." This result excluded 2 tests where the native code benefited from special instructions implemented directly in the CPU of the target platform; for those particular tests, the Wasm programs were "80 times slower than native code". [ 92 ] Benchmarking has revealed several other pain-points for WebAssembly, such as poor performance because of no direct access to the DOM, [ note 3 ] a problem which is being addressed. [ 94 ] WASI [ edit ] WebAssembly System Interface (WASI) is a simple interface ( application binary interface (ABI) and application programming interface (API)) designed by Mozilla , which is intended to be portable to any platform. [ 95 ] It provides features similar to the Portable Operating System Interface ( POSIX ), such as file input/output (I/O) constrained by capability-based security . [ 96 ] [ 97 ] There are additional proposed ABI/APIs. [ 98 ] [ 99 ] WASI is influenced by CloudABI and Capsicum . [ 100 ] Solomon Hykes  [ fr ] , a co-founder of Docker , wrote in 2019, "If WASM+WASI existed in 2008, we wouldn't have needed to create Docker. That's how important it is. WebAssembly on the server is the future of computing." [ 101 ] WASI 0.1 provides a few POSIX-like APIs such as file I/O, reading environment variables, and random-number generation, but has very little support for networking. WASI 0.2 is redesigned based on the WebAssembly Component Model. [ 102 ] [ 103 ] WASI 0.3 will add support for async functions; the host translates between blocking and async function calls, so an exported function that blocks may be called as an asynchronous function, and vice-versa. [ 104 ] [ 105 ] Starting in 0.2, WASI is defined in terms of the component model. Interfaces in the component model are specified in an IDL called WIT (WebAssembly Interface Types). While core wasm only supports integer and floating-point numbers, interfaces in WIT can express types such as strings, lists, and user-defined record and variant types, and are language-agnostic. [ 106 ] Components cannot access each other's memory, and so interact only via imported and exported functions. The component model is designed around composition: two components can be composed into a single component when the exports of one component match another's imports, allowing any interface to be virtualized. [ 103 ] Interfaces in WIT are grouped together into a "world". WASI 0.2 defines a CLI world similar to the POSIX-like API of WASI 0.1, and an HTTP proxy world for web servers. [ 107 ] The component model is not currently supported by browsers. [ 108 ] Specification [ edit ] Host environment [ edit ] The general standard provides core specifications for the JavaScript API and details on embedding. [ 5 ] Virtual machine [ edit ] Wasm code (binary code, i.e. bytecode) is intended to be run on a portable virtual stack machine (VM). [ 109 ] The VM is designed to be faster to parse and execute than JavaScript and to have compact code representation. [ 110 ] Any external functionality (like syscalls ) that may be expected by Wasm binary code is not stipulated by the standard; instead, the standard specifies how the host environment can provide such an interface via a "module". [ 111 ] [ 9 ] Wasm program [ edit ] A Wasm program is designed as a separate module containing collections of various Wasm-defined values and program type definitions. These are provided in either binary or textual format (see below) that have a common structure. [ 112 ] Such a module may provide a start function that is executed upon instantiation of a wasm binary. Instruction set [ edit ] The core standard for the binary format of a Wasm program defines an instruction set architecture (ISA); each operation that can be executed by the VM is assigned a specific binary encoding (an "opcode"), but the exact way in which the operation is implemented is not specified, allowing for flexibility in the construction of a VM. [ 113 ] The list of instruction types includes those for standard memory load/store, numeric, parametric, control flow , and Wasm-specific variables. [ 114 ] The number of opcodes used in the original standard ( § MVP ) was a bit fewer than 200 of the 256 possible opcodes. Subsequent versions of WebAssembly pushed the number of opcodes a bit over 200. The WebAssembly SIMD proposal (for parallel processing) introduces an alternate opcode prefix (0xfd) for 128-bit wide SIMD instructions; the concatenation of the SIMD prefix, plus an opcode that is valid after the SIMD prefix, forms each SIMD opcode. The SIMD opcodes bring an additional 236 instructions to the MVP's SIMD ability (for a total of around 436 instructions) [ 115 ] [ 116 ] This set of instructions [ 117 ] are enabled by default across a number of important implementations: [ 118 ] Google's V8 (in Google Chrome) The SpiderMonkey engine in Mozilla Firefox The JavaScriptCore engine in Apple's Safari These SIMD opcodes are both portable and intended to map directly to native instruction sets like x86-64 and ARM . In contrast, SIMD instructions are not directly supported by Java's JVM [ note 4 ] or .NET 's CIL ; however, both do have some APIs for parallel processing, which provide SIMD speedups. A newer set of "relaxed SIMD" instructions allow for a limited amount of implementation-defined behavior to improve performance. [ 120 ] [ 121 ] Code representation [ edit ] In March 2017, the WebAssembly Community Group reached consensus on the initial (" MVP ") binary format, JavaScript API, and reference interpreter. [ 122 ] It defines a WebAssembly binary format ( .wasm ), which is designed to be used by computers, not humans, and a text format that is human-readable ( .wat ), resembling a cross between S-expressions and traditional assembly languages. The binary format is straightforward and designed to allow streaming compiling, so compiling can begin before the module is finished downloading, and to allow functions to be compiled in parallel. [ 30 ] The table below shows an example of a factorial function written in C and its corresponding WebAssembly code after compiling, shown both in .wat text format (a human-readable textual representation of WebAssembly) and in .wasm binary format (the raw bytecode , expressed below in hexadecimal ), that is executed by a Web browser or run-time environment that supports WebAssembly. C source code and corresponding WebAssembly C source code WebAssembly .wat text format WebAssembly .wasm binary format int factorial ( int n ) { if ( n == 0 ) { return 1 ; } else { return n * factorial ( n - 1 ); } } ( func ( param i64 ) ( result i64 ) local.get 0 i64.eqz if ( result i64 ) i64.const 1 else local.get 0 local.get 0 i64.const 1 i64.sub call 0 i64.mul end ) 00 61 73 6D 01 00 00 00 01 06 01 60 01 7E 01 7E 03 02 01 00 0A 17 01 15 00 20 00 50 04 7E 42 01 05 20 00 20 00 42 01 7D 10 00 7E 0B 0B All integer constants are encoded using a space-efficient, variable-length LEB128 encoding. [ 123 ] The WebAssembly text format is more canonically written in a folded format using S-expressions . For instructions and expressions, this format is purely syntactic sugar and has no behavioral differences with the linear format. [ 124 ] Through wasm2wat , the code above decompiles to: ( module ( type $t0 ( func ( param i64 ) ( result i64 ))) ( func $f0 ( type $t0 ) ( param $p0 i64 ) ( result i64 ) ( if $I0 ( result i64 ) ;; $I0 is an unused label name ( i64.eqz ( local.get $p0 )) ;; the name $p0 is the same as 0 here ( then ( i64.const 1 )) ( else ( i64.mul ( local.get $p0 ) ( call $f0 ;; the name $f0 is the same as 0 here ( i64.sub ( local.get $p0 ) ( i64.const 1 )))))))) A module is implicitly generated by the compiler. The function is referenced by an entry of the type table in the binary, hence a type section and the type emitted by the decompiler. [ 125 ] The compiler and decompiler can be accessed online. [ 126 ] Memory and variables [ edit ] Data in memory is stored in a large, growable array of bytes termed a linear memory . Linear memory is separate from the wasm module's call stack and code and the engine's memory. This allows running wasm code in the same process as the JavaScript virtual machine it's embedded in without violating memory safety. [ 30 ] A module contains a list of global variables separate from linear memory, which may be mutable or immutable. Functions declare a list of local variables. A function's parameters are also local variables. Instructions operate on a stack of values . The stack layout is fixed (branches must push and pop the same number of operands), so wasm engines can compile the stack away, producing efficient machine code operations on registers, rather than managing a stack at runtime. A stack machine architecture was chosen as it can have higher code density than a register machine . [ 30 ] Control flow [ edit ] Unlike typical assembly languages, wasm only uses structured control flow similar to high-level programming languages. The intentional lack of support for jump instructions makes it simple to validate and compile wasm code in a single pass , and makes it easier to read code disassembled into the text format. Blocks are delimited with the block , loop , and if / else constructs. Branch instructions contain a label that identifies the depth of a block it is nested in: br 0 will branch to the block the instruction is contained in, br 1 will branch to the block that block is contained in, and so on. Branches to a block or if jump to the end of the block like a break statement, while branches to a loop jump back to the beginning of the loop, similar to a continue statement. The br_table instruction takes an input index and jumps to a target from a list of labels. A C-style switch statement can be expressed with a br_table inside a series of nested blocks. [ 30 ] [ 127 ] Compilers targeting wasm convert unstructured control flow into high-level loops using Emscripten's Relooper algorithm, originally designed to target JavaScript. [ 128 ] Functions [ edit ] Function declarations are listed in a separate section before the section containing the function bodies. Function pointers are emulated using an index into the global functions table, since code is not inside the linear memory. Functions can also be imported and exported, providing the foreign function interface to communicate with JavaScript or other embedders. [ 30 ] See also [ edit ] Architecture Neutral Distribution Format (ANDF) UNCOL Java bytecode Common Language Runtime LLVM Compiler Software portability Notes [ edit ] ^ The asm.js file already provides near-native code execution speeds: "Even discarding the one score where asm.js did better, it executes at around 70% of the speed (i.e., slower) of native C++ code. [ 24 ] and can be considered a viable alternative for browsers that do not support WebAssembly or have it disabled for security reasons. ^ For Rust /Wasm development, third-party libraries can provide some of the necessary JavaScript I/O. [ 72 ] [ 73 ] ^ "WebAssembly provides no access to the surrounding environment other than via the JavaScript API described in the JS API specification." [ 93 ] ^ There is an extension for Java adding intrinsics for x86-64 SIMD instructions, [ 119 ] that is not portable, i.e. not usable on ARM or smartphones. References [ edit ] ^ "WebAssembly/design/Semantics.md" . GitHub . Archived from the original on 15 June 2021 . 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 . Archived from the original on 5 February 2022 . Retrieved 9 December 2019 . ^ "Introduction: WebAssembly 1.0" . webassembly.github.io . Archived from the original on 22 November 2021 . Retrieved 18 June 2019 . WebAssembly is an open standard... ^ "Introduction: WebAssembly 1.0" . webassembly.github.io . Archived from the original on 22 November 2021 . Retrieved 18 June 2019 . WebAssembly is a ... code format ^ a b "Conventions: WebAssembly 1.0" . webassembly.github.io . Archived from the original on 6 May 2019 . 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 . Archived from the original on 22 November 2021 . 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 . Archived from the original on 22 November 2021 . 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. ^ a b c "Outside the web: standalone WebAssembly binaries using Emscripten · V8" . v8.dev . Archived from the original on 19 July 2020 . Retrieved 28 July 2020 . ^ a b c "Wasmer - The Universal WebAssembly Runtime" . wasmer.io . Archived from the original on 2 March 2021 . Retrieved 19 February 2021 . Compile everything to WebAssembly. Run it on any OS or embed it into other languages. ^ World Wide Web Consortium. "WebAssembly Core Specification" . World Wide Web Consortium (W3) . Archived from the original on 6 December 2019 . Retrieved 9 December 2019 . ^ Couriol, Bruno. "WebAssembly 1.0 Becomes a W3C Recommendation and the Fourth Language to Run Natively in Browsers" . infoq.com . Archived from the original on 25 November 2021 . Retrieved 9 December 2019 . ^ "WebAssembly Specification — WebAssembly 1.1" . webassembly.github.io . Archived from the original on 22 September 2022 . Retrieved 22 March 2021 . ^ "Programming Languages Software Award" . www.sigplan.org . Archived from the original on 29 October 2022 . Retrieved 5 October 2021 . ^ Bright, Peter (18 June 2015). "The Web is getting its bytecode: WebAssembly" . Ars Technica . Condé Nast . Archived from the original on 11 April 2019 . Retrieved 15 June 2017 . ^ "New Bytecode Alliance Brings the Security, Ubiquity, and Interoperability of the Web to the World of Pervasive Computing" . Mozilla . 12 November 2019. Archived from the original on 10 December 2019 . Retrieved 27 May 2019 . ^ "Launch bug" . GitHub / WebAssembly / design . 11 June 2015. Archived from the original on 21 November 2021 . Retrieved 21 March 2016 . ^ Wagner, Luke (14 March 2016). "A WebAssembly Milestone: Experimental Support in Multiple Browsers" . Mozilla Hacks . Archived from the original on 11 August 2017 . Retrieved 21 March 2016 . ^ Thompson, Seth (15 March 2016). "Experimental support for WebAssembly in V8" . V8 Blog . Archived from the original on 9 February 2018 . Retrieved 25 July 2019 . ^ Zhu, Limin (15 March 2016). "Previewing WebAssembly experiments in Microsoft Edge" . Microsoft Edge dev blog . Archived from the original on 18 August 2021 . Retrieved 21 March 2016 . ^ Lardinois, Frederic (17 June 2015). "Google, Microsoft, Mozilla And Others Team Up To Launch WebAssembly, A New Binary Format For The Web" . TechCrunch . Archived from the original on 17 January 2018 . Retrieved 24 December 2017 . ^ Avram, Abel (31 May 2017). "Google Is to Remove Support for PNaCl" . InfoQ . Archived from the original on 23 December 2017 . Retrieved 22 December 2017 . ^ "WebAssembly: a binary format for the web" . ②ality – JavaScript and more . 18 June 2015. Archived from the original on 6 November 2023 . Retrieved 25 July 2019 . ^ "Staring at the Sun: Dalvik vs. ASM.js vs. Native" . blog.mozilla.org . August 2013. Archived from the original on 7 December 2019 . Retrieved 7 December 2019 . ^ a b c Krill, Paul (6 March 2017). "WebAssembly is now ready for browsers to use" . InfoWorld . Archived from the original on 1 April 2020 . Retrieved 23 December 2017 . ^ "WebAssembly First Public Working Drafts" . W3C. 15 February 2018. Archived from the original on 16 July 2021 . Retrieved 20 April 2018 . ^ "WebAssembly Core Specification" . W3C. 15 February 2018. Archived from the original on 8 March 2021 . Retrieved 20 April 2018 . ^ "WebAssembly JavaScript Interface" . W3C. 15 February 2018. Archived from the original on 30 November 2020 . Retrieved 20 April 2018 . ^ "WebAssembly Web API" . W3C. 15 February 2018. Archived from the original on 19 April 2021 . Retrieved 20 April 2018 . ^ a b c d e f 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". Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation . PLDI 2017. New York, NY, USA: Association for Computing Machinery . pp.  185– 200. doi : 10.1145/3062341.3062363 . ISBN   978-1-4503-4988-8 . ^ "WebAssembly Worker Based Threads - Chrome Platform Status" . chromestatus.com . Archived from the original on 19 February 2022 . Retrieved 19 February 2022 . ^ "Feature Status - WebAssembly" . webassembly.org . Retrieved 5 January 2026 . ^ WebAssembly/threads , WebAssembly, 3 January 2026 , retrieved 5 January 2026 ^ "Wasm 2.0 Completed - WebAssembly" . webassembly.org . Retrieved 5 January 2026 . ^ "Wasm 3.0 Completed - WebAssembly" . webassembly.org . Retrieved 5 January 2026 . ^ "WebAssembly Garbage Collection (WasmGC) now enabled by default in Chrome" . Retrieved 11 December 2023 . ^ "A new way to bring garbage collected programming languages efficiently to WebAssembly" . V8.dev . Retrieved 11 December 2023 . ^ Kotas, Jan (18 September 2025). "[wasm][post-MVP] garbage collection proposal in .NET" . GitHub . Retrieved 2 February 2026 . WASM-GC does not have capabilities required by .NET runtime. It is not possible to replace .NET runtime's GC with WASM-GC. ^ "Non-Web Embeddings" . WebAssembly . Archived from the original on 15 May 2019 . Retrieved 15 May 2019 . ^ "Non-Web Embeddings" . GitHub / WebAssembly . Archived from the original on 13 November 2020 . Retrieved 15 May 2019 . ^ Freese, Danny (October 3, 2023). "Proxy-Wasm: It's WebAssembly for Proxies" . Blog. Kong . Retrieved 2024-05-06 . ^ "proxy-wasm/spec: WebAssembly for Proxies (ABI specification)" . GitHub . Archived from the original on 6 May 2024 . Retrieved 6 May 2024 . ^ "WebAssembly support now shipping in all major browsers" . The Mozilla Blog . Archived from the original on 31 October 2019 . Retrieved 21 November 2017 . ^ "Introducing new JavaScript optimizations, WebAssembly, SharedArrayBuffer, and Atomics in EdgeHTML 16" . Microsoft Edge Dev Blog . 31 October 2017. Archived from the original on 15 November 2017 . Retrieved 21 November 2017 . ^ "WebAssembly | Can I use... Support tables for HTML5, CSS3, etc" . canIuse.com . Archived from the original on 13 November 2021 . Retrieved 1 March 2024 . ^ "asm.js | Can I use... Support tables for HTML5, CSS3, etc" . caniuse.com . Retrieved 29 September 2024 . ^ "WebAssembly Reference Types | Can I use... Support tables for HTML5, CSS3, etc" . caniuse.com . Retrieved 3 March 2024 . ^ "Wasmtime — a small and efficient runtime for WebAssembly & WASI" . wasmtime.dev . Archived from the original on 4 December 2020 . Retrieved 18 December 2020 . ^ "Roadmap" . Archived from the original on 7 December 2021 . Retrieved 7 December 2021 . ^ Wingo, Andy (30 June 2025). "WebAssembly: Yes, but for What?" . ACM Queue . 23 (3): 18– 30. doi : 10.1145/3746171 . ^ Ball, Kevin (26 June 2018). "How WebAssembly is Accelerating the Future of Web Development" . Archived from the original on 12 February 2019 . Retrieved 22 October 2018 . ^ "LLVM 8.0.0 Release Notes — LLVM 8 documentation" . Archived from the original on 22 October 2019 . Retrieved 22 October 2019 . ^ a b c "Awesome WebAssembly Languages" . GitHub . 26 June 2018. Archived from the original on 12 February 2019 . Retrieved 15 February 2022 . ^ Krill, Paul (29 November 2017). "Direct WebAssembly compilation comes to Rust language" . InfoWorld . Archived from the original on 1 April 2020 . Retrieved 24 December 2017 . ^ "AssemblyScript/assemblyscript" . The AssemblyScript Project. 9 September 2020. Archived from the original on 11 September 2020 . Retrieved 9 September 2020 . ^ Bonventre, Andrew (24 August 2018). "Go 1.11 is released" . The Go Blog . Archived from the original on 14 June 2025 . Retrieved 11 August 2025 . ^ "Frequently asked questions (FAQ) about Blazor" . Archived from the original on 18 June 2018 . Retrieved 18 June 2018 . ^ "Bolero: F# in WebAssembly" . fsbolero.io . Archived from the original on 4 June 2019 . Retrieved 25 July 2019 . ^ "Running F# in WebAssembly with Bolero" . Microsoft Learn . Microsoft. 20 November 2019 . Retrieved 17 September 2025 . {{ cite web }} : CS1 maint: deprecated archival service ( link ) ^ "Pyodide: Bringing the scientific Python stack to the browser – Mozilla Hacks" . Archived from the original on 3 September 2020 . Retrieved 9 September 2020 . ^ "Java to WebAssembly Compiler - CheerpJ" . Archived from the original on 27 April 2023 . Retrieved 27 April 2023 . ^ "JWebAssembly" . 27 April 2023. Archived from the original on 27 April 2023 . Retrieved 27 April 2023 – via GitHub. ^ "TeaVM: Overview" . Archived from the original on 27 April 2023 . Retrieved 27 April 2023 . ^ "Bringing Kotlin to the Web" . Retrieved 11 December 2023 . ^ Deleuze, Sébastien (13 February 2023). "The huge potential of Kotlin/Wasm" . Retrieved 11 December 2023 . ^ "Using the GHC WebAssembly backend" . Archived from the original on 1 May 2025 . Retrieved 1 May 2025 . ^ "Julia in the Browser" . nextjournal.com . Archived from the original on 24 March 2019 . Retrieved 9 April 2019 . ^ "MRuby in Your Browser" . ruby.dj . Archived from the original on 8 August 2019 . Retrieved 25 July 2019 . ^ Paul Krill (24 August 2020). "Ring language upgrade focuses on WebAssembly" . InfoWorld. Archived from the original on 14 October 2020 . Retrieved 17 August 2024 . ^ "WebAssembly (Wasm) compilation" . dart.dev . Retrieved 21 December 2025 . ^ "Hoot: Scheme on WebAssembly" . Retrieved 11 March 2026 . ^ "stdweb - Rust" . docs.rs . Archived from the original on 21 February 2019 . Retrieved 5 June 2019 . The goal of this crate is to provide Rust bindings to the Web APIs and to allow a high degree of interoperability between Rust and JavaScript. ^ "web_sys - Rust" . docs.rs . Archived from the original on 15 May 2020 . Retrieved 5 June 2019 . Raw API bindings for Web APIs. This is a procedurally generated crate from browser WebIDL which provides a binding to all APIs that browser provide on the web. ^ "The State of WebAssembly 2023" . Scott Logic. 18 October 2023. Archived from the original on 14 March 2024 . Retrieved 14 March 2024 . ^ "Wasm needs a better memory management story · Issue #1397 · WebAssembly/design" . GitHub . Archived from the original on 27 March 2021 . Retrieved 15 February 2021 . ^ "WebAssembly/content-security-policy" . GitHub . Archived from the original on 12 September 2020 . Retrieved 17 February 2021 . ^ "948834 - chromium - An open-source project to help move the web forward. - Monorail" . bugs.chromium.org . Archived from the original on 2 June 2021 . Retrieved 17 February 2021 . ^ a b "No way to use WebAssembly on Chrome without 'unsafe-eval' · Issue #7 · WebAssembly/content-security-policy" . GitHub . Archived from the original on 18 March 2021 . Retrieved 17 February 2021 . ^ Cimpanu, Catalin (24 June 2018). "Changes in WebAssembly Could Render Meltdown and Spectre Browser Patches Useless" . Bleeping Computer . Archived from the original on 10 July 2019 . Retrieved 8 June 2019 . ^ Sanders, James (25 June 2018). "How opaque WebAssembly code could increase the risk of Spectre attacks online" . Tech Republic . Archived from the original on 9 June 2019 . Retrieved 9 June 2019 . ^ R, Bhagyashree (30 October 2018). "Google Chrome 70 now supports WebAssembly threads to build multi-threaded web applications" . Packt Pub . Archived from the original on 18 April 2019 . Retrieved 9 June 2019 . ^ a b Lonkar, Aishwarya; Chandrayan, Siddhesh (October 2018). "The dark side of WebAssembly" . Virus Bulletin . Archived from the original on 9 June 2019 . Retrieved 8 June 2019 . ^ Segura, Jérôme (29 November 2017). "Persistent drive-by cryptomining coming to a browser near you" . Malwarebytes . Archived from the original on 15 April 2019 . Retrieved 8 June 2019 . ^ "Recent Study Estimates That 50% of Websites Using WebAssembly Apply It for Malicious Purposes" . InfoQ . Archived from the original on 31 October 2019 . Retrieved 3 November 2019 . ^ Musch, Marius; Wressnegger, Christian; Johns, Martin; Rieck, Konrad (June 2019). "New Kid on the Web: A Study on the Prevalence of WebAssembly in the Wild". Detection of Intrusions and Malware, and Vulnerability Assessment (PDF) . Lecture Notes in Computer Science. Vol. 11543. Detection of Intrusions and Malware, and Vulnerability Assessment. pp.  23– 42. doi : 10.1007/978-3-030-22038-9_2 . ISBN   978-3-030-22037-2 . S2CID   184482682 . Archived from the original (PDF) on 26 July 2022 . Retrieved 15 February 2022 . Slides (PDF) Archived 3 November 2019 at the Wayback Machine ^ Aaron Hilbig, Daniel Lehmann, and Michael Pradel (April 2021). "An Empirical Study of Real-World WebAssembly Binaries: Security, Languages, Use Cases." (Archived April 2021) https://software-lab.org/publications/www2021.pdf ^ Watt, Conrad (8 January 2018). "Mechanising and verifying the WebAssembly specification" . Proceedings of the 7th ACM SIGPLAN International Conference on Certified Programs and Proofs . CPP 2018. Los Angeles CA USA: ACM. pp.  53– 65. doi : 10.1145/3167082 . ISBN   978-1-4503-5586-5 . S2CID   9401691 . Archived from the original on 1 March 2021 . Retrieved 9 August 2023 . ^ Jangda, Abhinav; Powers, Bobby; Berger, Emery; Guha, Arjun (31 May 2019). Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code (PDF) . 2019 USENIX Annual Technical Conference. Renton, WA. pp.  107– 120. arXiv : 1901.09056v3 . OCLC   1106328738 . Archived (PDF) from the original on 20 March 2025 . Retrieved 20 March 2025 . ^ Yan, Yutian; Tu, Tengfei; Zhao, Lijian; Zhou, Yuchen; Wang, Weihang (2 November 2021). "Understanding the performance of webassembly applications" . Proceedings of the 21st ACM Internet Measurement Conference . pp.  533– 549. doi : 10.1145/3487552.3487827 . ISBN   978-1-4503-9129-0 . ^ De Macedo, Joao; Abreu, Rui; Pereira, Rui; Saraiva, Joao (June 2022). "WebAssembly versus JavaScript: Energy and Runtime Performance". 2022 International Conference on ICT for Sustainability (ICT4S) . pp.  24– 34. doi : 10.1109/ICT4S55073.2022.00014 . hdl : 1822/90291 . ISBN   978-1-6654-8286-8 . ^ "Zaplib post-mortem" . zaplib.com . April 2022. Archived from the original on 21 March 2024 . Retrieved 14 March 2024 . ^ Denis, Frank (4 January 2023). "Performance of WebAssembly runtimes in 2023" . 00f.net . Retrieved 6 December 2024 . ^ "WebAssembly Web API" . webassembly.github.io . Archived from the original on 9 December 2024 . Retrieved 6 December 2024 . ^ Kambale, Enoch. "WebAssembly in 2024: Promises, Challenges, and the Road Ahead" . blog.enkambale.com . Archived from the original on 17 January 2025 . Retrieved 6 December 2024 . ^ "WebAssembly System Interface Repo" . GitHub : WebAssembly . 10 February 2020. Archived from the original on 30 October 2022 . Retrieved 15 May 2019 . ^ "Additional background on Capabilities" . GitHub . bytecodealliance. 4 March 2022. Archived from the original on 24 February 2020 . Retrieved 8 April 2020 . ^ "Standardizing WASI: A system interface to run WebAssembly outside the web" . Mozilla Hacks: the Web developer blog . Archived from the original on 30 October 2022 . Retrieved 9 April 2020 . ^ "reference-sysroot Repo" . GitHub : WebAssembly . 12 January 2020. Archived from the original on 21 August 2022 . Retrieved 15 May 2019 . ^ "wasm-c-api Repo" . GitHub : WebAssembly . 3 February 2020. Archived from the original on 31 October 2022 . Retrieved 15 May 2019 . ^ NuxiNL/cloudlibc , Nuxi, 6 December 2024, archived from the original on 1 April 2025 , retrieved 1 April 2025 ^ Hykes, Solomon (27 March 2019). "Solomon Hykes on X" . Twitter . Archived from the original on 31 May 2024 . Retrieved 29 September 2024 . ^ "WASI and the WebAssembly Component Model: Current Status - eunomia" . eunomia.dev . Retrieved 30 March 2026 . ^ a b "Why the Component Model? - The WebAssembly Component Model" . component-model.bytecodealliance.org . Retrieved 30 March 2026 . ^ Dice, Joel (13 March 2025). "Looking Ahead to WASIp3" . www.fermyon.com . Retrieved 30 March 2026 . ^ WebAssembly. "component-model/design/mvp/Concurrency.md at main · WebAssembly/component-model" . GitHub . Retrieved 30 March 2026 . ^ "WIT Reference - The WebAssembly Component Model" . component-model.bytecodealliance.org . Retrieved 30 March 2026 . ^ Gohman, Dan (25 January 2024). "WASI 0.2 Launched" . Bytecode Alliance . Retrieved 30 March 2026 . ^ "Why is WebAssembly a second-class language on the web? – Mozilla Hacks - the Web developer blog" . Mozilla Hacks – the Web developer blog . Retrieved 30 March 2026 . ^ "Design Rationale" . GitHub / WebAssembly / design . 1 October 2016. Archived from the original on 25 September 2022 . Retrieved 25 September 2022 . ^ "WebAssembly High-Level Goals" . GitHub / WebAssembly / design . 11 December 2015. Archived from the original on 25 September 2022 . Retrieved 25 September 2022 . ^ "Portability - WebAssembly" . webassembly.org . Archived from the original on 28 July 2020 . Retrieved 28 July 2020 . ^ "Conventions — WebAssembly 1.0" . webassembly.github.io . Archived from the original on 6 May 2019 . Retrieved 12 November 2019 . ^ "Introduction: WebAssembly 1.0" . webassembly.github.io . Archived from the original on 2 June 2021 . Retrieved 17 May 2019 . ^ "Instructions — WebAssembly 1.0" . webassembly.github.io . Archived from the original on 21 October 2019 . Retrieved 12 November 2019 . ^ Lively, Thomas (19 February 2021) [Pull Request opened on 2021-02-05]. "Final opcodes by tlively · Pull Request #452 · WebAssembly/simd · GitHub" . Bytecode Alliance. Archived from the original on 30 October 2022 . Retrieved 12 May 2021 – via GitHub . ^ Delendik, Yury (19 February 2021) [SIMD changes committed on 2021-02-19]. "File wasm-tools/expr.rs at b5c3d98e40590512a3b12470ef358d5c7b983b15 · bytecodealliance/wasm-tools · GitHub" . Bytecode Alliance. Archived from the original on 22 May 2022 . Retrieved 12 May 2021 – via GitHub . ^ "Update interpreter and text with finalized opcodes by ngzhian · Pull Request #486 · WebAssembly/simd" . GitHub . Archived from the original on 30 October 2022 . Retrieved 14 May 2021 . ^ "WebAssembly/simd" . GitHub . Archived from the original on 10 May 2021 . Retrieved 14 May 2021 . ^ "How we made the JVM 40x faster" . astojanov.github.io . Archived from the original on 26 December 2020 . Retrieved 17 February 2021 . ^ WebAssembly/relaxed-simd , WebAssembly, 3 May 2021, archived from the original on 17 April 2022 , retrieved 14 May 2021 ^ "Wasm 3.0 Completed - WebAssembly" . webassembly.org . Retrieved 5 January 2026 . ^ "Roadmap" . WebAssembly . March 2017. Archived from the original on 7 December 2021 . Retrieved 25 July 2019 . ^ WebAssembly Community Group (January 2020). "WebAssembly Specification Release 1.0" . Archived from the original on 21 October 2019 . Retrieved 13 January 2020 . ^ "Folded instructions" . GitHub . Archived from the original on 12 July 2018 . Retrieved 18 June 2018 . / WebAssembly / spec ^ "Modules (Binary)" . WebAssembly 1.0 . Archived from the original on 30 October 2022 . Retrieved 9 April 2020 . ^ "WebAssembly Binary Toolkit (wabt) demos" . webassembly.github.io . Archived from the original on 30 October 2022 . Retrieved 9 April 2020 . ^ "WebAssembly control flow instructions - WebAssembly | MDN" . MDN Web Docs . 23 November 2025 . Retrieved 5 January 2026 . ^ Zakai, Alon (22 October 2011). "Emscripten: An LLVM-to-JavaScript compiler" . Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion . OOPSLA '11. New York, NY, USA: Association for Computing Machinery . pp.  301– 312. doi : 10.1145/2048147.2048224 . ISBN   978-1-4503-0942-4 .  This article incorporates text from a free content work. Licensed under Apache License 2.0 ( license statement/permission ). Text taken from Text Format​ , jfbastien; rossberg-chromium; kripken; titzer; s3ththompson; sunfishcode; lukewagner; flagxor; enricobacis; c3d; binji; andrewosh, GitHub. WebAssembly/design. External links [ edit ] WebAssembly at Wikipedia's sister projects Media from Commons Data from Wikidata Official website WebAssembly on GitHub , hosts Design Documents W3C Community Group Archived 18 June 2015 at the Wayback Machine WebAssembly Specification Archived 22 September 2022 at the Wayback Machine "WebAssembly" . MDN Web Docs . 16 April 2024. Archived from the original on 13 May 2022 . Retrieved 14 February 2018 . Has info on browser compatibility and specifications (WebAssembly JavaScript API) v t e World Wide Web Consortium (W3C) Products, standards Recommendations ActivityPub Activity Streams ARIA Canonical XML CDF CSS Animations Flexbox Grid DOM EXI EmotionML Geolocation API GRDDL HTML HTML5 IndexedDB ITS JSON-LD Linked Data Notifications MathML Micropub MTOM OWL PLS RDF Schema RDFa RIF SAWSDL SISR SKOS SMIL SOAP SRGS SRI SSML SVG Animation Filter Effects SCXML SHACL SPARQL Timed text VoiceXML WebAssembly WoT TD Web storage WSDL Webmention WebSub WebVTT WOFF WS-Addressing XHTML +RDFa XML Base Encryption Events Information Set Namespace Schema Signature XForms XInclude XLink XOP XPath 2.0 3.x XPointer XProc XQuery XSL XSL-FO XSLT elements Notes IndieAuth XAdES XBL XHTML+SMIL XUP Working drafts CCXML CURIE EME InkML MSE SMIL Timesheets sXBL WebGPU WebXR XFDL XFrames XMLHttpRequest Guidelines Web Content Accessibility Guidelines Initiative Markup Validation Service Web Accessibility Initiative Web Components Deprecated C-HTML HDML JSSS PGML VML WebPlatform Obsoleted P3P XHTML+MathML+SVG Groups, organizations WHATWG Defunct: World Wide Web Foundation Elected AB Board TAG Working CSS SVG WebAssembly WebAuthn Community, business Web Advertising BG WebAssembly CG Closed Device Description (DDWG) HTML Multimodal Interaction Activity (MMI) Software CERN httpd Libwww Browsers Line Mode (1990–) Arena (1993–98) Agora (1994–97) Argo (1994–97) Amaya (browser/editor, 1996–2012) Conferences International World Wide Web Conference (IW3C) Steering Committee (IW3C2) First conference ("WWW1", 1994) v t e Web browsers Features, standards & protocols Features Bookmarks Extensions Privacy mode Web standards HTML v5 CSS DOM JavaScript WebAssembly Web storage IndexedDB WebGL WebGPU Protocols HTTP Encryption Cookies third-party OCSP WebRTC WebSocket Active Blink -based Proprietary Google Chrome Arc Atlas Avast Cốc Cốc Comet Comodo Ecosia Epic Huawei Maxthon Microsoft Edge Opera ( Mobile ) Puffin QQ Samsung Silk Sleipnir SRWare UC Vivaldi Whale Yandex FOSS Chromium Brave Dooble Falkon Otter Supermium ungoogled Gecko -based Firefox Floorp GNU IceCat LibreWolf Midori Mullvad SlimBrowser SeaMonkey (uses unnamed Gecko fork ) Tor Waterfox Zen Goanna-based Basilisk K-Meleon Pale Moon WebKit -based Safari GNOME Web iCab Orion Multi- engine 360 DuckDuckGo Konqueror Lunascape NetFront qutebrowser Other Dillo eww Flow Ladybird Links Lynx NetSurf Opera Mini w3m Discontinued Blink -based Beaker Citrio Flock Redcore Rockmelt SalamWeb Sputnik Torch Gecko -based Beonex Camino Classilla Conkeror Firefox Lite Galeon Ghostzilla IceDragon Kazehakase Kylo Lotus MicroB Minimo Mozilla suite PirateBrowser Pogo Strata Swiftfox TenFourFox Timberwolf Waterfox Classic xB MSHTML -based Internet Explorer AOL Deepnet GreenBrowser MediaBrowser MSN Explorer MSN Program Viewer NeoPlanet NetCaptor SpaceTime ZAC WebKit -based Arora BOLT Dolphin Fluid Google TV Iris Mercury Nokia Symbian OmniWeb Opera Coast Origyn QtWeb Shiira Steel surf Uzbl WebPositive xombrero Other abaco Amaya Arachne Arena Blazer Cake CM Deepfish Edge Legacy ELinks Gazelle HotJava IBM Home Page Reader IBM WebExplorer IBrowse Internet Explorer for Mac KidZui Line Mode Mosaic MSN TV NetPositive Netscape Skweezer Skyfire ThunderHawk Vision WinWAP WorldWideWeb List Comparison Category v t e Web interfaces Server-side Protocols HTTP v2 v3 Encryption WebDAV CGI SCGI FCGI AJP WSRP WebSocket Server APIs C NSAPI C ASAPI C ISAPI COM ASP Jakarta Servlet container CLI OWIN ASP.NET Handler Python WSGI Python ASGI Ruby Rack JavaScript JSGI Perl PSGI Portlet container Apache modules mod_include mod_jk mod_lisp mod_mono mod_parrot mod_perl mod_php mod_proxy mod_python mod_wsgi mod_ruby Phusion Passenger Topics Web service vs. Web resource WOA vs. ROA Open API Webhook Application server comparison Scripting Client-side Browser APIs C NPAPI LiveConnect XPConnect C NPRuntime C PPAPI NaCl ActiveX BHO XBAP Web APIs WHATWG Audio Canvas DOM SSE Video WebSockets Web messaging Web storage Web worker XMLHttpRequest W3C DOM events EME File Geolocation IndexedDB MSE SVG WebAssembly WebAuthn WebGPU WebRTC WebXR Khronos WebCL WebGL Others Gears Web SQL Database (formerly W3C) WebUSB Topics Ajax and Remote scripting vs. DHTML Browser extension Cross-site scripting and CORS Hydration Mashup Persistent data Web IDL Scripting Related topics Frontend and backend Microservices REST GraphQL Push technology Solution stack Web page Static Dynamic Web standards Web API security Web application Rich Single-page Progressive Web framework v t e JavaScript Code analysis ESLint JSHint JSLint Subsets,* supersets JS++ Source * TypeScript ( ArkTS ) Transpilers AtScript Babel ClojureScript CoffeeScript Dart Elm Emscripten Google Closure Compiler Google Web Toolkit Haxe LiveScript Morfik Nim Opa PureScript ReScript V (Vlang) WebSharper Concepts JavaScript library JavaScript syntax Debuggers Chrome DevTools Firefox Inspector (formerly Firebug ) Komodo IDE Safari Web Inspector Documentation generators JSDoc Editors (comparison) Ace Cloud9 IDE Atom CodeMirror Brackets Light Table PhpStorm Orion Visual Studio Visual Studio Express Visual Studio Code Visual Studio Team Services Vim Engines List of JavaScript engines Frameworks Comparison of JavaScript frameworks List of JavaScript libraries Related technologies Ajax AssemblyScript asm.js CSS DOM HTML HTML5 JSON WebAssembly WebAuthn Package managers npm pnpm yarn Bun Module bundlers Bun esbuild Vite Webpack Server-side Active Server Pages Bun CommonJS Deno JSGI Node.js Unit testing frameworks ( list ) Jasmine Mocha QUnit People Douglas Crockford Ryan Dahl Brendan Eich John Resig Jesse James Garrett Outline Index Wikibook Retrieved from " https://en.wikipedia.org/w/index.php?title=WebAssembly&oldid=1357215743 " Categories : Assembly languages Internet properties established in 2015 World Wide Web Consortium standards Web programming Bytecodes Programming languages created in 2015 Programming language comparisons Hidden categories: CS1 maint: deprecated archival service Webarchive template wayback links Articles with short description Short description is different from Wikidata Use dmy dates from February 2020 Articles containing potentially dated statements from March 2024 All articles containing potentially dated statements All articles with unsourced statements Articles with unsourced statements from December 2025 Articles with unsourced statements from November 2025 Free-content attribution Free content from GitHub Pages using Sister project links with hidden wikidata Articles with example code Articles with example C code This page was last edited on 1 June 2026, at 11:51  (UTC) . Text is available under the Creative Commons Attribution-ShareAlike 4.0 License ; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy . Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc. , a non-profit organization. Privacy policy About Wikipedia Disclaimers Contact Wikipedia Legal & safety contacts Code of Conduct Developers Statistics Cookie statement Mobile view Search Search Toggle the table of contents WebAssembly 26 languages Add topic