在 Rust 語言不斷髮展的過程中,自然而然需要為這個語言的下一步發展方向制定計劃。因此 Rust 語言設計團隊(Lang Team)近日在中公佈了 Rust 語言 2024 年的更新路線圖,提供了對 Rust 未來的展望。需要注意的是,目前距離 2024 年為時尚早,因此 Rust 的路線圖有可能隨著時間的推移,在此基礎上發生變化。
Rust 1.0 是在 2015 年釋出的。從那時起,Rust 從一個用於小眾語言成長為幾乎所有主要科技公司都在使用的主流程式語言。Rust 2024 也將是繼 Rust 2015、Rust 2018 和 Rust 2021 之後的第四版程式語言路線圖。根據目前的計劃,三年的週期將會保留,版本劃分方面應該也沒有什麼變化。
從 Rust 團隊的角度來看,2024 路線圖的重點主要有三樣:更低的學習曲線、給予 Rust 庫更好的連線生態,以及進一步發展壯大 Rust 語言。
降低學習門檻
Rust 語言的學習門檻之高是屢屢被人詬病的一個問題。在 2 月份釋出的 2021 年 Rust Survey 中,在近萬名受訪者中,有 83% 的人認為在生產環境中採用 Rust 十分具有挑戰性。在過去多年的調查中,學習曲線太陡峭的問題一直存在,這也是很多人不使用 Rust 的主要原因之一。
開發者不僅要理解一般的邏輯,而且要把具體的實現精確到很多細枝末節之處。在 Rust 官方部落格中,他們參照了所有權系統和借用檢查器(borrow checker)的概念來舉例 —— "即使你已經學會了 Rust 的借用檢查器是如何工作的,仍然有許多小細節需要你去弄明白,以便 Rust 程式能夠編譯。"
因此,在 Rust 2024 年的路線圖中,他們的一個目標就是簡化程式,使開發者只需要處理其領域的固有複雜性,而不再需要處理 Rust 的意外複雜性。Rust 團隊希望開發者在使用 Rust 的過程中應該 "不僅僅是可能,還需要不復雜並且使用起來非常愉悅",特別是對於嵌入式開發和非同步程式領域。
為了實現這一願景,團隊有四個具體目標:
- 更精確的分析:通過改進借用檢查器、型別推理等,使編譯器能夠更好地識別程式碼是否正確。識別並消除 "boilerplate" 模式,如到處複製貼上同一組
where
。 - 開發人員應該能夠更輕鬆、更直接地表達程式碼的意圖。一方面可以通過語法糖的形式(如
let-else
),另一方面可能意味著擴充套件型別系統。 - 改進非同步支援:將 async-await 支援擴充套件到目前的 "MVP" 之外,包括 traits 中的 async fns、async drop 等功能。
- 讓
dyn Trait
更有用處。拓寬可用於dyn
的特性集,使使用dyn
的工作更接近於使用泛型的工作。
庫和核心語言
Rust 結合了所有權和借用、低階系統控制等強大的可延伸性機制,使其成為編寫庫的絕佳語言。而且多虧了 Cargo,開發者在程式中僅需幾行程式碼就能使用一個庫。儘管如此,還有很多事情是庫的作者不能做的,或者說不能輕易做的 —— 例如:他們不能控制你看到的錯誤資訊,或者部署一個 "不穩定" 的功能。對於 Rust 2024,Lang Team 希望建立一些功能,使庫的作者能夠更好地服務於他們的使用者,無論是通過幫助管理功能的生命週期,還是通過擴大庫的功能。
Lang Team 還希望能夠在生態中進行更多探索的變化,並且能夠將程式碼從生態穩定地遷移到標準庫中;除此之外,他們還將增強 Rust 的互操作性,讓庫作者可以隨心所欲地編寫可在許多環境中移植的程式碼,或針對某一環境的程式碼。
為了更有效地進一步發展語言,Lang Team 希望開發者能夠很容易地識別出團隊正在積極開展哪些工作,以及這些工作取得了多大進展。他們希望每一個跟蹤問題都能清楚地識別出需要哪些步驟來推動該特定功能的完成,並確保這些步驟對潛在的貢獻者來說是足夠清楚的。
最後
隨著 2023 年的到來,Lang Team 將重新審視這些問題,會回顧已經取得了多少進展,以及是否需要調整這些內容。
對於一門程式語言而言,開發者最希望看到的還是版本更新應該儘可能少的引入破壞性變化。這樣的變化一方面可能會影響程式之間的相容性,另一方面也違背了當初設立的降低學習曲線的目標。路線圖的更多詳情可檢視 Rust 。