Rust 1.40 編程語言發布

發表 系統程式語言發布 銹1.40,由 Mozilla 專案創建。 該語言專注於記憶體安全,提供自動記憶體管理,並提供在不使用垃圾收集器和 運行.

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

主要的 創新:

  • 新增了使用屬性“標記結構(struct)和枚舉(帶有 Variant 區塊的枚舉)的功能”#[非詳盡的]“, 哪個 它允許 將來,向聲明的結構和枚舉添加新的欄位和選項。例如,具有公開聲明欄位的結構的模組開發人員可以使用「#[non_exhaustive]」來標記將來可能新增欄位的結構。到目前為止,在這種情況下,開發人員被迫在私有聲明欄位和綁定到不可變欄位清單之間做出選擇。新屬性消除了此限制,並允許您將來添加新字段,而無需擔心破壞先前編譯的外部程式碼的風險。在crate包中,當匹配“match”部分中的選項時,需要明確定義掩碼“_ => {...}”,覆蓋未來可能的字段,否則在添加新字段時會顯示錯誤。
  • 添加 在型別上下文中呼叫過程巨集 mac!() 的能力。例如,如果「expand_to_type」是一個過程宏,您現在可以編寫「type Foo = Expand_to_type!(bar);」。
  • 在「extern { ... }」區塊中 添加 使用過程宏和屬性宏的能力,包括「bang!()」宏,例如:

    宏規則! make_item { ($name:ident) => { fn $name(); } } }

    外部{
    make_item!(阿爾法);
    make_item!(測試版);
    }

    外部“C”{
    #[我的身分宏] fn foo();
    }

  • 在巨集中 實施的 能夠產生“macro_rules!”元素。產生“macro_rules!”可以在類似函數的巨集(“mac!()”)和屬性形式的巨集(“#[mac]”)中使用。
  • 在 $m:meta 映射元素中 添加 支援任意令牌枚舉值(“[TOKEN_STREAM]”、“{TOKEN_STREAM}”和“(TOKEN_STREAM)”),例如:

    宏規則! Accept_meta { ($m:meta) => {} }
    Accept_meta!( 我的::路徑 );
    Accept_meta!( my::path = "lit" );
    Accept_meta!( 我的::路徑 ( a b c ) );
    Accept_meta!( my::path [ a b c ] );
    Accept_meta!( my::path { a b c } );

  • 在 Rust 2015 模式中,對於使用 NLL(非詞法生命週期)技術檢查變數借用(借用檢查器)時發現的問題啟用錯誤輸出。先前,在 Rust 2018 模式下執行時,警告會替換為錯誤。
    將變更擴展到 Rust 2015 模式後,開發人員終於能夠 擺脫 來自舊的借閱檢查器。

    讓我們回想一下,基於考慮借用變數生命週期的新機制的驗證系統可以識別舊驗證程式碼未註意到的一些問題。由於此類檢查的錯誤輸出可能會影響與先前工作的程式碼的兼容性,因此最初發出警告而不是錯誤。

  • 「const」屬性決定了在任何上下文中使用它而不是常數的可能性,用於 is_power_of_two 函數(對於無符號整數)。
  • API 的新部分已移至穩定類別,包括 todo!() 巨集和 slice::repeat、mem::take、BTreeMap::get_key_value、HashMap::get_key_value 方法已穩定。
    選項::as_deref、選項::as_deref_mut、選項::展平、UdpSocket::peer_addr、{f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne_bytes, {f32 , f64}::from_be_bytes、{f32,f64}::from_le_bytes 和 {f32,f64}::from_ne_bytes。

  • 在包管理器中的貨物
    實施的 在磁碟上快取編譯器警告。在「貨物元資料」指令中新增了「貨物元資料」選項--過濾平台" 僅顯示依賴項解析列中綁定到指定目標平台的套件。新增了 http.ssl-version 設定選項來定義有效的 TLS 版本。
    新增了發布該部分的功能“開發依賴”而不指定“版本”鍵。

  • rustc 編譯器為目標平台thumbv7neon-unknown-linux-musleabihf、aarch64-unknown-none-softfloat、mips64-unknown-linux-muslabi64 和 mips64el-unknown-linux-muslabi64 提供第三級支援。第三級涉及基本支持,但沒有自動化測試和官方版本的發布。

來源: opennet.ru

添加評論