🐥

wasmerでWebAssemblyの門を叩く: Rustが征く(2)

2021/08/02に公開

ビルドターゲットにwasm32-wasiを追加

インストールして終わりじゃねーぞ

関連記事:
WSL2で作るWindows開発環境: Rustが征く(1)

------------------- ↓ 前書はここから ↓-------------------

前回の記事でWSLとCLionのRust環境を作ったのは
そこから開発をするためだ。
(インストールして満足するためではない。)
Rust+Webと言えばWebAssemblyだろう。
生涯Web屋をやっている筆者からするとWebAssemblyは終着点となし得るものだと思う。

WebAssemblyをWebで使うためのものをいろいろ用意していこうと思うが、
とりあえず、RustからWebAssemblyをビルドして、
コマンドラインで実行してみよう。

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

Rustのインストール

前回の記事を参照のこと
WSL2で作るWindows開発環境: Rustのすゝめ(1)

WebAssemblyランタイムをインストール

WebAssemblyは単独では動かないので、
何かしらの実行環境が必要。
コマンドライン実行環境として

などがあるが、
パッケージマネージャーも併せて使えるので
今回はwasmerを採用。
(速度的にはwasm3が最速らしい)

インストールはcargoコマンドから可能だが、
cargoは遅すぎ問題があるので、
インストーラーを使う

wasmerのインストール

bash
curl https://get.wasmer.io -sSfL | sh
source $HOME/.wasmer/wasmer.sh
wasmer --version
  wasmer 2.0.0
wapm --version
  wapm-cli 0.5.1

$HOME/.wasmerディレクトリに各種データがインストールされる。

Macの場合
bash
brew install wasmer
Windowsの場合
powershell
iwr https://win.wasmer.io -useb | iex

ビルド先にWASIを追加

WebAssemblyをJVMっぽくどのプラットフォームでも対応できるインタフェースにWASIというのがあるが、
ビルド先をWASIにするように追加しておく

rustup target add wasm32-wasi

WebAssemblyでへろーわーるど

通常通りcargoコマンドでプロジェクトを作成して、
Hello WorldをWebAssembly越しに表示させてみる。

cargo new wasm-hello
mkdir .cargo
printf '[build]\ntarget = "wasm32-wasi"\n' | tee .cargo/config.toml
cargo check --release

WebAssembly実行

wasmerを使ってWebAssemblyを実行

cargo build --release
wasmer target/wasm32-wasi/release/wasm-hello.wasm
  Hello, world!

(^_-)-☆ Hello World!

------------------- ↓ 後書はここから ↓-------------------

Discussion