Rust 1.55 編程語言發布

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

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

主要創新:

  • Cargo 套件管理器能夠合併建置過程中出現的重複錯誤和警告。 當執行諸如“cargo test”和“cargo check --all-targets”之類的導致使用不同參數構建多個包的命令時,現在會向用戶顯示重複問題發生的摘要,而不是顯示重複構建相同的文件時出現多個相同的警告。 $ Cargo +1.55.0 check —all-targets 檢查 foo v0.1.0 警告:函數從未使用過:'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = 注意:'#[warn(dead_code)]' 預設開啟警告:'foo' (lib) 產生1 個警告警告:'foo' (lib test) 產生1 個警告(1 個重複) 完成的開發[未最佳化+ debuginfo] 目標(s)0.84秒內
  • 標準庫中的浮點解析程式碼已改為使用更快、更準確的 Eisel-Lemire 演算法,該演算法解決了先前觀察到的一些有關舍入和解析具有大量數字的數字的問題。
  • 在模板中指定未閉合範圍的能力已經穩定(“X..”被解釋為以值 X 開頭並以整數類型的最大值結束的範圍):將 x 匹配為 u32 { 0 => println! (“零!”), 1.. => println!(“正數!”), }
  • std::io::ErrorKind 涵蓋的擴展錯誤變體(將錯誤分為 NotFound 和 CouldBlock 等類別)。 以前,不適合現有類別的錯誤屬於 ErrorKind::Other 類別,該類別也用於第三方程式碼中的錯誤。 現在有一個單獨的內部類別 ErrorKind::Uncategorized 用於處理不適合現有類別的錯誤,並且 ErrorKind::Other 類別僅限於標準庫中未發生的錯誤(返回 io::Error 的標準庫函數)不再使用ErrorKind::類別Other)。
  • API 的新部分已移至穩定類別,包括特性的方法和實現已穩定:
    • 綁定::克隆
    • 排水::as_str
    • 進入內部錯誤::進入錯誤
    • IntoInnerError::into_parts
    • MaybeUninit::assume_init_mut
    • MaybeUninit::assume_init_ref
    • 也許Uninit::寫
    • 數組::映射
    • 操作::控制流
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • str::from_utf8_unchecked 方法中使用了「const」屬性,它決定了在任何上下文中使用它而不是常數的可能性。
  • 已為 powerpc64le-unknown-freebsd 平台實現了第三級支援。 第三級涉及基本支持,但沒有自動化測試、發布官方建置或檢查程式碼是否可以建置。

來源: opennet.ru

添加評論