️前端研發的新基礎設施 - Rust

2022年07月15日12:06:25 科技 1887

作者:伍林輝(五靈) 阿里交付技術團隊

最開始關注到 Rust ️,是因為 Atom 團隊放棄維護 Atom,轉身投入到一個新的輕量級、更快的編輯器 Zed 的開發,而這個編輯器最大的特點就是將全部基於 Rust 來構建。而為什麼基於 Rust 來開發可以更快呢,這成功吸引了我的好奇心,也是寫這篇文章的原因。

這兩年 Rust 正在快速佔領前端基礎設施領域,Webpack、Babel、Prettier 這些熱門工具都已有了 Rust 替代方案,且性能有著 10~100 倍的提升。亞馬遜和 FaceBook 都認可它是其系統中 C / C++ 的最佳替代品,微軟更是認為 Rust 作為工業級的開發語言,在雲的基礎設施領域應該是首選。Figma、Dropbox 也已經在客戶端中使用 Rust。甚至有說法:任何能夠用 Rust 實現的應用系統,最終都必將用 Rust 實現。

在今年的 StackOverflow 開發者調查中,Rust 連續 7 年成為最受開發者喜歡的語言。但是 Rust 並不止於此,在相關領域有更多的應用,讓我們先看看 Rust 在相關領域的應用,再來關注為什麼大家都不約而同地選擇了 Rust。

一、Rust 在相關領域的應用

1.1 前端基礎設施領域

  • SWC: (Speedy Web Compiler) 基於 Rust 的前端構建工具,可以理解為 Rust 版本的 Babel,但是性能有 10 倍提升。目前被 Next.js、Deno 使用。
  • Tauri:Tauri 是目前最流行的 Electron 替代方案,通過使用 Rust 和 Webview2 成功解決了 Electron 的包體積大和內存佔用高的問題。具體可以參見底部參考文章,微軟為什麼最終放棄了 Electron。相信 Atom 團隊也是看到了 Tauri 的成功,才決定基於 Rust 去做 Zed 編輯器。
  • Rome:可以理解為 Babel 作者的新作品,Rome 旨在取代許多現有的 JavaScript 工具,集代碼檢測、打包、編譯、測試等功能於一身。
  • Parcel:零配置構建工具,特點是快速編譯和不需要配置

1.2 數據可視化領域

  • Wgpu:是 WebGPU API 標準的 Rust 實現。WebGPU 是由 W3C 發布的規範,目標是讓網頁代碼能安全可靠地訪問 GPU 功能。其實現方式借鑒了 Vulkan API,會翻譯到宿主硬體所用的各式 API(如 DirectXMetalVulkan 等)上執行。
  • Bevy:基於 Rust 語言開發,數據驅動的遊戲引擎。同時支持 2D 和 3D 圖形渲染,以及圖可視化的渲染。
  • Cube.js: cube.js 是開源的 BI 分析工具框架,其中的 Cube Store 用於分析查詢的性能優化以及通過跨資料庫連接的數據聯合等附加功能,就是由 Rust 來實現的。

Rust 的高性能以及與 WebAssembly 結合,是非常適合用在需要大數據量處理的數據可視化領域的。

1.3 Rust 和 Node 生態

  • Deno:Deno 是一個簡單、先進且安全的 JavaScript 和 TypeScript 運行時環境,其基於 V8 引擎並採用 Rust 編程語言構建。
  • Napi-rs:用 Rust 和 N-API 開發高性能 Node.js 擴展,可以替代之前用 C++ 開發的 Node.js 擴展

1.4 Web3 領域

由於 Web3 協議在處理數千萬個不可信輸入時需要快速且強大的性能,Rust 具有明顯的優勢。可以以很好的性能處理功能複雜的任務,同時還減少了與內存、邊界、空變數、初始化變數或整數溢出相關的錯誤。
使用 Rust 創建更強大的 DApp(分散式應用),它可以減少許多常見的錯誤,使 DApp 在發布後按預期運行。Rust 的性能優勢和安全性,使得 Rust 成為 Web3 應用程序的理想選擇。其中幣安的撮合引擎就是以 Rust 作為主語言,Solana 社區更是有很多基於 Rust 開發的 DApp。

