本週 Rust 與 WebAssembly 15
歡迎閱讀另一期《本週 Rust 與 WebAssembly》!
Rust 是一種系統語言,追求三合一特性:安全性、並行性和速度。
WebAssembly 是基於堆疊的虛擬機器和指令集。它快速、安全、可攜,而且是開放網路平台的一部分。透過編譯至 WebAssembly,我們可以在網路中執行 Rust 程式碼!
這是一個 Rust 與 WebAssembly 社群進度和動態的每週摘要。
我們是否有遺漏任何資訊?歡迎在推特 @rustwasm 向我們發文或 傳送拉取請求。
想參與 Rust 與 WebAssembly 嗎?加入 Rust 與 WebAssembly 工作小組!
網路上的新聞和部落格文章
想確定在下一次發行文章時,某些內容會出現在清單上嗎?在這篇文章上留言。
- 標準化 WASI:一個用於在網路外部執行 WebAssembly 的系統介面
- @alexcrichton 已提交拉取請求,為 Rust 新增
wasm32-unknown-wasi
目標!
- @alexcrichton 已提交拉取請求,為 Rust 新增
RustVolley
是使用 Rust 與 Wasm 重新實作 Blobby Volley 2 遊戲- CloudFlare 的新
wrangler
CLI 工具讓您可以在 CloudFlare worker 上部署 Rust 生成的 Wasm - Fastly 開放原始碼 Lucet:一個原生 WebAssembly 編譯器和執行時期。 它由 Rust 建立在 Cranelift 上方,而且支援 WASI。
rustwasm/*
的更新
🎉 歡迎 @Pauan 加入 Rust 與 WebAssembly 工作小組核心團隊! 🎉
RFC
新的 RFC
無。
最終意見徵詢期間的 RFC
合併的 RFC
無。
工作小組會議
Gloo
- Gloo 更新:洋蔥層、計時器和事件
- @Aehmlo 拆分
gloo_timers
crate 的公眾 API,使用callbacks
和futures
子模組,這點我們已透過其他問題取得共識。 - @cbrevik 實作了
gloo_console_timer
crate,它為console.time
和console.timeEnd
提供了作用域閉包和 RAII 風格的協助程式。 - @OddCoincidence 更新了
gloo_timers
內部 以使用wasm_bindgen::closures::Closure::once
進行setTimeout
。 - @RyLev 為 Gloo 加入了 Azure Pipelines 持續整合測試。
- @David-OConnor 為 Gloo 加入了一個
mdbook
指南 的基礎架構。
wasm-bindgen
- @alexcrichton 微調了
no-modules
目標所產生的 JavaScript 膠水,用於實例化 Wasm 模組 來支援 CloudFlare Workers(以及其他x instanceof WebAssembly.Module
可能會失敗的環境,像是跨<iframe>
的環境) - @alexcrichton 讓我們的 JS 膠水所產生的 Rust 閉包可以正確地 偵測並防止在 JS 端發生使用後釋放問題。
- @alexcrichton 修正了一個錯誤,這個錯誤是因為 作為 JS 匯出的 Rust 結構並未總是按照確定性的順序產生 JS 類別膠水。
- @fitzgen 讓“不含 JS bundler”的範例使用
wasm-pack build --target web
,因為它現在支援最新的wasm-pack
釋出版本。 - @alexcrichton 清理了
wasm-bindgen
CLI 的選項,改為使用--target blah
,而不是--blah
(後者仍然存在,但已不建議使用)。 - @stevebob 啟用了
mdbook
的連結檢查測試,用於wasm-bindgen
指南 的持續整合測試。 - @alexcrichton 實作
rustwasm/rfcs#8
以啟用 npm 套件中傳遞式 crates 相依性。 - @RReverser 增加了
constructor
屬性 到js_sys::Object
。 - @alexcrichton 修正了將大量的
u32
從 Wasm 傳送到 JS 的問題。 - @RReverser 一致地公開
is_like_none
給我們產生的 JS 膠水,同時修正了這個過程中的一個錯誤。 - @RReverser 簡化
Option<char>
的 ABI 表示方式。 - @alexcrichton 將所有
wasm-bindgen-*
crates 移轉到 Rust 2018 版。 - @RReverser 藉移除重複的屬性轉碼 來加速透過 JS 迭代協定來反覆執行 JS 物件。
- @RReverser 針對我們設定為目標為 Node.js 時,製作了從 JS 傳遞字串到 Wasm 的特殊版本,其速度比使用 Node.js 的
TextEncoder
實作還要快。
wasm-pack
- @alexcrichton 修正一個恐慌,該恐慌可能會在安裝
wasm-bindgen
CLI 工具時發生。
貢獻請求
想參與 Rust 與 WebAssembly 嗎?加入 Rust 與 WebAssembly 工作小組!
新手好上手問題
wasm-bindgen
:--web
目標的.d.ts
檔案未定義init()
函式。wasm-bindgen
: 閉包應該實作std:fmt::Debug
- Gloo: 協助確保針對建立所有 Web 平台功能的實用程式箱,我們在檔案中追蹤問題