Rust 1.36 編程語言發布

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

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

主要的 創新:

  • 性狀穩定 未來,它表示在使用 async / .await 區塊時其評估可能尚未完成的值。 使用Future定義的非同步值使得可以在執行緒中繼續執行有用的工作,同時等待某個值的計算完成;
  • 文庫穩定 分配,它提供了用於管理記憶體分配值的智慧指標和集合。 std 中的記憶體分配現在使用類型 維克,它們是從 alloc 重新導出的。 單獨使用 alloc 在不與 std 綁定的應用程式(“#![no_std]”)中以及在設計用於不帶 std 的類似程式的庫中是有意義的;
  • 繞過對值正確初始化的檢查 建議 中間型 也許單位,它可以代替 mem::uninitialized 函數作為更安全的替代方案。 mem::uninitialized 函數可以方便地快速建立數組,但它會誤導編譯器,因為它看起來已經初始化,但實際上該值仍未初始化。 MaybeUninit 允許您明確地向編譯器指示該值未初始化,以考慮與此相關的可能的未定義行為,並透過「maybe_t:」和逐步初始化來組織程式中的檢查,標記其完成使用「.assume_init ()”調用。 隨著 MaybeUninit 的出現,mem::uninitialized 函數已被棄用,不建議使用;
  • NLL(非詞法生命週期)技術擴展了記錄借用變數生命週期的系統,已在 Rust 2015 語言中穩定下來(最初,NLL 僅受 Rust 2018 支援)。 NLL 不是在詞法層級提交生命週期,而是在執行流程圖中的指標集層級提交生命週期。 這種方法可讓您提高檢查變數借用(借用檢查器)的質量,並允許執行某些類型的正確程式碼,而使用這些程式碼之前會導致錯誤。 新的行為也使調試變得更加容易;
  • 包括關聯數組的新實現 哈希圖,基於結構的應用 瑞士表 (自動加載 hashbrown::HashMap,除非另有明確說明,例如 std::HashMap,它是基於 SipHash 1-3)。 軟體介面保持不變,開發人員注意到的差異歸結為效能的提高和記憶體消耗的減少;
  • 在包管理器中的貨物 添加 「--offline」選項,無需存取網路即可運行,安裝依賴時僅使用本機系統快取的套件。 如果依賴項不在本機快取中,則會拋出錯誤。 要在下線前將依賴項預先載入到本機快取中,可以使用「cargo fetch」指令;
  • 實作了呼叫巨集「dbg!」的功能指出幾個論點;
  • 「const」屬性決定了在任何上下文中使用而不是常數的可能性,用於方法
    佈局::from_size_align_unchecked,
    內存::needs_drop,
    NonNull::懸空和
    非空::強制轉換;

  • 新的部分 API 已轉移到穩定類別,包括穩定的方法
    任務::喚醒器,任務::民意調查,
    VecDeque::rotate_left,VecDeque::rotate_right,
    讀::read_vectored、寫::write_vectored、
    迭代器::複製,
    BorrowMut(用於字串)和 str::as_mut_ptr。

來源: opennet.ru

添加評論