Rust 1.39 編程語言發布

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

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

主要的 創新:

  • 穩定化 基於「async」函數、async move { ... } 區塊和「.await」運算子的新非同步程式設計語法,這使得編寫不會阻塞主命令流的處理程序變得更加容易。 與先前提供的非同步 I/O API 相比,async/.await 構造易於理解、可讀性強,並且允許您使用基於循環、條件語句和異常的熟悉的流控制技術來實現複雜的非同步互動。

    非同步等待語法可讓您建立可以暫停執行、將控制權返回主線程,然後從中斷處恢復執行的函數。 例如,在處理 I/O 時需要這樣的暫停,其中可以在等待下一條資料到達的同時完成其他工作。 使用“async fn”和“async move”定義的函數和區塊傳回一個特徵 未來,它定義了延遲非同步計算表示。 您可以直接使用“.await”運算符發起延遲計算並取得結果。 在呼叫 .await 之前不會執行或預先規劃任何操作,從而允許創建複雜的巢狀構造而無需額外的開銷。

    非同步 fn first_function() -> u32 { .. }
    ...
    讓 future =first_function();
    ...
    讓結果:u32 = future.await;

  • 穩定化 "#![feature(bind_by_move_pattern_guards)]",允許使用綁定型別為 " 的變數隨動“在模板中並在表達式的“if”部分使用這些變數的引用”匹配」。 例如,現在允許以下結構:

    fn 主() {
    讓數組:Box<[u8; 4]> = Box::new([1, 2, 3, 4]);

    匹配數組{
    數量
    if nums.iter().sum::() == 10

    => {
    下降(數字);
    }
    _ => 無法存取!(),
    }
    }

  • 允許指示 屬性 定義函數參數、閉包和函數指標時。 支援透過 lint(允許、警告、拒絕和禁止)控制診斷的條件編譯屬性(cfg、cfg_attr)和輔助巨集呼叫屬性。

    fn 長度(
    #[cfg(windows)] slice: &[u16], // 在 Windows 上使用此參數
    #[cfg(not(windows))] slice: &[u8], // 在其他作業系統中使用
    ) -> 使用 {
    切片.len()
    }

  • 關於使用 NLL(非詞法生命週期)技術檢查變數借用(借用檢查器)時發現的問題的警告, 翻譯的 屬於致命錯誤的範疇。 讓我們回想一下,基於考慮借用變數生命週期的新機制的驗證系統可以識別舊驗證程式碼未註意到的一些問題。 由於此類檢查的錯誤輸出可能會影響與先前工作的程式碼的兼容性,因此最初發出警告而不是錯誤。 在 Rust 2018 模式下運作時,警告現已替換為錯誤。 在下一個版本中,錯誤輸出也將以 Rust 2015 模式實現,這將最終擺脫舊的借用檢查器;
  • 「const」屬性決定了在任何上下文中使用而不是常數的可能性,用於函數 Vec::new、String::new、LinkedList::new、str::len、[T]::len , str: :as_bytes,
    abs、wrapping_abs 和overflowing_abs;

  • 新的部分 API 已轉移到穩定類別,包括穩定的方法
    Pin::into_inner、Instant::checked_duration_since 和 Instant::saturating_duration_since;

  • 貨物包管理器現在能夠使用“.toml”副檔名的設定檔。 新增了對直接從 Cargo 建立標準庫的初步支援。 增加了“--workspace”標誌,取代了有爭議的“--all”標誌。 元資料中新增了一個新欄位“發布”,它允許您透過指定 git 標籤和版本號來發布依賴項。 新增了測試選項「-Ztimings」以產生各個編譯階段的執行時間的 HTML 報告。
  • 在 rustc 編譯器中,診斷訊息包括修剪不適合終端的程式碼尾部。 為目標平台提供第三級支持
    i686-未知-uefi 和 sparc64-未知-openbsd。 第三級涉及基本支持,但沒有自動化測試和官方版本的發布。

來源: opennet.ru

添加評論