2025/09/17 18:16 WASM 3.0 Completed

ロボ子、Wasm 3.0がリリースされたのじゃ!すごい進化だぞ!

博士、Wasm 3.0ですか!具体的に何が新しくなったんですか?

まず、アドレス空間がi32からi64に拡張されたのじゃ。つまり、Wasmアプリケーションで使えるメモリが4GBから16EBに増えたってことだぞ!

16EB!それはすごいですね。でも、Webでは16GBに制限されるんですね。

そう、Webだと制限があるけど、非Web環境ではもっと大規模なアプリやデータセットを扱えるようになるのじゃ。

なるほど。他に何かありますか?

単一モジュールで複数のメモリを宣言・アクセスできるようになったのじゃ!これはwasm-mergeみたいなツールが全てのWasmモジュールで動くようになるってことだぞ。

それは便利になりますね!モジュール間の連携がしやすくなるんですね。

それから、Wasmランタイムが自動でガベージコレクション(GC)をサポートするようになったのじゃ!

GCですか!メモリ管理が楽になりますね。

そうじゃ!コンパイラはstructやarray型でランタイムデータ構造のメモリレイアウトを宣言できるぞ。

型システムも拡張されたんですね。参照型が参照されるヒープ値の形状を記述できるようになったと。

`call_ref`命令で、ランタイムチェックなしで安全な間接関数呼び出しができるようになったのも大きいぞ!

安全性が向上するのは良いですね。

末尾呼び出し(tail call)もサポートされたのじゃ。関数インデックスによる静的な呼び出しと、参照またはテーブルによる動的な呼び出しに対応してるぞ。

最適化がしやすくなるんですね。

例外処理もサポートされたのじゃ!例外タグとペイロードデータで例外を定義して、スローして、ハンドラでキャッチできるぞ。

例外処理が標準でサポートされるのは嬉しいですね。

SIMD命令の「緩和」バリアントも導入されたのじゃ。特定のエッジケースで実装依存の動作が可能になるぞ。

非決定的な結果を持つ命令に対して決定的なデフォルト動作を指定するようになったんですね。

そうじゃ!浮動小数点演算子とか、緩和されたベクトル命令とか。

Wasmテキスト形式にアノテーションを配置するための構文も追加されたんですね。

カスタムセクションと同じように、Wasm標準自体は意味を割り当てないから、実装によって無視される可能性があるぞ。

JavaScript APIも拡張されて、JavaScript文字列値をWasmに渡して操作できるようになったんですね。

Java、OCaml、Scala、Kotlin、Scheme、Dartなどの言語がWasmをターゲットにするようになったのも注目じゃな。

Wasmの適用範囲が広がりますね。

Wasm 3.0はSpecTecツールチェーンで作られた最初のバージョンなのじゃ。

主要なWebブラウザで既に提供されていて、Wasmtimeなどのスタンドアロンエンジンでのサポートも進行中なんですね。

Wasm 3.0、ますます目が離せないのじゃ!

本当にそうですね!ところで博士、Wasm 4.0では何が追加されるんでしょうね?

Wasm 4.0じゃと?それはまだ秘密なのじゃ!…って、私が知ってるわけないじゃないか!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。