Rust一生坎坷,團隊幾度解散,如今卻正衝擊CC++的統治地位

幾天前谷歌宣佈推出全新的、更安全的嵌入式作業系統KataOS,使用seL4作為為核心,幾乎完全用Rust實現。

Rust一生坎坷,團隊幾度解散,如今卻正衝擊C/C++的統治地位

谷歌官網釋出KataOS

一直以來嵌入式系統絕大部分都是由C和C++寫的,谷歌此次釋放的訊號,加上之前開始用Rust構建Android開源專案的部分內容,這個較為年輕的語言似乎真的在以其更高的安全性撼動老牌C/C++語言的統治地位。

與出身豪門的C不一樣,Rust一路走來並不順利。

01

Rust - 起源

相比C和C++,Rust的出生似乎並沒有那麼傳奇。

一個業餘愛好專案

Graydon Hoare最開始是Mozilla的語言工程師,他的主要工作是為其他語言開發編譯器或者工具。似乎每一個程式設計師都有一個因為喜愛而開發的業餘專案?Hoare也不例外,2006年開始他著手建立開發一個語言原型——Rust。正是基於對編譯器和程式語言的激情,他一直沒有放棄Rust這個個人專案,工作之餘都會花些心思去改進它。

2009年他決定向當時的經理展示這個原型,並很快吸引了其他人的注意,獲得了Mozilla的資金支援並專門成立了一個團隊。他擔任團隊領導,和其他同事一起研究Rust,以期讓它變得比C++

更安全、更併發、更簡單

欲代替C++拯救瀏覽器

當時Mozilla正在準備建立開發實驗性瀏覽器引擎Servo專案,Rust便是該專案重要的一部分,用來重建瀏覽器堆疊。當時幾乎所有的瀏覽器,包括IE、Firefox、Chrome、Opera、和Safari的核心渲染引擎都是用C++寫的。

當越來越多的由C++記憶體模型引發的安全漏洞無法根除,安全問題被一次又一次地提及之後,開發一個擁有當前引擎功能但具備更高記憶體安全的Web瀏覽器引擎被提上了日程,而Rust讓大家看到了希望。

Rust的目標是能提供與C++的底層系統具有相似的控制級別——也就是系統程式語言——但更簡單,最重要的是更安全。Hoare對此充滿信心,他相信Rust。

02

Rust - 演化

但事情並不如他想的那麼簡單。

Rust專案困境

隨著Servo專案的發展,Rust的野心也變得越來越大,它不再滿足最初簡單的目標,想要從 C++/Lisp/Haskell/Scala/Cyclone 中吸收更高階的特性,追求成為“世界上最快”效能的語言。

此外,Hoare在團隊的領導位置上也坐得不是很舒服,他不太擅長擔任這種職位,也不太會協調團隊保持內部的統一性和正確性。擔任專案負責人,似乎耗盡了他的能量與激情。正如他2016年被邀請去蘋果開發Swfit的時候說得一樣:(去蘋果工作)我很喜歡,因為那是一個非領導職位。

巨大的技術壓力和團隊壓力,讓Hoare一度將完成Rust稱之為“西西弗斯的任務”——不可能完成的任務。2013年中期的時候,他選擇休息一下,離開了Rust團隊。

Rust坎坷後看到希望

在Hoare離開前,Rust經歷了數個小版本,依次引入了類、解構函式和多型性等特性。因為Rust“在不犧牲安全性的情況下,像C++一樣高效和便攜”的目標難度不小,開發進度一拖再拖,直到Hoare離開兩年後的2015年5月才釋出1。0版本。

和許多程式語言一樣,後期的開發和研究往往是整個團隊努力的結果。Hoare為Rust付出了近8年的時光,儘管最後與Rust相伴的日子並沒有那麼快樂,甚至讓他感到筋疲力盡和崩潰,但他依然認為Rust將永遠在他心中佔有特殊的位置。他非常喜歡Rust,因為它在安全問題上做出了很大的貢獻。

相比以前的實驗專案,現在的Rust已經變得更簡單,也更強大。標準庫的確立,讓維護使用Rust編寫的專案變得更輕鬆,這意味著構建可靠、高效的系統變得更加容易。2016年後,火狐瀏覽器中的大部分C++程式碼已經被Rust代替了。

此後,微軟、亞馬遜、谷歌等一眾科技巨頭紛紛加入Rust專案,共同研究開發這個更安全的程式語言。2019年微軟也公佈了他們使用Rust來作為C、C++的代替方案計劃。

03

Rust - 向前

一切似乎又好起來了,幾年下來Rust的發展有目共睹,Stack Overflow的調查顯示Rust連續5年是程式設計師“最喜愛的語言”(截至2020年)。

但命運似乎又對Rust開了個玩笑。

曾經團隊解散,Rust再遇危機

2020年Mozilla開始了大規模的裁員,Servo整個團隊都沒了,而其中就有不少Rust核心開發人員。儘管Rust社群的貢獻已經很大了,但Rust的基礎建設和核心人才還是依託於Mozilla,包括Rust包管理器、crates。io。

