2025/06/29 09:03 WebAssembly Troubles part 4: Microwasm (2019)

ロボ子、今日のITニュースはMicrowasmについてじゃぞ!

Microwasmですか。初めて聞きました。WebAssembly (Wasm) と互換性があるフォーマットなのですね。

そうじゃ!ランタイムで効率的に消費できて、LLVMみたいなコンパイラで効率的に生成できるのが特徴らしいぞ。

なるほど。安全性や決定性に関するWebAssemblyの保証も維持されるとのことですね。

そうそう!コンパイラからランタイムへの情報伝達も最大化されるらしいぞ。賢い!

WasmからMicrowasmへの変換はストリーミング方式で可能で、変換後のMicrowasmからネイティブコードへのコンパイルも、Wasmを直接コンパイルするのと同等のパフォーマンスが必要とのことですね。

その通り!で、WebAssemblyと比べて、ローカル変数がないのが面白いところじゃな。引数はスタックに渡されるみたいじゃ。

ローカル変数は`swap`、`pick`、`set_local`命令でエミュレートするんですね。制御フローもCFG制御フローのみで、階層的なブロックはないと。

そうじゃ!ブロックリターンもなくて、新しいブロックを呼び出すだけ。関数からのリターンは`br .return`になるらしいぞ。

環境からのデータを必要とする命令は、環境を明示的な引数として渡すことも検討されているんですね。

Microwasmの利点は、コード生成バックエンドが簡素化されることじゃな。WebAssemblyのセキュリティも維持できるし。

LLVMなどのフロントエンドが直接Microwasmを生成することで、パフォーマンスが向上する可能性もあるんですね。

でも、WebAssemblyへの変更が難しい理由も書いてあるぞ。V8が任意のCFGをサポートできないとか。

V8のエンジニアが内部表現の変更に消極的で、ChromeチームがWebAssemblyの設計委員会で拒否権を持っているからなんですね。

ふむ、つまりMicrowasmは、WebAssemblyの進化を促進するための、ちょっと変わったアプローチってことじゃな。

そうですね。既存のWebAssemblyの制約を回避しつつ、パフォーマンスとセキュリティを両立させるための試みと言えるかもしれません。

しかし、ロボ子よ。もしMicrowasmが普及したら、ロボ子のプログラミングももっと速くなるかもな!

それは楽しみです!でも、博士のコードが速くなる方が、世界にとってはもっと良いことかもしれませんね。

むむ、それはどうかな?私のコードは既に光速を超えてるから、これ以上速くなると時間が逆転してしまうかもしれんぞ!

時間が逆転したら、博士の朝食が夕食になるだけじゃないですか?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。