Use Cases
WebAssembly’s high-level goals define what WebAssembly
aims to achieve, and in which order. How WebAssembly achieves its goals is
documented for Web and non-Web platforms. The following
is an unordered and incomplete list of applications/domains/computations that
would benefit from WebAssembly and are being considered as use cases during the
design of WebAssembly.
Inside the browser
- Better execution for languages and toolkits that are currently cross-compiled
to the Web (C/C++, GWT, …).
- Image / video editing.
- Games:
- Casual games that need to start quickly.
- AAA games that have heavy assets.
- Game portals (mixed-party/origin content).
- Peer-to-peer applications (games, collaborative editing, decentralized and
centralized).
- Music applications (streaming, caching).
- Image recognition.
- Live video augmentation (e.g. putting hats on people’s heads).
- VR and augmented reality (very low latency).
- CAD applications.
- Scientific visualization and simulation.
- Interactive educational software, and news articles.
- Platform simulation / emulation (ARC, DOSBox, QEMU, MAME, …).
- Language interpreters and virtual machines.
- POSIX user-space environment, allowing porting of existing POSIX applications.
- Developer tooling (editors, compilers, debuggers, …).
- Remote desktop.
- VPN.
- Encryption.
- Local web server.
- Common NPAPI users, within the web’s security model and APIs.
- Fat client for enterprise applications (e.g. databases).
Outside the browser
- Game distribution service (portable and secure).
- Server-side compute of untrusted code.
- Server-side application.
- Hybrid native apps on mobile devices.
- Symmetric computations across multiple nodes
How WebAssembly can be used
- Entire code base in WebAssembly.
- Main frame in WebAssembly, but the UI is in JavaScript / HTML.
- Re-use existing code by targeting WebAssembly, embedded in a larger
JavaScript / HTML application. This could be anything from simple helper
libraries, to compute-oriented task offload.