如何在 Cloudflare Workers 上部署 Rust 生成的 WASM

阅读数:3314 2019 年 4 月 9 日

Cloudflare 最近开源了 Wrangler。这是一组 CLI 工具,用于构建、预览和发布 Cloudfare Workers,这些 Workers 用 Rust 语言编写并编译到 WebAssembly。

Wrangler 的目标是为开发人员提供端到端的体验,使他们能够在 Rust 中编写自己的无服务器功能,并在将其转换为 WebAssembly 后,在 Cloudflare Workers 上部署和运行这些功能。WebAssembly 编译步骤隐藏在 Wrangler CLI 后面。

要尝试使用 Wrangler,可以使用 cargo 执行 cargo install Wrangler 安装它。Wrangler 生成的工程的一般结构包括一个存储 Rust 代码的 src 目录,一个包含一个 worker.js 的 Worker 目录(可以从中提取 Rust 生成的代码)和几个元数据文件。Wrangler 有三个主要命令:build(构建)、preview(预览)和 publish(发布)。build 命令将所有 Rust 代码编译到 WebAssembly,而 preview 命令将允许你在 Cloudflare 基础设施上运行函数。不过,目前还不能在本地预览函数,但至少在 Cloudflare 基础设施上预览函数不需要 Cloudflare 账户。

你可以像往常一样编写 Rust 代码:你可以在你的 Cargo.toml 文件中引入任何指定它的外部依赖项。使用 wasm_bindgen 通过启用字符串、对象、类等来改进 wasm 和 JS 之间的通信。例如,你可以写这样一个简单的 Rust 文件:

复制代码
use wasm_bindgen::prelude::*;
extern "C" {
fn alert(s: &str);
}
#[wasm_bindgen]
pub fn greet(name: &str) -> String{
&format!("Hello, {}!", name);
}

该代码可以使用以下语法导入并在 worker.js 文件中执行:

复制代码
const { greet } = wasm_bindgen;
await wasm_bindgen(wasm)
const output = greet('Worker')

Cloudflare 计划向 Wrangler 添加更多的命令,包括对 linting、测试、基准测试和大小分析的支持。

Cloudflare Workers 是用 JavaScript 编写的无服务器函数,可以在分布世界各地的 Cloudflare 边缘节点运行。Cloudflare 表示,由于它们的边缘节点与终端用户非常接近,Workers 可以通过减少网络延迟来提高性能。Cloudflare Workers 使用 V8 JavaScript 引擎运行代码,但他们不使用 Node.js,而是依靠他们自己实现的一些 API 来提高效率和安全性。

查看英文原文链接: Deploying Rust-Generated WASM on Cloudflare Serverless Workers

收藏

评论

微博

发表评论

注册/登录 InfoQ 发表评论