I’m happy to report that we at Mozilla have started working with Chromium, Edge and WebKit engineers on creating a new standard, WebAssembly, that defines a portable, size- and load-time-efficient format and execution model specifically designed to serve as a compilation target for the Web. As reflected in the high-level goals, a central requirement for WebAssembly is that it integrate well with the rest of the Web platform and that the initial version run efficiently on current browsers using a client-side polyfill. As demonstrated, the polyfill can leverage asm.js to get great performance. For existing Emscripten/asm.js users, targeting WebAssembly will be as easy as flipping a flag. Thus, it is natural to view WebAssembly as the next evolutionary step of asm.js (a step many have requested and anticipated).

We’re pretty early into the overall process—there is no draft spec or even final formal standards body chosen, just a W3C Community Group, some initial prototyping and early cross-browser consensus on the high-level design documents. Going forward, there will be a lot more iteration and experimentation under the WebAssembly GitHub organization. For questions, check out the still-emerging FAQ. Brendan Eich also has a vibrant blog post with more context, history and JS perspective.

5 Responses to WebAssembly

  1. Wondering once implemented, how will it differ from AIR/Flash/actionscript and applet/java byte code.

    • Luke Wagner

      Two big differences would be (1) open standard implemented by multiple browsers without plugins, (2) the API surface area is that of the Web platform (e.g., WebGL for graphics) and thus WebAssembly use cases will contribute to driving forward the whole Web platform.

  2. Great post Luke! This effort is pretty exciting. I can’t wait to hear more about it.

  3. All this is exciting, but what about us poor JS programmers. Is it dead Jim?

    Possibly a TypeScript or similar JS transpiler could also compile to wasm?

    Any chance of a nifty language other than C/C++/C# etc? If I’ve got to give up JS to get reasonable performance and load time, I guess I will.

    I’m going to miss you, JS. Sigh.