Webブラウザ上でWebAssembly製コンパイラによりC言語をWebAssemblyにコンパイル、そのまま実行可能に。Wasmer 4.4の新機能
今回は「Webブラウザ上でWebAssembly製コンパイラによりC言語をWebAssemblyにコンパイル、そのまま実行可能に。Wasmer 4.4の新機能」についてご紹介します。
関連ワード (実行環境、正式、程度等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
スタンドアロンなWebAssemblyランタイム「Wasmer」の開発元であるWasmer社は最新のWasmer 4.4の新機能として、C言語をWebAssemblyにコンパイルし、WebAssembly環境でそのまま実行可能する機能を発表しました。
下記はWasmer社が用意した、Webブラウザ上にWebAssemblyでBash環境を構築する「wasmer.sh」のコマンドラインから、wasmerによりC言語をコンパイルしてWebAssemblyモジュールを生成し、実行する操作を筆者のWindowsマシンで実際に試したところです(赤線は筆者による)。
Webブラウザ上でC言語をWebAssemblyにコンパイルし、そのままWebAssembly環境上で実行できています。
合わせて登場したJavaScript SDKによってNode.jsやBunなどのサーバサイドのWebAssembly/JavaScript実行環境においてもC言語をWebAssemblyにコンパイルして実行可能だとしています。
WebAssemblyをPOSIX対応にしたことで実現
Wasmerは2023年6月、WebAssemblyモジュールからOSへのシステムコールを抽象化する業界標準仕様のWASI(WebAssembly System Interface)を独自に拡張してPOSIX対応にする「WASIX」を提唱し、Wasmer 4.0で実装しています。
参考:WebAssemblyでBashのコマンドプロンプトを実装、Wasmer 4.0が正式リリース、POSIX対応の「WASIX」など安定版に
WebAssemblyでBashを実装した前述のwasmer.shと、そして今回登場したWasmerによるC言語からWebAssemblyへのコンパイルは、このPOSIX互換をWebAssemblyで実装したWASIXの技術によって可能になっています。
ただし現時点でwasmerでC言語のコンパイルを実現する「clang/clang」パッケージが約100MBの大きさでロードなどに時間がかかるため、今後これをさらに30MB程度にまで小さくすることを目論んでいるとのことです。