官方:我們對Rust和WebAssembly的願景

官方:我們對Rust和WebAssembly的願景

來自專欄時光與精神小屋40 人贊了文章

歡迎關注「Rust每日新聞」tg channel:t.me/rust_daily_news

原文: Our Vision for Rust and WebAssembly

以下是對原文內容的一些總結:

工作組願景:

如外科手術般插入由Rust編譯的wasm來加速JavaScript性能敏感的代碼,而不需要扔掉或重寫現有的代碼庫,也不需要更改現有的開發流程,做到無縫集成。

幾點原因:

  • 關注性能敏感的代碼

因為js的優化並沒有那麼簡單,而使用Rust你根本不需要成為js優化專家,不需要熟悉JIT內部實現,不需要魔法也能加速。

  • 方便集成

直接編譯為.wasm,使得現有的js代碼庫可以增量式部分採用Rust。而且還可以保持你現有代碼庫,不需要重寫。

  • 不需要更改你現有開發流程

對於js開發者,可以將.wasm發布到npm,然後在package.json中依賴它。可以導入為ECMAScript模塊,遵循CommonJS風格的require,或者作為新的對象添加到JS全局。而對於Rust開發者來說,可以將.wasm發布到npm,甚至都不需要安裝nmp、nodejs等js環境。wasm-pack會編譯,優化並生成js綁定,然後發布到npm中。

當前狀態和工具集:

  • 正在寫的書:The Rust and WebAssembly Book
  • wasm-bindgen,幫助Rust和js通信。甚至通過它可以在js和rust之間發送string和struct這樣的類型,而不僅僅是wasm標準里的整數和浮點數。
  • wasm-pack,一站式構建、發布Rust編譯的wasm。
  • Twiggy ,檢查.wasm代碼尺寸的工具
  • wee_alloc,為wasm設計的小型內存分配器
  • wasm-snip,可以用一條unreachable指令強制替換函數的主體。用於在運行時永遠不會使用的函數的情況。配合wasm-gc。
  • console_error_panic_hook,將Rust內部編譯錯誤在瀏覽器端顯式,方便調試

當然,未來還需要更多的新夥伴加入Wasm工作組,共謀大業。


推薦閱讀:

奇舞周刊第 257 期:我從小程序學到了什麼
控制項設計的方案權衡
在vue開發環境下發現關於setTimeout的幾個小問題
vue-cli安裝、node-sass安裝、mintUI組件庫安裝
棒棒團第四期分享:半年工作經驗選擇公司團隊的一些坑

TAG:Rust編程語言 | WebAssembly | 前端開發 |