wasmer - WebAssemblyをローカルで実行
WebAssemblyはWebと冠があるものの、もはやWebだけのものではなくなっています。Node.jsでは元々CUIでも実行できる状態でしたし、PHPでWebAssemblyを実行できるphp-ext-wasmもあります。 今回紹介するのは様々なソフトウェアをWebAssembly化し、ローカルで実行できるwasmerを紹介します。
wasmerの使い方
なんとLuaをWebAssembly化しています。普通にREPLが立ち上がります。
$ wasmer run lua.wasm
Lua 5.4.0 Copyright (C) 1994-2018 Lua.org, PUC-Rio
>
Pythonで記述されたPython処理系であるPyPyをJavaScriptに変換したpypyjsをWebAssemblyにしたpypyjs.wasmを実行するデモです。もはや意味分かりません。
$ wasmer run pypyjs.wasm
(debug:, hello world)
さらにnginxをWebAssembly化したデモもあります。
wasmerはWebAssemblyをユニバーサルバイナリーと定義しています。まさにWebAssemblyを実行する環境さえあれば、それがWebブラウザでもローカルでもサーバでも関係なく動作するのは魅力です。実行時にビルドが入るのでちょっと時間がかかるのが難点ですが、将来的に解決すれば魅力的なソフトウェアになりそうです。
wasmerはRust製のオープンソース・ソフトウェア(MIT License)です。
Wasmer wasmerio/wasmer: Universal Binaries Powered by WebAssembly