1.5 Rust 作為汽車軟體主語言探索

Rust 的硬實時性和完美的內存機制,同樣適合汽車場景的軟體開發,在 RustChinaConf 上就有國汽智控關於 Rust 在汽車軟體開發的探索分享。

二、Rust 的優勢

️前端研發的新基礎設施 - Rust - 天天要聞

早在 2015 年,Mozilla 員工就發布了 Rust,它是一種專註於安全和性能的多範式編程語言,其構建考慮到了速度和效率,這意味著它可以提供零成本的抽象、繼承和功能特性。

Rust 幫助開發者開發節約內存的快速軟體。它是同樣關注代碼安全、簡潔語法的 C++ 或者 C 的一種現代的替換選擇。
Rust 和 JavaScript 非常不一樣。JavaScript 會去找到不用的變數和對象,然後自動清除它們。這個機制叫做垃圾回收,Rust 希望開發者自己去規劃手動的內存管理。

2.1 高性能

所有程序都必須管理其運行時使用計算機內存的方式。一些語言(比如:JavaScript)中具有垃圾回收機制,在程序運行時不斷地尋找不再使用的內存,在另一些語言中,程序員必須親自分配和釋放內存。
Rust 則選擇了第三種方式:通過所有權系統管理內存,編譯器在編譯時會根據一系列的規則進行檢查。如果違反了任何這些規則,程序都不能編譯。正是這種內存管理機制,使得 Rust 有驚人的內存利用率。

let s1 = String::from("hello");
let s2 = s1;   // s2 借用了 s1, s1 不再有效

println!("{}, world!", s1); // 這裡 Rust 會報錯,s1 是無效的引用

2.2 可靠性

Rust 豐富的類型系統和所有權模型保證了內存安全和線程安全,讓你在編譯期就能夠消除各種各樣的錯誤。

  • 內存安全:通常內存不安全的情況包含:空指針、野指針、懸空指針、使用未初始化的指針、非法釋放、緩衝區溢出、執行非法函數指針、數據競爭等。Rust 通過所有權系統管理內存,編譯器在編譯時會根據一系列的規則進行檢查,如果違反了任何這些規則,程序都不能編譯。
  • 線程安全:線程安全是程序設計中的術語,指某個函數、函數庫在多線程環境中被調用時,能夠正確地處理多個線程之間的共享變數,使程序功能正確完成。Rust 通過一整套基礎設施和類型檢查,強迫這些線程問題暴露在編譯階段,相比花費大量時間嘗試重現運行時並發 bug 出現的特定情況,Rust 會拒絕編譯不正確的代碼並提供解釋問題的錯誤信息。

三、Rust 陡峭的學習曲線

Rust 有一個陡峭的學習曲線,這也是目前 Rust 在大規模使用中面臨的困難。很多朋友會開玩笑說 Rust 入門並不難,我已經入門億次了。
網上流傳的一個段子,很形象的講述了 Rust 的技術複雜度。

小王是一個大型項目下的 C++ 工程師,今天他上班觸發了一個全量編譯便回家了,明天再來。
小張是一個深度神經網路Python 工程師,今天他上班改了一個參數開始訓練便回家了,三天後再來。
小李是一名資深的 Rust 工程師,今天他上班只花了一小時就完成了需求的開發。
然後連續加班了三個晚上才使得編譯通過。

圖為 Rust 的學習曲線:

️前端研發的新基礎設施 - Rust - 天天要聞

隨著前端基礎設施逐漸被Rust化,Rust在前端基礎設施的研發工作中愈發重要,招聘時也會越來越看重 Rust。
在前端工具的各項對比中,使用 Rust 改造都得到了 10 倍以上的性能提升。Rust 成為前端研發的基礎設施已經是不可阻擋的趨勢,可以從現在開始學習,一起吃 Rust 這隻螃蟹 ️。

附錄鏈接

[01] 微軟關於雲安全性的文章,最佳工業級應用產品:Microsoft: Rust Is the Industry』s 『Best Chance』 at Safe Systems Programming – The New Stack

[02] Rust 是 JavaScript 基礎設施的未來 Rust 是 JavaScript 基礎設施的未來

