⚙️
Wasmer3.0 🎉
2022年11月23にWasmer3.0がリリースされていたので、リリースの内容をまとめました。
Wasmerとは
WebAssemblyをあらゆる環境で実行できるようにするもの(ランタイム)
- WASIとEmscriptenと互換性がある
- Wasmer以外に有名なランタイムはwasmtime
以前、Wasmerを使って”Hello, world!”をする記事を書いたので、良ければご覧ください。
Wasmer3.0
ここではいくつかピックアップして紹介しています。もっと知りたい方はWasmerの公式ブログへ!
- wasmer cliからwapm.ioにあるパッケージを実行できるようになった。
- Wasmからネイティブな実行ファイルを作成可能に(Windowsも含む!)
- Zero-copy Deserializationによるパフォーマンス向上
- 複数のエンジンの概念を使っていたが、一つに集約しコードの再利用性を高めた。
https://github.com/wasmerio/wasmer/pull/2946
分かりやすいものについては実際に試してみました。
wasmer cliからwapmのパッケージを実行
これは、nodejsにおけるnpxのような機能が追加されたと考えれば良いかもしれません。
wapmとは
Wasmerをインストールする時に、一緒にインストールされるパッケージマネージャーです。
以前は、Wasmのパッケージを使えるようにするために、installコマンドでカレントディレクトリに落としてくる必要がありました。
❯ wapm install cowsay
[INFO] Installing syrusakbary/cowsay@0.2.0
Package installed successfully to wapm_packages!
❯ wapm run cowsay hello wasm!
_____________
< hello wasm! >
-------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
今回のアップデートでwasm runで簡単に実行できるようになりました。
❯ wasmer run syrusakbary/cowsay hello wasm!
_____________
< hello wasm! >
-------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Wasmからネイティブバイナリを作れる
8月のWasmerのブログで、3.0ではどこでも動作するネイティブバイナリを生成できることが言及されていました。
wasmファイルを実行ファイルに変換する。❯ wasmer create-exe hello.wasm -o ./hello
❯ file hello
hello: Mach-O 64-bit executable arm64
wasmファイルをwindows用の実行ファイルに変換する。
❯ wasmer create-exe hello.wasm --target x86_64-pc-windows-gnu -o ./hello.exe
❯ file hello-windows.exe
hello.exe: PE32+ executable (console) x86-64, for MS Windows
作った実行ファイルをWindowsで動かしてみましたが、問題なく動きました。
Zero-copy Deserialization
ゼロコピー・デシリアライゼーションで起動時のパフォーマンスが大幅に向上したとありましたが、そもそもこの技術についてよく知りませんでした。
rkyvのドキュメントによるとZero-copy Deserializationで、デシリアライズのパフォーマンスが良くなるとのことです。
面白そうな技術なので、こちらについてはまた調べて記事にしてみようかと思います。
Discussion