Appearance
Rust + WebAssembly 全链路解析
第一本把 WebAssembly 从规范到工具链到生产实践串成完整链路的中文技术专著。
Rust 和 WebAssembly 是天生搭档:Rust 的零成本抽象让它编译出的 WASM 模块体积小、执行快,而 WASM 的沙箱化安全模型恰好补上了 Rust 在浏览器场景的最后一公里。wasm-bindgen 让 Rust 调 JavaScript、JavaScript 调 Rust 像原生代码一样自然;wasm-pack 把编译、绑定生成、npm 发布一键搞定;WASI 让同一份 WASM 模块在浏览器外也能安全运行;组件模型正在把 WASM 从"单一功能的编译目标"推到"可组合的软件单元"。
但大多数人停留在 wasm-pack build 跑通 Demo 的阶段。WASM 的线性内存模型对 Rust 的所有权系统意味着什么?wasm-bindgen 生成的胶水代码到底做了什么?为什么一个 100 行的 Rust 函数编译出来 50KB 的 WASM?Guest-Host 通信的开销从哪来?WASI preview 2 和 preview 1 有什么本质区别?组件模型的"世界"和"接口"如何映射到代码?这些问题不搞清楚,WASM 永远只是玩具。
本书基于 wasm-bindgen 0.2.118 / wasm-pack 0.14 / WASI Preview 2 (Stable) / Component Model (Phase 1),从 W3C WASM 规范出发,经工具链实现,到生产架构,逐层拆解 Rust + WASM 全链路。每一章先回答"为什么这样设计",再看"代码怎么实现"。
这是 Rust 后端系列的第七本书,与《Rust 编译器与运行时揭秘》中的 LLVM 后端内容衔接——前者讲 Rust 如何编译到原生机器码,本书讲 Rust 如何编译到 WASM 虚拟指令集。与《Vue 3 设计与实现》《React 19 内核探秘》形成跨领域关联——前端框架如何消费 WASM 模块、WASM 组件如何在浏览器运行时中与 JS 共存。
适合谁读
- Rust 开发者:想把 Rust 的性能优势带入浏览器、边缘计算、嵌入式等场景,需要理解 WASM 编译目标和工具链
- 前端工程师:在性能敏感场景引入 WASM 模块,需要理解 JS-WASM 互操作的开销和陷阱
- 系统程序员:关心 WASM 沙箱化安全模型的设计,以及 WASI 如何定义"安全的能力集"
- 架构师:评估 WASM 组件模型能否支撑"可组合的软件架构",需要理解组件模型的核心抽象
- 读过本系列 Rust 书籍的读者:从编译器到运行时到 Web 框架,补上 WASM 这个关键编译目标
目录
开篇
第一部分:WASM 规范与虚拟机
第二部分:Rust → WASM 工具链
- 第5章 Rust 的 wasm32 目标与代码生成
- 第6章 wasm-bindgen:Rust 与 JS 的桥梁
- 第7章 wasm-bindgen 深入:类型映射与胶水代码
- 第8章 wasm-pack:构建、测试与发布
第三部分:性能与优化
第四部分:超越浏览器
- 第12章 WASI:WebAssembly 系统接口
- 第13章 WASI Preview 2 与 Wasmtime 运行时
- 第14章 组件模型:可组合的 WASM 架构
- 第15章 wasm-component-layer 与 wit-bindgen
第五部分:工程实践
- 第16章 浏览器中的 WASM:与 JS 框架协作
- 第17章 服务器端 WASM:边缘计算与插件系统
- 第18章 wasm-tracing 与可观测性
- 第19章 生产案例:从图像处理到密码学
- 第20章 设计模式与架构决策
源码版本
本书分析基于以下版本:
- wasm-bindgen 0.2.100(2026 年 4 月)— Rust ↔ JS 绑定生成器
- wasm-pack 0.13.1 — 构建、测试、发布工具链
- WASI preview 2(2026-04 快照)— 系统接口规范
- Component Model 规范(Phase 3, 2026-04 快照)
- Wasmtime 28 — 字节码联盟的 WASM 运行时
- wit-bindgen 0.40 — WIT 接口绑定生成器
所有涉及的结构体、函数、宏均指向 GitHub 上对应 tag 的源文件。读者可通过 cargo install wasm-pack、git clone https://github.com/rustwasm/wasm-bindgen 对照阅读。
与其他书的关联
- 前置:《Rust 编译器与运行时揭秘》第 5 章的 LLVM 后端——理解 Rust 如何生成机器码后,本书第 5 章将展示同一套 MIR 如何走向 wasm32 目标。
- 并读:《Vue 3 设计与实现》第 9 章(Vapor Mode)与《React 19 内核探秘》第 12 章(Server Components)——前端框架如何嵌入 WASM 模块做计算密集任务。
- 后续:《Tokio 源码深度解析》的异步运行时模型与 WASI 的异步支持形成对比——两种"让出执行权"的不同设计哲学。
版权声明
本书采用 CC BY-NC 4.0 许可协议。转载或引用请署名 杨艺韬 并附原文链接,禁止商业用途。