官方:我們對Rust和WebAssembly的願景
來自專欄時光與精神小屋40 人贊了文章
歡迎關注「Rust每日新聞」tg channel:https://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 | 前端開發 |