WebAssembly ↗(简称 Wasm)允许你将 Rust、Go 或 C 等语言编译为可在多种环境中运行的二进制格式,包括 Web 浏览器 ↗、Cloudflare Workers 以及其他 WebAssembly 运行时。
你可以使用 WebAssembly 来:
-
通过
WebAssembly.instantiate()运行 JavaScript 以外的语言编写的代码。 -
使用 Rust 编写完整的 Cloudflare Worker,通过绑定直接从 Rust 代码访问 Workers 的 JavaScript API。
大多数编程语言都可以编译为 Wasm,但不同语言和编译器的支持程度各不相同。以下语言提供了指南:
WebAssembly 是一套快速演进的标准,许多 API 提案 ↗ 处于不同的开发阶段。总体而言,Workers 支持与 Google Chrome 中可用功能相同的特性集。
Workers 支持 SIMD。有关在 WebAssembly 中使用 SIMD 的更多信息,请参阅 Fast, parallel applications with WebAssembly SIMD ↗。
Workers 中不支持线程。每个 Worker 在单个线程中运行,且不支持 Web Worker ↗ API。
编译为 WebAssembly 通常需要包含额外的运行时依赖。因此,使用 WebAssembly 的 Worker 通常比等效的 JavaScript Worker 更大。Worker 越大,启动时间可能越长。有关更多信息,请参阅 Worker 启动时间。建议使用 wasm-opt ↗ 等工具优化 Wasm 二进制文件的大小。
WebAssembly System Interface ↗(简称 WASI)是 WebAssembly 的模块化系统接口,标准化了一组用于网络、文件系统访问等的底层系统调用。应用程序可以依赖 WebAssembly System Interface,在不同主机环境和操作系统上表现一致。
WASI 是比 Wasm 更早且演进更快的标准集。WASI 在 Cloudflare Workers 上处于实验性支持阶段,仅实现了部分系统调用。请参阅我们的 WASI 开源实现 ↗,以及演示其用法的 Workers 上的 WASI 博客文章 ↗。