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

weixin_33843409發表於2019-04-09

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 \u0026quot;C\u0026quot; {    fn alert(s: \u0026amp;str);}#[wasm_bindgen]pub fn greet(name: \u0026amp;str) -\u0026gt; String{    \u0026amp;format!(\u0026quot;Hello, {}!\u0026quot;, 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

相關文章