- Wasm 3.0 標準が正式に発表され、6〜8年にわたって準備されてきた大規模な機能群が含まれる
- 64ビットアドレス空間、ガベージコレクション、型付き参照、テールコール、例外処理 などにより、高水準言語を Wasm により容易にコンパイルできるようになる
- 中核となる新機能は、高性能アプリケーション、多様な言語ランタイム、安全性と拡張性に役立つ
- Web 環境以外の非Webエコシステムでも、より大きな容量やデータセットを扱うケースに適している
- すでに主要な Web ブラウザでサポートされており、Wasmtime のような独立エンジンでもまもなく完成予定で、Wasm は汎用実行プラットフォームとしてさらに定着していく見込み
Wasm 3.0 リリース概要
- WebAssembly 標準の 3.0 バージョンが 2025年9月17日にリリース
- 2.0 バージョン(2022年完了)がベクター命令、バルクメモリ操作、複数戻り値、単純な参照型を導入してから3年ぶりの主要アップデート
- W3C コミュニティグループとワーキンググループが開発を継続しており、今回のリリースは6〜8年かけて準備された大型機能を含むかなり大規模な変更
- Wasm は低水準言語としての思想を維持しつつ、メモリと型システムを強化して 高水準言語のコンパイルをよりよく支援
- 2.0 バージョン以降に開発された機能群が仕上がり、Live 標準として定着し、Web ブラウザと独立エンジンでのサポートが拡大
主な変更点と新機能
- 64ビットアドレス空間
- メモリとテーブルを i64 型で宣言できる
- Wasm アプリケーションのアドレス空間が約4GBから物理的限界まで(理論上は16エクサバイト)拡張可能
- Web では 16GB 制限が適用されるが、非Webエコシステムでは大規模アプリケーションやデータセットのサポートに有用
- マルチメモリ
- 単一モジュール内で 複数のメモリオブジェクトを宣言し、直接アクセスできる
- モジュール統合やアドレス空間分離、バッファリング、セキュリティなどさまざまな用途がある
- wasm-merge のような静的リンクツールがすべての Wasm モジュールで使えるようになる
- ガベージコレクション (GC)
- 線形メモリに加えて、Wasm ランタイムが自動管理するストレージをサポート
- コンパイラは struct/array 型や unboxed 整数などのデータレイアウトを直接宣言する
- メモリ管理の基本的なビルディングブロックのみを提供し、高水準オブジェクトシステムやクロージャは実装言語ごとに個別設計できる
- 型付き参照
- Wasm 型システムが拡張され、ヒープ値の形状と関数参照をより正確に記述できる
- サブタイピングと型再帰をサポートし、新しい
call_ref 命令によって ランタイム型チェックなしで安全な間接関数呼び出しが可能
- テールコール
- 既存関数のスタック領域を追加消費せず、即座に戻る tail call 構造をサポート
- 関数型言語やランタイム内部最適化などに活用できる
- 例外処理
- Wasm 内でネイティブの 例外処理システムを導入
- 例外タグとペイロード宣言、選択的 catch、ブロック単位の例外ハンドラを提供
- これまで JS で迂回していた非効率な方法を使わずに 移植性と性能を改善できる
- relaxed ベクター命令
- SIMD 命令のハードウェア差異に対応するため、一部命令の詳細動作を実装の自由に委ねる relaxed variant を提供
- 合法的な動作集合の範囲内で多様な最適化が可能
- 決定論的プロファイル
- 同一命令でも結果が非決定的になりうる状況(浮動小数点演算、relaxed SIMD など)においても、プラットフォーム間で決定論的な実行を定義
- ブロックチェーンや再現可能なシステムなどで 再現性と移植性を保証できる
- カスタムアノテーション構文
- ソースコード内で人間が読み書きできる アノテーション構文を追加
- 標準が直接解釈するものではないが、今後の標準や拡張実装に活用できる
JavaScript 連携と互換性
- JS string builtins
- JS の文字列値を externref として Wasm に渡して操作できる
- 新しい組み込み関数を import することで、Wasm 内部から直接外部の JS 文字列を使える
Wasm 3.0 の有用性と展望
仕様策定と配布状況
- Wasm 3.0 は新しい SpecTec ツールチェーンで初めて作成された標準
- 大半の 主要 Web ブラウザですでに Wasm 3.0 をサポートしており、Wasmtime などのスタンドアロンエンジンもまもなく完成予定
- Wasm feature status ページで各エンジンごとの対応状況を確認可能
まだコメントはありません。