Rust 1.65 編程語言發布

Rust 1.65 通用編程語言的發布已經發布,該語言由 Mozilla 項目創建,但現在由獨立的非營利組織 Rust 基金會贊助開發。 該語言專注於內存安全,並提供實現高作業並行性的方法,同時避免使用垃圾收集器和運行時(運行時減少為標準庫的基本初始化和維護)。

Rust 的內存處理方法使開發人員在操作指針時避免錯誤,並防止由於低級內存處理而出現的問題,例如在內存區域被釋放後訪問它、取消引用空指針、緩衝區溢出等。 為了分發庫、提供構建和管理依賴項,該項目開發了 Cargo 包管理器。 crates.io 存儲庫支持託管庫。

Rust 在編譯時通過引用檢查、跟踪對象所有權、跟踪對像生命週期(範圍)以及評估代碼執行期間內存訪問的正確性來提供內存安全。 Rust 還提供防止整數溢出的保護,要求在使用前強制初始化變量值,更好地處理標準庫中的錯誤,默認應用不可變引用和變量的概念,提供強靜態類型以最小化邏輯錯誤。

主要創新:

  • 添加了對通用關聯類型 (GAT) 的支持,這使得創建與另一個類型關聯的類型別名成為可能,並允許類型構造函數與特徵關聯。 trait Foo { 類型 Bar<'x>; }
  • 實現了“let ... else”表達式,允許您直接在“let”表達式內部檢查模式匹配條件,如果模式不匹配則執行任意代碼。 let Ok(count) = u64::from_str(count_str) else { panic!("無法解析整數:'{count_str}'"); };
  • 允許使用 break 語句提前退出命名塊,使用塊名(標籤)來確定要終止的塊。 let result = 'block: { do_thing(); 如果 condition_not_met() { break 'block 1; } do_next_thing(); 如果 condition_not_met() { break 'block 2; } do_last_thing(); 3};
  • 對於 Linux,增加了單獨保存調試信息的功能(split-debuginfo),之前僅適用於 macOS 平台。 指定“-Csplit-debuginfo=unpacked”選項會將調試信息數據以 DWARF 格式保存到幾個單獨的目標文件中,擴展名為“.dwo”。 指定“-Csplit-debuginfo=packed”將創建一個“.dwp”格式的包,其中包括項目的所有調試信息數據。 要將 debuginfo 直接集成到 ELF 對象的 .debug_* 部分,您可以使用“-Csplit-debuginfo=off”選項。
  • API 的新部分已移至穩定類別,包括特性的方法和實現已穩定:
    • std::回溯::回溯
    • 綁定::as_ref
    • std::io::read_to_string
    • <*常量 T>::cast_mut
    • <*mut T>::cast_const
  • “const”屬性決定了在任何上下文中使用它而不是常量的可能性,用於函數 <*const T&>::offset_from 和 <*mut T>::offset_from
  • 作為將 LSP(語言服務器協議)協議的實施轉移到 rust-analyzer 的最後階段的一部分,Rust 語言服務器(RLS)的過時實施已被存根服務器取代,該存根服務器發出建議切換到使用 rust 的警告-分析儀。
  • 編譯時,啟用 MIR 中間代碼的內聯部署支持,可將典型 crate 包的編譯速度提高 3-10%。
  • 為了加快計劃的構建,Cargo 包管理器提供了對隊列中等待的作業的排序。

此外,可以注意到有關在沃爾沃使用 Rust 語言開發汽車信息系統組件的採訪。 沒有計劃用 Rust 重寫現有的和經過測試的代碼,但對於新代碼,Rust 是以較低成本提高質量的首選選項之一。 汽車協會 AUTOSAR(汽車開放系統架構)和 SAE(汽車工程師協會)也創建了與 Rust 相關的工作組。

此外,Google 工程副總裁 David Kleidermacher 談到了 Android 平台中用於管理加密密鑰的代碼的 Rust 翻譯,以及 Rust 在 DNS over HTTPS 協議實現中的使用,在堆棧中UWB-芯片(Ultra-Wideband)和在虛擬化框架(Android Virtualization Framework)中與Tensor G2芯片相關聯。 對於 Android,藍牙和 Wi-Fi 的新堆棧也在開發中,並用 Rust 重寫。 總體策略是逐步提高安全性,首先將最不安全和最重要的軟件組件轉移到 Rust,然後擴展到與它們關聯的其他子系統。 去年,Rust 被列入允許開發 Android 平台的語言列表。

來源: opennet.ru

添加評論