本月初,Mozilla 聯合微軟、谷歌、AWS、華爲四大技術廠商創立 Rust 基金會的消息成爲社區熱門話題,也讓 Rust 這門近年興起的編程語言熱度持續升溫。linux
回顧 OSC 近兩年來對 Rust 語言的相關跟蹤報道,咱們整理了 Rust 語言從誕生至今的發展趨勢。大廠不斷押注,民間呼聲高漲,這門以取代 C/C++ 爲目標而誕生的語言,真的要火了嗎?編程
起源
Rust 語言最初只是 Mozilla 員工 Graydon Hoare 在 2006 年建立的一個業餘項目。在 2010 年時,Mozilla 的研發團隊在 Firefox 的開發過程當中遇到了瓶頸。做爲一個大型的自研瀏覽器項目,Firefox 底層實現主要用 C++ 編寫。儘管團隊擁有最佳的實踐經驗和豐富的工程技術人才,可是在編寫瀏覽器內核這樣擁有如此複雜的高性能、並行化和內存安全要求的代碼時,仍然很容易出錯。據統計,Firefox 中有超過 70% 的漏洞與內存安全有關。瀏覽器
正是在這種狀況下,時任 Mozilla 工程師的 Graydon Hoare 毛遂自薦,掏出了本身搗鼓了 4 年的新語言 Rust 。在 JS 之父 Brendan Eich 和 Dave Herman 等人的幫助下,通過團隊的進一步打磨,Rust 語言也從最初的我的項目變成一個日趨成熟的現代化編程語言。2012 年,Mozilla 正式宣佈將推出基於 Rust 語言開發的新瀏覽器引擎 Servo,這是一個之內存安全性和併發性爲首要原則而構建的瀏覽器引擎,同時也是 Rust 語言在一個完整大型項目中的首秀。安全
早期的 Rust 被 Graydon 描述爲「寒武紀思想和狂野實驗的碰撞」。秉持着「大力出奇跡」的思想,Graydon 從 C++、OCaml、Haskell、Erlang、ML、C#、Ruby 等編程語言中吸收了大量的靈感,這些語言中的先進概念前後被加入 Rust 的特性中,這也反映了當時參與打磨 Rust 語言的工程師人數衆多。儘管業內人士對 Mozilla 傾盡全力打造的這門雄心勃勃的新語言頗爲讚揚,但當時的大多數人並不看好 Rust 這門新語言的發展前景。 併發
2015 年,Mozilla 發佈了 Rust 的首個穩定版本 v1.0 ,成爲 Rust 一個重要的里程碑。不久以後,Firefox 於 2016 年首次在生產環境中發佈了第一個由 Rust 編寫的組件。從這時起,Rust 開始在業內引發了普遍的注意,尤爲是其特性中使人印象深入的安全性。 編程語言
做爲推出用來替代 C/C++ 的編程語言,Rust 與 C/C++ 的區別在於其強大的安全保障。除非經過使用「unsafe」關鍵字明確選擇使用,不然 Rust 徹底是內存安全的。在系統編程中,有時開發者必須執行沒法靜態驗證爲安全的操做。Rust 爲開發者提供了將這些操做包裝在安全抽象的工具中,這意味着 Rust 編譯器能夠靜態地強制執行那些曾經屬於代碼註釋或約定的操做。必須顯式地標記內存不安全操做,從而極大地減小了內存安全漏洞出現的頻率。工具
大廠支持
正是得益於注重內存安全的特性,Rust 語言近年來接連得到國內外多家大廠的公開支持。性能
2019 年,微軟宣佈將探索使用 Rust 編程語言做爲 C、C++ 和其餘語言的替代方案,以此來改善應用程序的安全情況,並進行了一些使用 Rust 重寫 Windows 系統組件的實驗。 學習
據悉,自 2004 年以來,微軟安全響應中心(MSRC)已對全部報告過的微軟安全漏洞進行了分類。根據他們提供的數據,全部微軟年度補丁中約有 70% 是針對內存安全漏洞的修復程序。這樣高的百分比是由於 Windows 和大多數其餘微軟產品主要使用 C 和 C++ 編寫,這兩種「內存不安全」(memory-unsafe)的編程語言容許開發人員對內存地址進行細粒度控制,而且能夠執行代碼。管理內存執行的開發人員代碼中的一個漏洞可能致使一系列內存安全錯誤,攻擊者能夠利用這些錯誤帶來危險和侵入性後果,例如遠程代碼執行或權限提高漏洞。測試
▲微軟每一年約有 70% 的漏洞仍然是內存安全問題
因而,探索使用諸如 Rust 之類的內存安全(memory-safe)語言被提上日程。此外,微軟還在去年宣佈正在開發基於 Rust 的安全編程語言 Verona,並由 C# 項目經理 Mads Torgensen 與 Microsoft Research Cambridge 研究軟件工程師 Juliana Franco 進行維護。
同年,另外一家互聯網大廠 AWS 在其開源博客上發文宣佈贊助 Rust 語言,並陸續使用 Rust 編寫了多款產品。其中,最新的一款產品是基於 Linux 的容器操做系統 — Bottlerocket。除了提供贊助外,AWS 還開始大量招聘 Rust 社區貢獻者,支持 Tokio(一個用 Rust 爲各類設備編寫應用程序的運行時)項目的開發。去年年底,AWS 更是將 Rust 編譯器團隊負責人歸入麾下,進一步壯大了其內部的 Rust 團隊。
AWS 方面透露,他們正在創建一個 Rust 和 Tokio 團隊以支持其長期計劃。AWS 的開源執行官 Matt Asay 表示,「鑑於咱們對 Rust 的依賴,咱們須要深厚的內部 Rust 專業知識,就像咱們對 Java 和其餘基礎技術的需求同樣。」
與 Mozilla 合做密切的谷歌也已經開始在那些對內存安全和性能要求極高的設置中使用了 Rust,包括將其用在關鍵的 Chrome 瀏覽器和 Android 系統中。去年,谷歌工程師分析了自 2015 年以來在 Chrome 穩定版分支中修復的 912 個安全錯誤。並發現,在這些被標記爲「高」或「嚴重」等級的全部安全漏洞中,大約 70% 是內存管理和安全問題,這個數據與 Firefox 和微軟統計的數據基本吻合,說明內存安全漏洞已是傳統編程語言開發環境中的一個廣泛性問題。
今年 2 月 8 日,華爲、微軟、AWS、谷歌和 Mozilla 五大公司聯合成立 Rust 基金會,再次將 Rust 推向了一個全新的高度。
社區承認
除了大廠入局之外,來自民間的呼聲也讓 Rust 近年來持續升溫。
2019 年 9 月,Linux 內核維護者 Greg 表示願意接受用 Rust 開發 Linux 驅動,到去年 7 月,Linus Torvalds 迴應稱能夠默認啓用 Rust 支持,這個全球最大的開源社區對新語言 Rust 表現出了極大的包容與積極的接納態度。
在八月底舉辦的 2020 Linux Plumbers 大會上,關於 Linux 內核上游對 Rust 的開放程度成爲了最熱門的討論話題。Rust 語言團隊的聯合負責人 Thomas 和 Gaynor,以及 Linux 內核開發者 Josh Triplett 等人蔘與了這場討論,並向你們展現了截至目前的一些研究成果、想法,還有遇到的問題。
而在學術研究界,科學家們也正在轉向使用 Rust。去年 5 月,位於美國馬薩諸塞州波士頓 Dana-Farber 癌症研究所的生物信息學家 Heng Li 在計算生物學任務中測試了多種語言,其中涉及解析 570 萬個序列記錄的大規模計算任務。測試結果顯示,Rust 力壓 C 語言成爲效率最高的編程語言。「當咱們要使用多個線程編寫高性能程序,同時又須要它很是快速且節省內存,那麼 Rust 是理想的選擇。」 Li 說。
▲Rust 在學術界增加僅次於 Python
加利福尼亞大學戴維斯分校的生物信息學家 Luiz Irber 使用 Rust 來對名爲 Sourmash 的工具進行從新編碼,該工具能夠進行基因組搜索和分類分析,從而簡化研究流程。
自 2015 年以來,Rust 已經連續 5 年得到 StackOverflow 評選的最受歡迎編程語言。
叫好聲中的隱憂
然而,與大廠入局、民間呼聲高漲的狀況相反,Rust 實際的用戶增加數據卻遠沒有想象中的那般美好。
根據最新的 TIOBE 編程語言排行榜數據顯示,Rust 的佔比僅爲 0.49%,排名第 30 位。這個排名甚至還不如 Julia、D 語言,更別提前已躋身榜單前 15 位的 Go 了。
有意思的是,去年在 Rust 得到 StackOverflow 最受歡迎編程語言時,有 97% 的受訪者表示並未使用過 Rust,他們對 Rust 語言的喜好,仍停留在「想學習」的階段。
形成 Rust 語言這般「叫好不叫座」的緣由,很大程度上歸咎於其長期爲人詬病的學習難度問題。在 Rust 官方的一次調查中,當受訪者被問及對於提高 Rust 的採用率有何建議時,許多人提到的一個方案是下降 Rust 的學習難度。再具體到特定主題的難度時,許多人認爲 Rust 的「生命週期(Lifetimes)」難度最高,其次是 Ownership,61.4% 的受訪者表示,生命週期的使用既棘手又很是困難。而這兩個功能又偏偏是 Rust 內存安全特性的核心。
除了普及速度緩慢之外,Rust 團隊自己在 2020 年也遭遇了諸多變故。
去年 4 月,Rust 核心開發團隊成員 Steve Klabnik 在博客中透露 Rust 文檔團隊自從 2018 年 8 月以來就再也沒有舉行過文檔小組會議,目前也僅剩他一人還在堅持寫文檔。這對於亟需下降學習曲線難度、優化官方文檔的 Rust 團隊來講可謂是雪上加霜。
而僅僅 4 個月以後,Mozilla 宣佈因爲疫情壓力進行組織調整,裁人約 250 人,其中就包括一些 Rust 項目和 Rust 社區的活躍成員。儘管 Rust 官方解釋稱這些貢獻者是以我的的身份參與社區貢獻,改變僱主並不會對社區成員的身份形成影響,但這些裁人對 Rust 項目自己依然產生了不少不肯定性和混亂,甚至有網友猜想 Mozilla 或將放棄 Rust 這顆冉冉升起的編程語言新星。
將來可期
經歷了「動盪」的 2020,現在 Mozilla 聯合四大廠商創立 Rust 基金會,讓 Rust 的發展重回正軌,同時也終於打消了外界的種種猜疑。
對於 Rust 社區來講,大廠的參與可以讓項目的研發和推廣免去資金之憂,並擁有更大的市場潛力;另外一方面,在多方參與的基金會管理模式下,也能確保 Rust 不會過度依賴任何一個贊助商,在開放治理的模式下維持開源社區的活力。
不管如何,更高的市場滲透率、更穩定的庫、更好的平臺支持等,纔是開發者所希冀的。對於用戶來講,生產力纔是工做的重要目標,Rust 究竟能不能火依然取決於它的生態成熟度。
告別動盪的 2020,剛剛成立基金會並趨於穩定的 Rust 在 2021 年還將給開發者帶來什麼呢?(反正 Rust 1.50.0 穩定版是已經出來了。)相信年底的編程語言排行榜會給咱們答案。