Rust 1.57 編程語言發布

系統程式語言 Rust 1.57 已發布,該語言由 Mozilla 計畫創建,但現在由獨立非營利組織 Rust 基金會贊助開發。 該語言專注於記憶體安全,提供自動記憶體管理,並提供了無需使用垃圾收集器或運行時即可實現高任務並行性的方法(運行時被簡化為標準庫的基本初始化和維護)。

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

主要創新:

  • 「panic!」宏的使用已經穩定。 在編譯期間建立的上下文中,例如“const fn”聲明。 此外,除了使用「恐慌!」之外, const 聲明允許使用「assert!」巨集。 以及其他一些標準庫 API。 穩定性尚未涵蓋整個格式化基礎設施,因此當前形式的“panic!”宏只能與靜態字串(panic!(“...")) 一起使用,或在替換(panic!("{}", a)) 時與單一內插值“&str”一起使用,應僅限於替換“{ }”,沒有格式說明符和其他類型。 未來,巨集在常數上下文中的適用性將會擴大,但穩定的能力已經足以在編譯階段執行斷言檢查: const _: () = assert!(std::mem::size_of:: ()==64); const _: () = 斷言!(std::mem::size_of:: ()==8);
  • Cargo 套件管理員允許使用任意名稱的設定文件,不限於「dev」、「release」、「test」和「bench」。 例如,要僅在產生最終產品元件時在連結階段 (LTO) 啟用最佳化,您可以在 Cargo.toml 中建立「生產」設定檔並向其新增「lto = true」標誌。 但是,在定義您自己的設定檔時,您必須指定現有設定檔以從中繼承預設值。 下面的範例建立了一個「生產」設定文件,透過包含「lto = true」標誌來補充「發布」設定檔。 設定檔本身是透過使用「--profile production」選項來呼叫 Cargo 來啟動的,並且組裝工件將放置在「target/Production」目錄中。 [profile.生產]繼承=「釋放」lto=true
  • Vec、String、HashMap、HashSet 和 VecDeque 類型的 try_reserve 的使用已經穩定,它允許您提前為給定類型的一定數量的元素預留空間,以減少內存分配操作的頻率並避免由於內存不足,運行過程中崩潰。
  • 允許在「m!{ .. }.method()」和「m!{ .. }?」等表達式中用大括號指定巨集。
  • File::read_to_end 和 read_to_string 函數的執行已最佳化。
  • 對 Unicode 規範的支援已更新至版本 14.0。
  • 擴展了標記為“#[must_use]”的函數數量,以便在忽略返回值時發出警告,這有助於識別由於假設函數將更改值而不是返回新值而導致的錯誤。
  • 新增了使用 libgccjit 生成程式碼的實驗性後端。
  • API 的新部分已移至穩定類別,包括特性的方法和實現已穩定:
    • [T; N]::as_mut_slice
    • [T; N]::as_slice
    • 集合::TryReserveError
    • HashMap::try_reserve
    • HashSet::try_reserve
    • 字串::try_reserve
    • 字串::try_reserve_exact
    • Vec::try_reserve
    • Vec::try_reserve_exact
    • VecDeque::try_reserve
    • VecDeque::try_reserve_exact
    • 迭代器::map_while
    • 迭代::MapWhile
    • proc_macro::is_available
    • 命令::獲取程序
    • 命令::get_args
    • 命令::get_envs
    • 命令::get_current_dir
    • 命令參數
    • 命令環境
  • 「const」屬性決定是否可以在任何上下文中使用它來取代常數,該屬性用在函數hint::unreachable_unchecked中。
  • 第三級支援已針對armv6k-nintendo-3ds、armv7-unknown-linux-uclibceabihf、m68k-unknown-linux-gnu、aarch64-kmc-solid_asp3、armv7a-kmc-solid_asp3-eabi和armv7a-kmc-solid平台。 第三級涉及基本支持,但沒有自動化測試、發布官方建置或檢查程式碼是否可以建置。

來源: opennet.ru

添加評論