wasmer
概要
wasmer は OS やチップセットから隔離された環境で WebAssembly バイナリを実行できる軽量な仮想マシン。
Table of Contents
hello world までの手順
Rust で記述された hello, world プログラムを WebAssembly にコンパイルして実行するまでの手順について。
wasmer と wapm のインストール
wasmer.io で紹介されているインストールスクリプト経由のインストール以外にも github のリリースページから実行環境ごとのバイナリを入手して手動でインストールすることもできる。
- Linux インストール
-
bash インストーラーで
~/.wasmer/bin
に wasm と wapm がインストールされる。$ curl https://get.wasmer.io -sSfL | sh Welcome to the Wasmer bash installer! ... check: wasmer 1.0.0 installed successfully ✓ wasmer & wapm will be available the next time you open the terminal. If you want to have the commands available now please execute: source /home/torao/.wasmer/wasmer.sh $ ~/.wasmer/bin/wasmer --version wasmer 1.0.0
- Windows インストール
-
PowerShell からインストールスクリプトを実行する。正常終了すると
PATH
環境変数が更新されるので、新しく PowerShell / コマンドプロンプトを起動するとwasmer
コマンドが使えるようになっている。> iwr https://win.wasmer.io -useb | iex ... > wasmer --version wasmer 1.0.0
ただし、PowerShell はデフォルトで PowerShell スクリプトが実行できないセキュリティーポリシー (Restricted) に設定されているため、ポリシー設定を変更していなければ以下のようなエラーが表示されるだろう。
> iwr https://win.wasmer.io -useb | iex PowerShell requires an execution policy in [Unrestricted, RemoteSigned, ByPass] to run the Wasmer Installer. For example, to set the execution policy to 'RemoteSigned' please run : 'Set-ExecutionPolicy RemoteSigned -scope CurrentUser'
エラーメッセージにあるように実行ポリシーを
RemoteSigned
に変更してからインストールを実行する。そしてインストール後にSet-ExecutionPolicy Restricted -scope CurrentUser
で元に戻しておく。
多言語から WebAssembly 機能の呼び出し
- Rust プロジェクトの作成と設定設定
-
Rust および Cargo はすでにセットアップされているものとする。
> cargo version cargo 1.48.0 (65cbdd2dc 2020-10-14)
cargo new
で新しい Cargo プロジェクトを作成し、Cargo.taml
の依存ライブラリにwasmer
を追加する。> cargo new wasmer-helloworld Created binary (application) `wasmer-helloworld` package > cd wasmer-helloworld
[package] name = "wasmer-helloworld" version = "0.1.0" authors = ["TAKAMI Torao <koiroha@gmail.com>"] edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] wasmer = "1.0"