跳到主要内容

第 3 章 运行时与工具链

目标:了解主流运行时差异、常用编译工具链与调试工具;完成“Rust 生成 WASM + Wasmtime 执行”。

快速跳转:完整的运行指南与依赖矩阵见 examples/README.md(总览导航 + 工具链准备 + FAQ)。

模块导览(本章深入)

  • 运行时全览 → ./runtimes
  • 工具链与开发流程 → ./tooling

3.1 运行时对比

  • Wasmtime(Bytecode Alliance):标准推进者,组件模型支持积极。
  • Wasmer:多语言嵌入、商业化场景较多。
  • WasmEdge:云原生/边缘计算场景优化。
  • WAMR(Intel):超低资源场景。

对比维度:启动时延、内存占用、WASI/组件模型支持、嵌入 API、生态工具。 小贴士:提前预编译(AOT/cwasm)能显著改善冷启动,见第 7 章的预编译对比示例。

3.2 工具链

  • LLVM/Emscripten:C/C++ 到 WASM。
  • Rust:wasm32-unknown-unknownwasm32-wasi 等 target。
  • wasm-tools:parse / print / validate / component

3.3 调试工具实践

  • wasmtime inspect / wasm-tools objdump / wasm-objdump 等。

示例(结构查看):

wasmtime inspect target/wasm32-wasi/release/rust_wasm_wasmtime.wasm | head -n 40
wasm-tools print target/wasm32-wasi/release/rust_wasm_wasmtime.wasm | sed -n '1,40p'

3.4 示例:Rust 生成 WASM + Wasmtime 执行

参见 examples/ch03/rust_wasm_wasmtime/

# 安装目标
rustup target add wasm32-wasi

# 构建 WASM
cd examples/ch03/rust_wasm_wasmtime
cargo build --release --target wasm32-wasi

# 通过 Wasmtime 调用导出函数
wasmtime target/wasm32-wasi/release/rust_wasm_wasmtime.wasm --invoke add 1 2
# 期望输出:3

小结:选择运行时与工具链时,需要结合部署环境与能力需求。下一章进入 WASI。


更多内容:

  • 运行时全览 → ./runtimes
  • 工具链与开发流程 → ./tooling