️前端研發的新基礎設施 - 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是未來前端基礎設施

科技分類資訊推薦

所謂「大而美」法案或將繼續擴大美債規模 - 天天要聞

所謂「大而美」法案或將繼續擴大美債規模

美國所謂「大而美」法案7月1日在國會參議院得到通過,當前還需要得到眾議院的通過才能提交給美國總統簽字。如果該法案最終通過並成為法律,預計將對已創下紀錄的美國聯邦政府債務增加壓力。美國國會預算辦公室估....
解碼哈葯618 突圍路徑:從產品矩陣到生態構建的行業示範 - 天天要聞

解碼哈葯618 突圍路徑:從產品矩陣到生態構建的行業示範

當 2025 年 "618" 電商大促成為檢驗消費市場韌性的試金石,哈葯以國民葯企的戰略定力與創新突破,構建起一套 "傳統賽道築基 + 新興領域破局" 的增長模型。在保健品行業競爭白熱化的背景下,這家企業通過多品牌協同、產品創新迭代與數字化營銷破圈,不僅鞏固了細分市場領導地位,更以全鏈路生態布局為大健康產業提供了可複製...
更快,更強,更純粹!超薄極致電競利器ROG絕神OLED顯示器 - 天天要聞

更快,更強,更純粹!超薄極致電競利器ROG絕神OLED顯示器

熟悉鼠鼠我的朋友都知道我是一個遊戲愛好者,無論是喊上朋友們一起開黑還是自己沉浸式體驗製作精良的3A大作,都能在平時繁重的牛馬生活之餘帶給我放鬆和快樂。作為重度遊戲愛好者,外設的選擇自然是馬虎不得,這其中我最為看重的就是能夠直接影響平時遊戲體
坐飛機和高鐵分別可以攜帶什麼樣的充電寶? - 天天要聞

坐飛機和高鐵分別可以攜帶什麼樣的充電寶?

來源:【江西發佈】近日民航局禁止攜帶沒有3C標識、被召回範圍的充電寶上機規定引發關注坐飛機和高鐵分別可以攜帶什麼樣的充電寶?充電寶上飛機乘坐飛機時,充電寶只能在手提行李中攜帶或隨身攜帶,嚴禁在託運行李中攜帶。
小米YU7「封神」 國產新能源汽車「新王換舊王」 - 天天要聞

小米YU7「封神」 國產新能源汽車「新王換舊王」

摘要:新能源的新格局,雛形已現。鳳凰網科技 出品2025年6月26日夜晚,小米旗下首款SUV車型小米YU 7正式發佈。這款以豪華、高性能、極致體驗、先進安全性為特徵的SUV車型,猶如一顆重磅核彈投入本就不平靜的新能源車市,激起千層浪。
百度前副總裁璩靜開醫美診所,人均消費2218元 - 天天要聞

百度前副總裁璩靜開醫美診所,人均消費2218元

紅星資本局7月2日消息,百度前副總裁璩靜在華為總部坂田基地附近開了一家醫美診所。據公開資料,璩靜名下新增一家存續企業——深圳大為診所。該診所成立於2024年12月23日,璩靜持股比例為100%,認繳出資額為100萬元,經營範圍為診所服務等。
千里智行,常用常新,傳祺嚮往S7 開啟重磅OTA升級 - 天天要聞

千里智行,常用常新,傳祺嚮往S7 開啟重磅OTA升級

7月2日,傳祺嚮往S7 OTA如期而至,OTA 2.0版本正式全量推送。本次升級新增16項功能,31項 功能升級和57項體驗優化,主要涉及智能座艙、智能輔助駕駛、娛樂系統、車機交互等多個維度,旨在為用戶提供常用常新的出行體驗,功能強大又好用。
九州風神推出大霜塔稜鏡風冷散熱器:雙塔稜鏡頂蓋,209 元 - 天天要聞

九州風神推出大霜塔稜鏡風冷散熱器:雙塔稜鏡頂蓋,209 元

IT之家 7 月 3 日消息,九州風神 DeepCool 現已推出大霜塔稜鏡 (AG620 ARGB V2) 風冷散熱器。其採用雙塔雙風扇六熱管直觸設計,雙塔頂部均配有 ARGB 燈效「稜鏡頂蓋」。大霜塔稜鏡長寬高 129×136×162 (mm),支持 45mm 高內存條。其六根 6mm 雙向恆定熱平衡熱管採用 CTT 2.0 核心觸控技術在塔體底部並管排