WebAssembly, a portable code format that could make for a faster web, has moved to minimum viable product (MVP) status, with browser vendors now able to switch WebAssembly on by default.
A recent bulletin from Mozilla Senior Staff Engineer Luke Wagner said representatives of the four major browsers agreed that the design and binary format were complete to the extent that no further design work was doable without implementation experience and significant usage. Browsers represented included Google Chrome, Microsoft Edge, Mozilla Firefox, and WebKit, which is Apple's browser engine for Safari, according to the bulletin posted on a World Wide Web Consortium mailing list.
From this point forward, features will be designed to ensure backward compatibility, said Wagner, who has been working on WebAssembly. "We expect to see WebAssembly in Firefox and Chrome this month," Wagner said on Friday afternoon. "We can't speak for the release schedules of Edge and Safari, but since both browsers' engines are open source, we can observe compatible implementations, which would allow them to ship this year."
Developers can test WebAssembly today using the Emscripten tool chain. Next steps for the project include forming a W3C working group to produce a specification for the initial version of WebAssembly and to keep iterating on future features.
WebAssembly is a highly touted effort that not only is set to run web apps in the browser at near-native speeds but also allow for other languages to be used for browser programming beyond JavaScript. The effort has drawn praise from JavaScript founder Brendan Eich, who recently expressed concern that the four browser vendors might end up disunifying over the project, thus jeopardizing it. But Wagner said proponents for all four browsers have been active and participate in the WebAssembly Community Group.
For developers, WebAssembly provides fast load times for large codes and predictable, near-native runtime performance, Wagner said. "This enables developers to bring functionality and experiences to the web that might have otherwise been gated on JavaScript." Since WebAssembly can be used as a library from JavaScript, JavaScript developers can utilize WebAssembly's performance through libraries and frameworks.
WebAssembly could possibly use other languages, such as Python, in the browser, depends on the language's ecosystem, Wagner said. "One requirement for supporting a language is that WebAssembly provides the necessary features to run that language efficiently. For many languages, this requires adding garbage collection [memory management] features to WebAssembly, which is on the road map but will take at least a year or two." The other challenge of supporting a language is porting over language libraries and frameworks to run in a browser and use web APIs.