Tech Knowledge

IT技術者の知識共有を目的とした記事を書いています

Wasmtime:高速でセキュアなWebAssemblyランタイム

Wasmtime

WasmtimeはWebAssemblyのための高速でセキュアなランタイムです。ここではwasmtimeによるwasmの実行を試してみましょう。

wasmtime.dev

インストールと準備

wasmtimeのインストール:

$ curl https://wasmtime.dev/install.sh -sSf | bash
  Installing latest version of Wasmtime (v16.0.0)
    Checking for existing Wasmtime installation
    Fetching archive for Linux, version v16.0.0
https://github.com/bytecodealliance/wasmtime/releases/download/v16.0.0/wasmtime-v16.0.0-x86_64-linux.tar.xz
######################################################################## 100.0%
    Creating directory layout
  Extracting Wasmtime binaries
wasmtime-v16.0.0-x86_64-linux/
wasmtime-v16.0.0-x86_64-linux/LICENSE
wasmtime-v16.0.0-x86_64-linux/wasmtime
wasmtime-v16.0.0-x86_64-linux/README.md
wasmtime-v16.0.0-x86_64-linux/wasmtime-min
     Editing user profile (/home/rsakao/.bashrc)
    Finished installation. Open a new terminal to start using Wasmtime!
# インストールしたrustを使用するために、ターミナルを新たに開くか、以下のようにシェルを再実行します
$ exec $SHELL

これでインストールは完了です。

ここではrustのソースコードをwasmtimeで動作させるため、rustをインストールします。以下はWSL(Windows Subsystem for Linux)でのインストール方法です。他の環境ではinstall rustを参照してください。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

実行例

まずrustのサンプルコードを書きます。hello.rsというファイルを作成し、以下を記載します。

fn main() {
    println!("Hello, world!");
}

hello.rsファイルが配置されたパスで以下を実行します。

$ rustup target add wasm32-wasi
$ rustc hello.rs --target wasm32-wasi
$ ls
hello.rs  hello.wasm
$ wasmtime hello.wasm
Hello, world!

rustによって記述されたソースコードからwasmバイナリを作成し、それをwasmtimeによって実行することができました。

以上が、簡単で軽量なwasmランタイムとしてのWasmtimeの実行でした。