Rust 1.66 編程語言發布

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

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

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

主要創新:

  • 在具有整數表示(“#[repr(Int)]”屬性)的枚舉中,允許顯式指示判別式(枚舉中的變體編號),即使枚舉包含字段。 #[repr(u8)] enum Foo { A(u8), # 判別式 0 B(i8), # 判別式 1 C(bool) = 42, # 判別式 42 }
  • 添加了函數 core::hint::black_box ,它只返回接收到的值。 由於編譯器認為這個函數在做一些事情,所以在執行代碼性能測試或檢查生成的機器代碼時,可以使用 black_box 函數來禁用編譯器對循環的優化(這樣編譯器就不會認為代碼未使用並將其刪除)。 例如,在下面的示例中,black_box(v.as_ptr()) 可防止編譯器認為向量 v 未被使用。 使用 std::hint::black_box; fn push_cap(v: &mut Vec) { for i in 0..4 { v.push(i); black_box(v.as_ptr()); } }
  • “cargo”包管理器提供了“remove”命令,它允許您從命令行從 Cargo.toml 清單中刪除依賴項。
  • API 的新部分已移至穩定類別,包括特性的方法和實現已穩定:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed、overflowing_add_signed、saturating_add_signed、wrapping_add_signed}
    • i*::{checked_add_unsigned、overflowing_add_unsigned、saturating_add_unsigned、wrapping_add_unsigned}
    • i*::{checked_sub_unsigned、overflowing_sub_unsigned、saturating_sub_unsigned、wrapping_sub_unsigned}
    • BTreeSet::{第一個、最後一個、pop_first、pop_last}
    • BTreeMap::{first_key_value、last_key_value、first_entry、last_entry、pop_first、pop_last}
    • 在使用 WASI 時為 stdio 鎖類型添加 AsFd 實現。
    • impl TryFrom > 盒子<[T; N]>
    • 核心::提示::黑盒
    • 持續時間::try_from_secs_{f32,f64}
    • 選項::解壓
    • std::os::fd
  • 模板中允許範圍“..X”和“..=X”。
  • 在構建 rustc 編譯器的前端和 LLVM 後端時,使用 LTO(鏈接時間優化)和 BOLT(二進制優化和佈局工具)優化模式來提高生成代碼的性能並減少內存消耗。
  • 實現了對 armv5te-none-eabi 和 thumbv5te-none-eabi 平台的 XNUMX 級支持。 第三層意味著基本支持,但沒有自動化測試、發布官方構建和檢查構建代碼的能力。
  • 添加了對鏈接到 macOS 通用庫的支持。

此外,我們可以注意到 Rust 語言前端編譯器 (gccrs) 包含在 GCC 代碼庫中。 前端包含在 GCC 13 分支中,該分支將於 2023 年 13 月發布。 從 GCC 13 開始,標準 GCC 工具包將能夠用於編譯 Rust 程序,而無需安裝使用 LLVM 開發構建的 rustc 編譯器。 GCC XNUMX 中的 Rust 實現將處於測試狀態,默認情況下不啟用。

來源: opennet.ru

添加評論