Rust 1.34 編程語言發布

發生 系統程式語言發布 銹1.34,由 Mozilla 專案開發。該語言專注於記憶體安全,提供自動記憶體管理,並提供一種無需使用垃圾收集器或運行時即可實現高任務並行性的方法。

Rust 的自動記憶體管理使開發人員免於指標操作,並防止低階記憶體操作所造成的問題,例如釋放後記憶體存取、空指標取消引用、緩衝區溢位等。 正在開發一個套件管理器來分發庫、確保組裝並管理專案的依賴關係。 貨物,讓您一鍵取得程式所需的庫。 支援儲存庫來託管庫 箱子.

主要的 創新:

  • Cargo 套件管理器新增了工具來處理可與 crates.io 公共註冊表共存的替代套件註冊表。 例如,專有應用程式的開發人員現在可以使用自己的私有註冊表(在Cargo.toml 中列出依賴項時可以使用該註冊表),並為其產品應用類似於crates.io 的版本控制模型,以及將依賴項引用到兩個 crate。io 並儲存到您自己的註冊表中。

    將外部登錄檔新增至 .cargo/config (位於 $HOME 或套件目錄)
    假如 “[registries]”部分,並且要使用外部註冊表,“registry”選項會出現在 Cargo.toml 中每個依賴項的描述中。要連接到其他註冊表,只需將身份驗證令牌放入 ~/.cargo/credentials 檔案中並執行命令
    “cargo login --registry=my-registry”並發布包 -
    「貨物發布-registry=my-registry」;

  • 新增了對使用“?”運算符的完全支援。在測試中 文檔測試,允許您使用文件中的範例程式碼作為測試。以前的操作員
    “?” 只有當存在「fn main()」函數或「#[test]」函數時,才可用於處理測試執行期間的錯誤;

  • 在使用過程巨集定義的自訂屬性中 假如 使用任意標記集的能力(“#[attr($tokens)]”、“#[attr[$tokens]] 和 #[attr{$tokens}]”)。以前,元素只能使用字串文字以樹/遞歸形式指定,例如“#[foo(bar, baz(quux, foo = “bar”))]”,但現在可以使用枚舉 (' #[range( 0. .10)]') 和類似「#[bound(T: MyTrait)]」的結構;
  • 穩定類型(性狀) 嘗試從 и 嘗試,允許進行類型轉換並進行錯誤處理。例如,像 from_be_bytes 這樣的整數類型的方法使用陣列作為輸入,但資料通常是 Slice 類型,並且手動在陣列和切片之間進行轉換是有問題的。透過新特徵,可以透過呼叫 .try_into() 即時執行指定操作,例如「let num = u32::from_be_bytes(slice.try_into()?)」。對於始終成功的轉換(例如,從類型 u8 到 u32),新增了錯誤類型 無過失,允許透明使用
    TryFrom 用於「From」的所有現有實作;

  • 函數已被棄用 CommandExt::before_exec,它允許在運行 exec 之前執行處理程序,該處理程序在 fork() 呼叫後分叉的子進程的上下文中執行。在這種情況下,父進程的某些資源(例如檔案描述符和映射的記憶體區域)可能會重複,這可能會導致未定義的行為和庫的錯誤操作。
    建議使用不安全函數取代before_exec CommandExt::pre_exec.

  • 穩定的有符號和無符號原子整數類型,大小範圍為 8 到 64 位元(例如, 原子U8),以及有符號類型 非零[8|16|32|64|128].
  • API 的新部分已移至穩定類別,包括 Any::type_id、Error::type_id、slice::sort_by_cached_key、str::escape_*、str::split_ascii_whitespace、Instant::checked_[add|sub ] 和SystemTime 方法已穩定::checked_[add|sub]。 iter::from_fn 和 iter::successors 函數已經穩定;
  • 對於所有整數類型,實作了checked_pow、saturating_pow、wrapping_pow和overflowing_pow方法;
  • 新增了透過指定「-C linker-plugin-lto」建置選項在連結階段啟用最佳化的功能。

來源: opennet.ru

添加評論