#wasm #cargo #运行时 #运行器 #包装器 #运行 #命令行界面

app wasm-runner

一个用于Cargo的WASM运行时包装器

5 个不稳定版本

0.3.1 2022年1月4日
0.3.0 2022年1月1日
0.2.1 2022年1月1日
0.2.0 2021年12月31日
0.1.0 2021年12月31日

排名第1718开发工具

Download history 19/week @ 2024-03-25 59/week @ 2024-04-01 32/week @ 2024-04-08 23/week @ 2024-04-15 45/week @ 2024-04-22 24/week @ 2024-04-29 24/week @ 2024-05-06 340/week @ 2024-05-13 150/week @ 2024-05-20 158/week @ 2024-05-27 158/week @ 2024-06-03 157/week @ 2024-06-10 155/week @ 2024-06-17 159/week @ 2024-06-24 148/week @ 2024-07-01 151/week @ 2024-07-08

每月下载量637

Apache-2.0

11KB
118

简单的WASM运行器

Crate CI Build License

这是一个简单的包装程序,用于运行WASM运行时(目前是wasmerwasmtime)作为运行器,用于诸如 cargo run 之类的操作。当想要使用如 wasm32-wasi 这样的目标,而不受 wasm-pack 的约束时,这很有用,例如,仅运行 cargo runcargo testwasm32-wasi 目标包中。Cargo 预期运行器会先接受程序可执行文件,然后是其参数,而大多数WASM运行时对其参数有特定的结构(例如,在程序参数前需要使用 --)。

cargo-wasi 之类的解决方案是一个很好的、更集成的解决方案,但如果您想或需要控制WASM运行时的执行方式(例如,将运行时选项传递给运行器),这个简单的包装器可能符合您的需求。

用法

使用 cargo 安装运行器

$ cargo install wasm-runner

您可以直接从源树安装

$ cargo install --path=.

之后,您现在可以拥有一个 .cargo/config.toml 文件,该文件使用此运行器执行WASM目标的二进制文件。

例如

[target.'cfg(target_arch="wasm32")']
runner = ["wasm-runner", "wasmer"]

这假设 wasmer 在您的 PATH 中,但您也可以指定完整路径。

在此假设 wasm32-wasi 已作为目标安装到您的工具链中(例如,rustup target add wasm32-wasi),您可以使用以下方式运行单元测试或二进制文件

$ cargo --target wasm32-wasi test
$ cargo --target wasm32-wasi run -- some arguments

有一些环境变量可以增加额外的可配置性(例如,Cargo 配置键 [env]

  • 可以将 WASM_RUNNER_VERBOSE 变量设置为(例如 1)以获取运行器正在执行的诊断输出。
  • 环境变量 WASM_RUNNER_RT_ARGS 可以接受一个字符串 JSON 数组来传递运行时参数。

如果您愿意,可以选择不使用配置文件来运行所有内容

$ WASM_RUNNER_RT_ARGS='["--enable-all", "--llvm"]' \
    WASM_RUNNER_VERBOSE=1 \
    CARGO_TARGET_WASM32_WASI_RUNNER="wasm-runner wasmer" \
    cargo run --target=wasm32-wasi -- hello world

示例应用

test-wasm 文件夹中有一个简单的 crate,它配置为使用 wasmer 运行包装器。

$ (cd test-wasm && cargo run --verbose -- hello world)

TODO

  • wasmtime 的 CI 测试。
  • 支持其他运行时,例如 wavm

许可证

本项目采用 Apache-2.0 许可证。

依赖项

~2–11MB
~127K SLoC