Leaning Technologiesは2月1日、Webブラウザ内でx86仮想マシンを実行することができる「WebVM」を公開しました。
WebAssembly仮想化プラットフォームであるCheerpXによって実現されており、ブラウザ内で
Linuxディストリビューション「Debian」のバイナリを実行できるサーバレスな仮想Linux 環境とのこと。
CheerpXは、C++で書かれたx86仮想マシンで、Cheerpコンパイラを使用しC++をJavaScriptとWebAssemblyの組み合わせに変換しています。CheerpXは3年以上前から開発されており、レガシーなAdobe Flashコンテンツを実行するためのエンタープライズソリューションとして利用されているそうです。
WebVMは、実行エンジンとしてCheerpXを使用し、Xterm.jsをメインのUIコンポーネントとして採用しています。CDNで配布されているDebian busterのディスクイメージを使用していますが、サーバーサイドのコンポーネントはなく、すべてのユーザーがCDNから同じディスクイメージにアクセスし、個々の変更内容はブラウザにローカルに保存されるとのこと。
例えばPythonやgcc、Vimといったプログラムを実行することができます。
# Run a short python program python3 examples/python3/fibonacci.py # Compile a small C example using gcc gcc -o helloworld examples/c/helloworld.c # Run it! ./helloworld # Dump the code, to verify this is actually an x86 binary objdump -d ./helloworld # Edit the helloworld.c file, and try again vim examples/c/helloworld.c
▲Pythonのフィボナッチ数列表示プログラム。
WebVMは今後も開発が継続される予定で、HTTPサーバーや、Linuxのグラフィックアプリ、Windowsアプリやゲームへの対応が予定されています。
Hacker Newsでは、https://copy.sh/v86/と比較し、WebVMがかなり高速に動作することに注目が集まっています。フィボナッチ数列のテストでは、WebVMはネイティブの6.7倍の時間で実行でき、これはcopy.shのネイティブ比44倍とくららべるとかなり高速であることがわかります。