WebAssembly, “wasm” for short, .wasm filename suffix, is an emerging standard whose goal is to define a safe, portable, size- and load-time efficient binary compiler target which offers near-native performance—a virtual CPU for the Web.
Auth0 explains WebAssembly pretty well in this post, if you need a better overview.
WebAssembly – One Year Later
WebAssembly is designed with several use cases in mind, inside and outside the browser. As you can guess, wasm can be used for image/video editing, AAA games in the browser, live augmentation, Virtual Reality and so much more. Pretty much everything that is already possible on the web, but with the potential to be faster and more efficient. But WebAssembly can be also useful outside the browser: server side applications, hybrid native apps, server side computing of untrusted code are just some of the potential applications.
The roadmap is also going well. In the last year, the WebAssembly Community Group has made a great amount of progress, producing:
- A description and rationale of the initial feature set and planned future features;
- A specification and reference interpreter;
- 13,000 lines of tests used to validate both the spec interpreter and browsers;
- A first draft of the binary format.
With such exciting promises, browser vendors have been hurrying to offer early WebAssembly implementations in their browser engines. It’s now possible to build WebAssembly demos that run on multiple experimental implementations.
However, this is a big leap forward as all browsers are getting on the same page, which is wonderful when you think of what things Internet Explorer has been doing in the past.
Have a read through the Mozilla Hacks WebAssembly article for further details.
Let’s try out the WebAssembly Demo via Firefox Nightly (it should also work on Chrome Canary). Make sure you have a latest version of Nightly installed, open
about:config and set
Check out this experimental demo of Angry Bots, a Unity game which has been ported to WebAssembly. You can fight robots and explore a 3D space station in this top-down shooter. Movement is controlled by W, A, S, D or the arrow keys and aiming & firing is controlled by the mouse.
There are still major tasks ahead for WebAssembly before a first stable edition is released:
- The official WebAssembly text format needs to be defined.
- Further reduce binary format size.
- More approachable documentation for compiler writers, tool authors, hackers, and students.
- More tests added to the test suite.
If you want to get involved, you can join the community group on W3C. The actual WebAssembly specification is being developed in the spec repository on GitHub. The group suggests that high-level design discussions should continue to be held in the design repository, via issues and pull requests. Before you dive in, make sure to read through the Code of Ethics and Professional Conduct as well.
Excited yet? What do you think of the latest news about WebAssembly?
Elio is a open source designer and founder of Ura Design. He coordinates community initiatives at SitePoint as well. Further, as a board member at Open Labs Hackerspace, he promotes free software and open source locally and regionally. Elio founded the Open Design team at Mozilla and is a Creative Lead at Glucosio and Visual Designer at The Tor Project. He co-organizes OSCAL and gives talks as a Mozilla Tech Speaker at various conferences. When he doesn’t write for SitePoint, he scribbles his musings on his personal blog.