- Webブラウザで高速、安全に実行で可能なバイナリソフトウェアフォーマット
- 高級言語で開発したプログラムをコンパイルすることでバイナリを生成できる
- 元々Webブラウザ上で高速、安全に実行可能なバイナリフォーマットとして開発されたが WASIの策定とブラウザから独立したランタイムの開発によりあらゆる環境にて 共通のバイナリで実行可能なバイナリフォーマットとなった
- W3CのWebAssembly Community Groupが標準化を行う
- WebAssemblyをブラウザを介さずクロスプラットフォームで実行できるようにするためのインターフェース仕様
- WASMアプリケーションに対してOSのシステムコールを抽象化することでOS依存をなくし、 ポータブルなWASMアプリケーションを実現する
- WASIに従って開発されたWebAssemblyアプリケーションはいずれのWASIに対応したWebAssemblyランタイムで実行可能
- ByteCode Allianceが標準化を行う
- アセンブリ言語は各プロセッサ・アーキテクチャごとに対応する
- WASMは特定のプロセッサ・アーキテクチャではなくWASIに対応する
- 高級言語でソースプログラムを記述する
- ソースプログラムをコンパイルし、WebAssemblyバイトコード (WASMコード) を生成する
- C/C++ -> LLVMベースのコンパイラ基盤やEmscriptenなどをコンパイルに使用する
- Rust -> rustcをコンパイルに使用する
- WebアプリケーションにWASMコードをロードする
- WebブラウザがWASMを解釈し実行する
- JSと並行して動作する
- JSからWASMを呼び出したりWASMからJSを呼び出すこともできる
- WasmTime (ByteCode Allianceによる) - 事実上のリファレンス実装
- WasmEdge (Second Stateによる) - Dockerコンテナの業界標準であるOCIに対応
- Binaryen
- WASM向けのコンパイラ/ツールチェインインフラストラクチャ
- LLVMによる出力をWASMにコンパイルする