跳到主要内容

WIT 与 World

WIT(WebAssembly Interface Types)用于描述跨语言/组件的接口契约。

先读:如需快速回顾 WIT 的“类型与语法”,请参考“类型与语法速览” → ./types-and-syntax

核心概念

  • package:接口包的逻辑命名空间,包含多个接口/世界。
  • interface:函数、类型、错误码等的集合。
  • world:将多个接口组合成“可实现/可使用”的集合,作为组件边界。

关系示意:

绑定与生成

  • cargo component add:为 Rust 工程加入组件化支持
  • wit-bindgen:在多语言场景下生成绑定代码
  • wasm-tools component new:将 core wasm 封装为 component

常见流程:

# Rust 组件化(示例)
cargo component new my-demo
cargo build -Zunstable-options --target wasm32-wasi --release

# 查看组件 WIT
wasm-tools component wit target/wasm32-wasi/release/my-demo.component.wasm

更多可见 examples/ch05/components_composition

类型与版本化建议

  • 跨语言类型:优先使用基础类型与 record/variant,避免深层嵌套递归结构;
  • 错误模型:以 result/variant 表达错误码,便于观测与聚合;
  • 版本演进:
    • 新增字段尽量设为可选(Optional),避免破坏性变更;
    • 更名或弃用通过新接口保留旧接口一段时间;
    • 以 world 维度进行“能力分组”,控制依赖面。

更多:详见“类型与语法速览” → ./types-and-syntax