WebAssembly (Wasm)
スタックベースの仮想機械向けバイナリ命令フォーマット。プログラミング言語の移植可能なコンパイルターゲットとして設計されている。
設計目標
- 高速: ネイティブに近い実行速度を目指す。
- 安全: メモリセーフでサンドボックス化された実行環境。ウェブ埋め込み時はブラウザのセキュリティポリシーが適用される。
- 移植可能: ブラウザ以外の環境(サーバー、エッジ、組込機器など)でも動作する。
- オープン: デバッグ・テスト・学習用のテキスト形式も定義されている。
フォーマット
デプロイ用のバイナリ形式(.wasm)と、人間が読めるテキスト形式(.wat)の2つが定義されている。
仕様の現状
コア仕様は WebAssembly 3.0(2026年7月28日版)が最新。2025年9月にW3C標準として正式に勧告された。
対応言語
Rust、C/C++、Go、AssemblyScriptなど多数の言語からコンパイル可能。mutsuもWebAssembly化されて公式サイト上のプレイグラウンドで動いている。
Component Model
複数のWasmモジュール(異なる言語で書かれたものも含む)を組み合わせてアプリケーションを構築するための仕組み。WIT(WebAssembly Interface Types)というIDLで複雑な型のやり取りを扱う。ブラウザの外でWasmを動かす際のOS機能アクセスはWASIが担う。