Wasmtime 47、GCと例外処理をデフォルト有効化

Judul asli: GC and Exceptions in Wasmtime

Mengapa Ini Penting

多くの高水準言語がWebAssemblyへ容易かつ効率的に移植可能となり、エコシステムが大きく拡大する

Bytecode AllianceはWasmtime 47をリリースし、Wasm GCと例外処理提案を両方デフォルトで有効化した。これにより多くの高水準言語がWebAssemblyをターゲットにしやすくなる。

Bytecode Allianceは2026年7月20日、WebAssemblyランタイム「Wasmtime 47」をリリースし、Wasm GCと例外処理(Exceptions)の両提案をデフォルトで有効化したと発表した。これは数年にわたるエンジニアリング作業の集大成だという。

Wasm GC提案以前は、オブジェクト参照モデルを持つ高水準言語は独自のガベージコレクタを.wasm バイナリに組み込む必要があり、バイナリの肥大化や実装上の制約が課題だった。同提案によりWasmプログラムは独自のstructやarray型、サブタイピング関係を定義でき、オブジェクトのライフタイム管理はランタイムが担う。

例外処理提案については、従来の方式では全コールサイトで正常終了か例外かを検査するカスタム呼び出し規約が必要で、バイナリの肥大化と実行時オーバーヘッドが生じていた。同提案はthrow/try/catchスタイルの構文を導入し、ゼロオーバーヘッドのアンワインディング方式で実装できるようになる。

WasmtimeのGC実装はCheney方式のセミスペースコピーGCを採用。GCヒープを「アクティブ」と「アイドル」の2つの半空間に分割し、バンプポインタによる割り当てを行う。GCオブジェクトへの参照はネイティブポインタではなく32ビットインデックスとして表現される。

Sumber

bytecodealliance.org — Baca artikel asli →