用途:面向 WebAssembly(WASM)的集成开发,涉及组件模型(Component Model)、WASI 系统接口,以及 Rust、Go 等语言编译为 WASM,适合浏览器、边缘计算与多语言运行时场景。
典型使用场景:浏览器端用于加密、图像处理(如 Figma、Google Earth);边缘计算如 Cloudflare Workers、Fastly;服务端用于沙箱化插件(如 Envoy);嵌入式用于 IoT、汽车领域。
编译方式(资料所列):Rust 使用 wasm-pack(约 50KB,注重性能);Go 使用 GOOS=js GOARCH=wasm(约 2MB);C/C++ 使用 Emscripten(legacy);AssemblyScript 为类似 TypeScript 的写法。
Rust 到 WASM 示例:使用 wasm_bindgen 声明函数,构建命令为 wasm-pack build --target web,前端通过 import init, { add } from './pkg/wasm.js' 并 await init() 后调用。
WASI:可用 rustc --target wasm32-wasi main.rs -o app.wasm 编译,再以 wasmtime app.wasm 运行。组件模型支持以 interface 定义类型化接口(如 add: func(a: s32, b: s32) -> s32),并组合 Rust/Go/C++ 模块。
边缘示例(Cloudflare):导入 processor.wasm,在 fetch 中调用 WebAssembly.instantiate(wasm) 并使用导出函数处理请求。
运行时:Wasmtime(快速、支持 WASI)、Wasmer(通用)、WasmEdge(面向边缘与 K8s)。
限制:资料未提供各语言的版本要求、兼容性细节、性能基准、收费与平台支持范围,暂未提供。