[03] 僅僅過去 4 年,微軟最終放棄了 Electron 僅僅過去 4 年,微軟最終放棄了 Electron

[04] Solidity、Go、Haskell、Rust,Web3 開發者掌握哪種編程語言更具優勢?Solidity、Go、Haskell、Rust,Web3 開發者掌握哪種編程語言更具優勢? - Foresight News

[05] Rust是未來前端基礎設施:GitHub - i5ting/rust-fe: Rust是未來前端基礎設施

科技分類資訊推薦

怪獸級別的三防手機 - 天天要聞

怪獸級別的三防手機

那就是來自unihertz的Tank3,個人在無意看到它的相關評測,結果讓我大吃一驚。圖上是pro版,實際配置大同小異unihertz是國內的一個手機品牌,主要做小眾手機,比如最小的智能手機啥的,也做三防手機Tank系列。現在來看,Tank
微軟關閉全國所以線下門店 - 天天要聞

微軟關閉全國所以線下門店

微軟關閉全國所有線下門店。驚人消息,微軟或要告別中國市場的線下實體店面了。從鄭州到北京,微軟線下門店正在悄然關閉。據派財經報道,微軟決定關閉全國所有線下授權門店,僅保留官網商城與京東旗艦店。微軟發言人表示,這是為了滿足客戶不斷變化的需求而對
華為MatePad SE 2024款發布:1299元起 搭載驍龍685 - 天天要聞

華為MatePad SE 2024款發布:1299元起 搭載驍龍685

站長之家(ChinaZ.com)7月1日 消息:華為今日正式發布了MatePad SE2024款平板電腦,憑藉其親民的價格和全面升級的配置,再次引發了市場的關注。這款平板提供8GB128GB和8GB256GB兩種配置,預售價分別為1299元和1499元,將於今天10:08開啟預售,並在7月4日10:08正式首銷。在外觀設計上,華為MatePad SE2024
三星Galaxy Tab S9系列:學霸們的期末複習利器 - 天天要聞

三星Galaxy Tab S9系列:學霸們的期末複習利器

每到7月期末考試季都會有很多「黑馬」脫穎而出,Ta們看似在平日的學習中狀態平平,但卻在考試時有非常不錯的表現。細究其成績提升的秘訣,其實是科學的複習方法在幫忙。尤其是在今年,很多同學都開始藉助三星Galaxy Tab S9系列這樣的AI大屏平板來輔助學習,其多元的AI功能與S Pen帶來的記錄體驗,能讓學習效率飆升。標配S ...
全系搭載麒麟5G處理器 華為Nova 13系列即將發布 - 天天要聞

全系搭載麒麟5G處理器 華為Nova 13系列即將發布

隨著智能手機市場新一輪的競爭加劇,華為公司宣布即將推出備受矚目的Nova 13系列手機。據悉,此次Nova 13系列將全系搭載華為自主研發的麒麟5G處理器,這一重磅消息迅速在業界引起了廣泛關注。華為Nova系列一直以來以其時尚的設計和出色的性能受到年輕消費者的喜愛。而此次Nova 13系列的發布,更是華為在技術創新和用戶體驗...
華為方舟壹號:智能家居引領者,將撬動百萬億新房產! - 天天要聞

華為方舟壹號:智能家居引領者,將撬動百萬億新房產!

華為出手,果然不凡!當數百家車企在新能源汽車行業拼的焦頭爛額之時,華為已孑然一身跳出了無底煉獄。華為以他獨領全行業的高精尖科技和他高瞻遠矚的獨特眼光,又一次引領了一個全新的耀眼領域。寬廣的眼界和胸懷天下的格局,總使華為處於領跑者的地位。
水質檢測儀的精度是多少? - 天天要聞

水質檢測儀的精度是多少?

水質檢測儀水質檢測儀的精度主要取決於其設計、感測器類型以及校準方法。以下是對養殖水質檢測儀精度的一些詳細分析:    1.感測器類型:    ·水產養殖水質檢測儀配備了高精度感測器,這些感測器能夠實時監測水體中的關鍵指標,如PH值、溶解氧、