️前端研發的新基礎設施 - 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月3日無錫高新區企業迪哲醫藥宣布舒沃哲的新葯上市申請正式獲得美國食品藥品監督管理局批准成為全球首個且唯一在美國獲批的表皮生長因子受體(EGFR)20號外顯子插入突變(exon20ins)非小細胞肺癌(NSCLC)國創新葯同時也是中國首個獨立研發在美獲批的全球首創新葯舒沃哲是一款口服、不可逆、針對多種EGFR突變亞型的高...
百度前副總裁璩靜開醫美診所,人均消費2218元,曾因 “霸道女總裁” 言論道歉辭職 - 天天要聞

百度前副總裁璩靜開醫美診所,人均消費2218元,曾因 “霸道女總裁” 言論道歉辭職

紅星資本局7月2日消息,百度前副總裁璩靜在華為總部坂田基地附近開了一家醫美診所。據公開資料,璩靜名下新增一家存續企業——深圳大為診所。該診所成立於2024年12月23日,璩靜持股比例為100%,認繳出資額為100萬元,經營範圍為診所服務等。企查查顯示,根據璩靜關聯的任職歷史,她曾任深圳市星光健康管理有限公司(以下簡...
推薦數商雲B2B撮合交易平台,搭建企業間合作橋樑 - 天天要聞

推薦數商雲B2B撮合交易平台,搭建企業間合作橋樑

來源:數商雲引言:企業數字化轉型與B2B撮合交易平台的崛起在全球經濟一體化與數字經濟深度融合的背景下,企業間的合作模式正經歷深刻變革。傳統供應鏈中信息不對稱、交易成本高、協同效率低等問題,已成為制約企業發展的核心痛點。
當無人機 “飛” 入生活,數字低空如何重構我們的出行與未來? - 天天要聞

當無人機 “飛” 入生活,數字低空如何重構我們的出行與未來?

交匯點訊 近日,蘇州國際博覽中心的展廳里人頭攢動,2025數字低空大會在此隆重舉行。作為第三屆低空(蘇州)產業創新生態大會的重要組成部分,這場由未來移動通信論壇與鵬城實驗室聯合主辦的盛會,承載着特殊的行業意義——繼2024年在深圳首次提出“數字低空”概念並引發廣泛共鳴後,它既是對過去一年行業探索的總結,更是...
雷軍披露小米 YU7 銷售數據;特斯拉 Q2 交付汽車 38.4 萬輛;榮耀 Magic V5 發布|Do早報 - 天天要聞

雷軍披露小米 YU7 銷售數據;特斯拉 Q2 交付汽車 38.4 萬輛;榮耀 Magic V5 發布|Do早報

Hello,大家早上好,又是元氣滿滿的一天,先來瀏覽新鮮的早報吧~【微信多端正式更新】7 月 2 日,微信 iOS / 安卓 8.0.61 正式版攜手登場;而在 7 月 1 日,微信在官網也上架了 PC 的新版本,Windows / Mac 4.0.6 迎來全新發布。【多地開放往屆高考成績網上查詢功能】河北、浙江、陝西、山東等地都開放了往屆高考成績的查...
長城為何不做增程?詳解Hi4背後的技術和戰略邏輯 - 天天要聞

長城為何不做增程?詳解Hi4背後的技術和戰略邏輯

在中國新能源汽車產業邁入智能化與電動化深水區的當下,動力技術路線的選擇,不僅關乎產品體驗,也在重塑車企的技術底盤與品牌認知。與越來越多自主品牌押注增程技術不同,長城汽車選擇走另一條更具挑戰性的路線——全場景智能四驅電混技術體系Hi4。這個選擇背後,是對效率、安全與技術普適性的權衡與押注。Hi4,一種技術“...
解碼“民生答卷”丨如何“喚醒”沉睡的養老資源 - 天天要聞

解碼“民生答卷”丨如何“喚醒”沉睡的養老資源

湖北日報全媒記者 方琳 李光正 張華“幸福食堂、健身房、閱覽室、娛樂室、理療室一應俱全,可沒多少人來。”6月19日,在鄂東南某鎮,一家開業一個多月的養老服務綜合體經營者王先生望着冷清的門廳,難掩焦慮。截然不同的是,在武漢眾多社區養老中心,唱歌、跳舞等活動日程排得滿滿當當,老人們排隊“搶位”,養老床位更是“...
YU7爆火是雷軍營銷太強?張全蛋貼臉開大車企大佬,遮羞布都撕了 - 天天要聞

YU7爆火是雷軍營銷太強?張全蛋貼臉開大車企大佬,遮羞布都撕了

6月26日,小米YU7正式公布售價,很多人都預料到小米YU7會非常火,但是完全沒有料到小米YU7能那麼火,3分鐘大定破20萬輛,18小時鎖單24.8萬輛,可以說創造了國內汽車市場前所未有的新紀錄。這也讓之前那些攻擊小米汽車的車企大佬和業外人士的表述顯得蒼白無力,小米YU7的價格不便宜,現在整個汽車行業的需求量也呈現疲軟態勢...