網站列表NewsBridge 翻譯後比較閱讀的新聞
回到 iThome 列表

Rust 1.100允許延後採用新套件,Never Type歷經10年正式穩定

iThome字級
開啟原始文章

文章內文

6 段 · 點一下(按一下)單字或選取文字即可翻譯 · 點單字或選取文字即可翻譯

程式語言Rust開發團隊發布Rust 1.100.0,套件管理工具Cargo新增依賴套件發布冷卻期,讓開發者延後採用剛上架的套件版本,降低軟體供應鏈攻擊風險。新版也正式支援歷經10年5次進入穩定階段嘗試未果的Never Type,並開放自訂記憶體配置器的核心介面。

Cargo負責管理Rust專案使用的第三方套件,過去更新依賴套件時,通常會選用符合版本要求的較新版本。新增的冷卻期機制允許開發者設定等待天數,例如設為3天,Cargo便會略過發布未滿3天的版本,改從其他符合條件的版本中選擇。由於惡意套件可能在發布數小時或數天後才被安全工具或社群發現,延後採用可降低開發專案立即取得惡意版本的風險。

該機制須由開發者自行啟用,不會排除已記錄在Cargo.lock鎖定檔中的版本,使用Cargo安裝指令安裝程式時也不適用。Rust團隊提醒,冷卻期只能降低部分供應鏈攻擊風險,無法取代套件更新時的安全檢查。

另一項重要更新是Never Type,在程式碼中以驚嘆號「!」表示,用來表示不會產生值的運算,例如執行無窮迴圈、直接結束程式,或透過return提前離開函式。過去Rust已允許在函式回傳型別中使用「!」,新版則開放在其他需要指定型別的位置使用,例如明確表示某項運算不可能傳回錯誤。

Rust也將原本表示不可能產生值的Infallible型別改為「!」的別名,讓既有程式介面與新寫法相容。不過,新版也調整Rust 2015、2018及2021語言版本的Never Type型別推導規則,當編譯器無法確定應使用哪種型別時,原本會以「()」作為替代,如今改用「!」,少數既有程式可能因此出現編譯錯誤。

Rust 1.100也將自訂記憶體配置器的核心介面納入穩定版,讓開發者能替動態陣列Vec與智慧指標Box指定記憶體配置方式,但還沒擴及所有標準容器。Cargo也新增未使用依賴套件的警告,並調整建置目錄結構,減少不同建置設定使用同一目錄時可能發生的檔案衝突。

逐段譯文對不上時使用

點一下(按一下)單字即翻譯該字,選取文字即立即翻譯該範圍。