考量到程式語言Rust未來的發展,要在滿足高安全性的前提下,繼續發展更多的程式語言功能,Rust基金會規畫了2023年到2027年4階段發展計畫,而這一系列的工作,從成立型別(Type)系統團隊開始,該團隊為語言和編譯器團隊的子團隊,負責定義和維護Rust的類型檢查器、特徵求解器(Trait Solver)和借用檢查器(Borrow Checker)。

Rust官方希望透過建立起型別團隊,加速修復類型系統相關的健全性問題,官方提到,這些問題通常都是編譯器和語言功能的邊緣案例,由專門的測試人員或是白帽駭客發現,雖然一般開發者並不會遭遇到這些問題,但是官方仍想要盡快消除這些邊緣案例。另外,因為編譯器維護者太少,加上語言設計的貢獻者缺乏對語言通盤了解,導致新語言功能發展困難,而透過專注於型別系統的團隊,將有助於緩解這種處境。

具體而言,型別團隊工作會進行那些工作?首先,是針對編譯器rustc所使用的型別工具,包括:寬鬆定義變數指派型別語義和實作方式的型別檢查器,替型別定義特徵的特徵求解器,以及用以證明Rust所有權模型始終成立的借用檢查器。在此同時,他們也需要負責編寫Rust的正式定義、類型檢查器和語義,並且提供不安全程式碼指南。

型別團隊的範疇很大,包含2018年就已經存在的Rust特徵工作組,特徵工作組目的是要創建高效能Rust特徵系統,像是特徵解決函式庫Chalk,而由於功能的延伸,因此特徵工作組的工作也擴及類型檢查器和借用檢查器。另一個相關的則是Polonius工作組,主要設計和實作Polonius借用檢查函式庫,目前也被編入Rust型別團隊。

官方提到,目前Rust團隊正致力編寫Rust規範,而擁有型別系統的正規化(Formalization)定義將有助於此目標,無論之後是否會整合到更通用的規範中,正規化能夠更好地評估潛在新功能和健全性漏洞。

在Rust 1.0發布不久之後,Rust開發團隊便開始朝此目標前進的工作,Chalk特徵求解器便是初期成果,Chalk的核心思想是將Rust特徵系統的語法和概念,轉換成一組邏輯規則,並且可以使用類似Prolog的求解器來求解。當這組邏輯和解決方案,與編譯器本身的特徵求解器達到相同水準,則能夠簡單地替換現有求解器,同時該求解器也可以被用於其他工具。

不過由於Chalk僅是型別系統的一部分,而且編譯器與正規化對求解器的需求不同,因此現在Chalk不再是型別團隊的發展重點,即便Chalk仍然是一個有用的實驗性工具,但是在型別團隊新任務規畫中,他們將重點轉移到模組化特徵求解器,以及稱為a-mir-formality的Rust型別系統正規化。

型別團隊2023年上半年的工作,目標讓開發中的特徵求解器可以進行測試,而a-mir-formality能夠開始使用Rust測試套件進行測試,而在下半年,Rust預計將會以新的特徵求解器,取代部分現存的特徵求解器,官方希望在2027年解決所有型別健全性問題,並且a-mir-formality可以通過Rust測試套件可達99.9%。

熱門新聞

Advertisement