Rust 1.68 編程語言發布

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

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

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

主要創新:

  • Cargo 套件管理器和 crates.io 儲存庫穩定了對 Sparse 協定的支持,該協定定義了一種使用索引的新方法,該索引反映了儲存庫中現有所有套件的可用版本。 新協定可讓您大幅提高使用 crates.io 的速度,並解決儲存庫中套件數量進一步增長的擴充問題。

    為了減少下載完整索引造成的延遲,Sparse 不使用 Git 存取索引,而是透過 HTTPS 直接下載必要的索引數據,涵蓋特定項目的依賴項。 新服務index.crates.io用於提供索引資料。 預設情況下,新協定計畫在 Rust 1.70 分支中使用,在此之前,要啟用它,可以設定環境變數「CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse」或將「protocol =」參數新增至「[registries. crates-io]」 . cargo/config.toml 檔案「稀疏」的部分。

  • 添加了“pin!”宏,它允許您從表達式“T”創建一個Pin<&mut T> 結構,並對其狀態進行本地固定(與Box::pin 不同,它不會在堆上分配內存,而是綁定在堆疊層級)。
  • 已提出預設記憶體分配錯誤處理程序,在使用標準 alloc 套件時使用。 僅啟用 alloc(不含 std)的應用程式現在將在記憶體分配失敗時呼叫「panic!」處理程序,可以選擇使用「#[panic_handler]」攔截該處理程序。 使用std庫的程式將繼續向stderr列印錯誤訊息並崩潰。
  • API 的新部分已移至穩定類別,包括特性的方法和實現已穩定:
    • {核心,std}::pin::pin!
    • 實現自對於 {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • 為 PathBuf 實作 DerefMut
  • VecDeque::new 函數中使用了「const」屬性,它決定了在任何上下文中使用它而不是常數的可能性。
  • 要在 Android 平台上工作,現在至少需要 NDK r25 (API 19),即支援的最低 Android 版本已提升至 4.4 (KitKat)。
  • 已為 Sony PlayStation Vita 平台 (armv7-sony-vita-newlibeabihf) 實作第三級支援。 第三級涉及基本支持,但沒有自動化測試、發布官方建置或檢查程式碼是否可以建置。

來源: opennet.ru

添加評論