WebAssembly
为什么选择 Rust?
可预见的性能
没有难以预料的 GC 暂停,也没有 JIT 编译器造成性能抖动,只有底层控制与上层人体工程学的完美结合。
更小的代码尺寸
代码尺寸越小,页面加载速度就越快。Rust 生成的 .wasm
模块不含类似于垃圾回收器这样的额外成本。高级优化和 Tree Shaking 优化可移除无用代码。
现代设施
充满活力的库生态系统助您旗开得胜。Rust 拥有丰富的表达能力和零成本的抽象,以及助力您学习的友好社区。
JavaScript 的最佳搭档
增强,而非取代
WebAssembly 的梦想不是扼杀 JavaScript,而是与其并存,帮助处理一些繁重或底层的任务。Rust 以性能为先,这些任务也可以受益。
友好的工具链
您可以将 Rust WebAssembly 包发布到 npm 之类的包仓储中心上。使用 webpack、Parcel 或其它工具来打包并分发它们。使用 npm audit
之类的工具和 Greenkeeper 来维护它们。
无缝的互操作性
自动生成 Rust、WebAssembly 和 JavaScript API 之间的绑定代码。充分利用 web-sys
之类的库为整个 Web 平台提供预打包的绑定。
产品应用
我们可以将 Rust 编译成 WASM,并在编织到互联网结构中的 Serverless 功能中调用它。WASM 的潜力巨大,我迫不及待地想要用它做更多的事情。
– Steven Pack,《Serverless Rust 与 Cloudflare Workers》
source-map
库的 JavaScript 实现为了性能累积了大量复杂的代码,而我们将它替换为地道的 Rust。Rust 不会强迫我们在明确表达意图和运行时性能之间做出选择。
– Nick Fitzgerald,《用 Rust 和 WebAssembly 提升 Source Maps 的性能》
Rust 的特性使然,通过 WASM 可以轻松地将 DivANS 编解码器嵌入到网页中。
– Daniel Reiter Horn and Jongmin Baek,《用 DivANS 构建更好的压缩》