人們又開始為Rust未來開始擔憂了。

Rust一生坎坷,團隊幾度解散,如今卻正衝擊C/C++的統治地位

官方關於Mozilla裁員對Rust的影響說明

5巨頭聯手救Rust

還好諸多企業、個人一直以來都關注著Rust,這次風波之後,他們馬上將2019年創立Rust基金會的想法重新撿了起來。基金會對於Rust的穩定具有決定性的作用,也是為Rust未來發展奠定基礎。

Rust一生坎坷,團隊幾度解散,如今卻正衝擊C/C++的統治地位

Rust基金會成立

2021年2月8日,ASW、華為、谷歌、微軟和Mozilla聯手成立Rust基金會,Rust又一次度過危機。合法性和穩定性獲得確定後,Rust的未來也愈發明朗,越來越多的大型專案開始引入或者直接使用Rust。

Rust向C/C++發起衝擊

隨著Rust基金會的建立,它已經向C/C++發起了衝擊:

2021年4月6日,谷歌宣佈在Android開源專案中支援Rust作為C/C++的替代品;

微軟和亞馬遜都發布了他們新的官方支援的Rust庫,用於與Windows和AWS進行互動;

cURL 專案釋出了新版本,這些版本為使用 Rust 庫處理 HTTP/s 和 TLS 通訊提供了選擇加入支援;

Tokio(用Rust編寫的非同步執行時)釋出了其1。0版本。

加上文章開始谷歌新發布的KataOS,我們似乎能在任何可以看到C/C++的地方看到Rust了。

Rust社群同樣是一片欣欣向榮,在2021年的調查中顯示,96%的受訪者是因為可以“構建相對正確且無bug的軟體”而選擇Rust;92%的受訪者是因為效能選擇它;89%的受訪者是因為它的安全。

Rust一生坎坷,團隊幾度解散,如今卻正衝擊C/C++的統治地位

官方關於為“為什麼使用Rust”的調查

在系統程式設計上良好表現使得Rust更受歡迎的同時,它同樣面臨一個問題:過於複雜,且不容易學——這同樣是許多受訪者的一致觀點,並認為改善文件和培訓是必需的。

現在這個問題現在有了很好的解決,經典的“In Action”系列迎來了Rust版本,學習Rust不再是望而生畏的事情了。

Rust一生坎坷,團隊幾度解散,如今卻正衝擊C/C++的統治地位

開啟Rust實戰!

04

學習Rust的正確姿勢

《Rust實戰》

作者

蒂姆·麥克納馬拉

(Tim McNamara)在2015年前就注意到了這個特殊的語言,在1。0版本釋出之後立馬開始研究並愛上Rust。他很快成為Rust的忠實擁護者,非常認可它的安全性和高效能。在惠靈頓,他組織了Rust Wellington社群,幫助本地Rust愛好者更好地認識和學習Rust。

Rust一生坎坷,團隊幾度解散,如今卻正衝擊C/C++的統治地位

Rust Wellington資訊

作為Rust佈道者,他在線上開展了無數次Rust培訓,並接受Rust官方的邀請向更多的人介紹如何正確、高效地學習Rust。

Rust一生坎坷,團隊幾度解散,如今卻正衝擊C/C++的統治地位

Rust官方邀請蒂姆·麥克納馬拉開設Rust學習課程

如此豐富的Rust使用和教學經驗,讓他知道每個階段的Rust學習者想要和需要做什麼,所以他編寫了這本《Rust實戰》,告訴那些已經接觸過Rust開源資料,但是不知道“接下來該學些什麼”的讀者學習Rust的正確姿勢。

正如其名,本書重點在於使用Rust進行系統程式設計。當然在開始,他會向讀者介紹多個必要的系統程式設計概念和Rust語言的基礎資訊,然後深入探索計算機工作原理,幫助讀者瞭解Rust的所有權系統、Trait、包管理、錯誤處理、條件編譯等概念,並透過源自現實的示例來幫助讀者瞭解Rust中的記憶體模型、檔案操作、多執行緒、網路程式設計等內容。

書中10多個示例都是源自現實專案,不僅容易理解,並且可以直接操作,從理論到動手充分地體驗和理解Rust語法,瞭解Rust的實際運用。

當然,更推薦有一定程式設計經驗的讀者閱讀本書,至少要有程式設計的基本概念。

05

Rust是未來

相比C/C++來說,Rust的確是一個年輕的語言,但是越來越多的科技巨頭和大型專案對Rust的態度,告訴我們學習Rust會是一條好路。

但就像Graydon Hoare說的:我與語言的關係就像一個喜歡各種各樣的積木、樂器或塑膠恐龍的孩子。

語言不是唯一,只有手中喜歡的“玩具”越多,我們玩得才會越開心,在未來也會有更多的選擇。

Rust一生坎坷,團隊幾度解散,如今卻正衝擊C/C++的統治地位

選擇Rust,選擇未來