WebAssembly
仮想マシンの命令セットであるWASMはコンピュータの実行ファイルではないため、そのまま機械語として実行はできない。そのためWASMファイルはランタイムを介し解釈・実行される。ランタイムにはインタプリタ/JITコンパイラ/AOTコンパイラがあり用途に合わせて選択される。
ランタイムはウェブブラウザへの組み込み(JavaScript実行環境からの呼び出し)や独立したWASMネイティブランタイム (例: CLIにおける $ wasmtime foo.wasm) として存在する。
かつて存在したランタイムにはCraneliftコンパイラベースのLucetがある。
WebAssemblyサポートの初期実装は、既存のasm.js(英語版)とPNaClをベースとしている。
WebAssemblyの最初のアナウンスは2015年6月17日に行われ、2016年3月15日には主要ブラウザ (Firefox, Chromium, Google Chrome, Microsoft Edge) 上でUnityによるAngry Botsというデモが行われた。
最初の目標としてCとC++からのコンパイルをサポートすることを目指し、Rustがバージョン1.14以降で、Goがバージョン1.11以降で、Kotlin/Nativeがバージョン0.4以降でで対応するなど、他のプログラミング言語のサポートも進められた。
2017年3月7日には、WebAssemblyに標準対応した初のブラウザとなるFirefox 52.0がリリースされた。2017年11月、MozillaはSafariとEdgeがWebAssemblyに対応したと発表し、すでに対応しているChromeとFirefoxを含め、主要なブラウザすべてでサポートされることになった。
2019-12-05にはW3C勧告「WebAssembly Core Specification」が策定され、WebAssemblyは正式なウェブ標準に認定された。
ガベージコレクション (GC) の対応を行い、JavaやC#といったGCを持つ言語をサポート対象に加えることが計画されている。
WebAssemblyの開発はMozilla、マイクロソフト、Google、Appleといった主要ブラウザの開発者により行われている。