Rust 1.77 編程語言發布

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

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

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

主要創新:

  • 新增了對 C 字串文字 (c"text") 的支持,這些文字以空終止字元儲存在記憶體中,並與類型「CStr」關聯。預計 C 字串支援將簡化在使用 null 終止字串的程式語言中編寫與層互動的程式碼,並允許在編譯階段執行必要的檢查。 const HELLO: &core::ffi::CStr = c"你好,世界!";
  • 在使用表達式「async fn」宣告的非同步執行函數中,允許使用遞歸,即這些函數現在可以呼叫自身。非同步 fn fib(n: u32) -> u32 { 符合 n { 0 | 1 => 1, _ => Box::pin(fib(n-1)).await + Box::pin(fib(n-2)).await } }
  • offset_of! 巨集已經穩定,可讓您確定結構、枚舉、聯合和元組的欄位相對於類型開頭的位元組偏移量。實際上,當您需要在沒有類型實例的情況下在欄位偏移層級上工作時,巨集會很有用。特別是,在開發驅動程式等低階元件時,需要使用 offset_of 功能。使用 std::mem; #[repr(C)] struct FieldStruct { 第一個:u8,第二個:u16,第三個:u8 }assert_eq!(mem::offset_of!(FieldStruct,第一個),0); assert_eq!(mem::offset_of!(FieldStruct, Second), 2); assert_eq!(mem::offset_of!(FieldStruct, 第三), 4);
  • 在 Cargo 套件管理器中,在發布設定檔中,預設啟用從偵錯資料中清除檔案(strip =“debuginfo”),除非在 Cargo 設定檔中明確啟用偵錯模式,即如果參數調試 = 0。
  • 預設啟用“-Zthir-unsafeck=on”選項,為 THIR(類型化高級中間表示)提供不安全檢查。
  • 新增了對 static_mut_refs 的 lint 檢查,以在使用對可變靜態值的參考時顯示警告。
  • 已實現使用“From<&[T;”類型的功能。 N]>”對於類型“Cow<[T]>”。 fn foo(數據: impl Into >) { /* … */ } fn main() { foo(&[“hello”, “world”]); }
  • 編譯器為 x16 系統提供 128 位元組 i128 和 u86 類型的對齊。
  • API 的新部分已移至穩定類別,包括特性的方法和實現已穩定:
    • 數組::each_ref
    • 數組::each_mut
    • 核心::網絡
    • f32::round_ties_even
    • f64::round_ties_even
    • 記憶體::偏移量!
    • 切片::第一個塊
    • 切片::first_chunk_mut
    • 切片::split_first_chunk
    • 切片::split_first_chunk_mut
    • 切片::last_chunk
    • 切片::last_chunk_mut
    • 切片::split_last_chunk
    • 切片::split_last_chunk_mut
    • 切片::chunk_by
    • 切片::chunk_by_mut
    • 綁定::地圖
    • 檔案::建立_新
    • 互斥體::clear_poison
    • RwLock::clear_poison
  • 第三級支援已針對 aarch64-unknown-illumos、hexagon-unknown-none-elf、riscv32imafc-esp-espidf 和 riscv32im-risc0-zkvm-elf 平台實現。第三級涉及基本支持,但沒有自動化測試、發布官方建置或檢查程式碼是否可以建置。

來源: opennet.ru

添加評論