Rust 1.87 發布

為了慶祝 Rust 1.0 程式語言誕生十週年(Rust 專案成立於 2006 年,0.1 版本形成於 2012 年,第一個穩定版本於 2015 年提出),Rust 1.87 已經發布。該語言注重記憶體安全,並提供了實現任務執行高並行性的方法,同時無需使用垃圾收集器和運行時(運行時減少到標準庫的基本初始化和維護)。

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

Rust 在編譯時通過引用檢查、跟踪對象所有權、跟踪對像生命週期(範圍)以及評估代碼執行期間內存訪問的正確性來提供內存安全。 Rust 還提供防止整數溢出的保護,要求在使用前強制初始化變量值,更好地處理標準庫中的錯誤,默認應用不可變引用和變量的概念,提供強靜態類型以最小化邏輯錯誤。

主要創新:

  • 標準庫中新增了對匿名管道的支援。 std::io::pipe() 方法用於建立未命名管道,可與 std::process::Command 結合使用來處理標準輸入和輸出流,以及組合 stdout 和 stderr 流。使用 std::process::Command;使用 std::io::Read;讓(mut recv,send)= std::io::pipe()? ; let mut command = Command::new("path/to/bin") // 將 stdout 和 stderr 合併到一個通道 .stdout(send.try_clone()?) .stderr(send) .spawn()?;讓 mut 輸出 = Vec::new(); recv.read_to_to); (命令.wait()?.success());
  • 允許從安全程式碼呼叫編譯器的大多數 std::arch 內建函數(Intrinsics)。此變更適用於內建的 std::arch 函數,這些函數被標記為不安全,因為它們與特定功能相關(如果該功能已啟用)。例如,如果應用程式使用“#[target_feature(enable = "avx256")]”,則可以從安全碼呼叫_mm32_add_epi2。
  • 從區塊「asm!」彙編程式碼可以跳到具有 Rust 程式碼的區塊,從而簡化了低階程式碼的開發,例如在核心中實現最佳化或組織與硬體的互動。彙編指令「jmp」的跳轉點在巨集「asm!」中指定。使用包含 Rust 程式碼區塊表達式的新運算元「標籤」。不安全 { asm! ( “jmp {}”,標籤{ println!(“從asm跳轉!”); }); }
  • 允許使用 impl Trait 傳回類型在特徵定義中明確指定捕獲的泛型類型和生命週期。特徵 Foo { fn 方法<'a>(&'a self) -> impl Sized;類型 Implicit1<'a>: Sized; fn method_desugared<'a>(&'a self) -> Self::Implicit1<'a>; fn precise<'a>(&'a> &'a) + precise Simpuse> precise Simpuse. ;類型 Implicit2:大小; fn precise_desugared<'a>(&'a self) -> Self::Implicit2; }
  • API 的新部分已移至穩定類別,包括特性的方法和實現已穩定:
    • 向量::extract_if
    • vec::ExtractIf
    • 鍊錶::extract_if
    • linked_list::ExtractIf
    • <[T]>::split_off
    • <[T]>::split_off_mut
    • <[T]>::split_off_first
    • <[T]>::split_off_first_mut
    • <[T]>::split_off_last
    • <[T]>::split_off_last_mut
    • 字串::extend_from_within
    • os_str::顯示
    • OsString::display
    • OsStr::顯示
    • io::pipe
    • io::PipeReader
    • io::PipeWriter
    • impl 來自對於 OwnedHandle
    • impl 來自對於 OwnedHandle
    • impl 來自對於 Stdio
    • impl 來自對於 Stdio
    • impl 來自對於 OwnedFd
    • impl 來自對於 OwnedFd
    • 盒子 >::寫
    • 實現 TryFrom > 對於字串
    • <*const T>::offset_from_unsigned
    • <*const T>::byte_offset_from_unsigned
    • <*mut T>::offset_from_unsigned
    • <*mut T>::byte_offset_from_unsigned
    • NonNull::offset_from_unsigned
    • 非空::byte_offset_from_unsigned
    • ::cast_signed
    • 非零:: ::cast_signed。
    • ::cast_unsigned。
    • 非零:: ::cast_unsigned。
    • ::是多個
    • ::無界_shl
    • ::無界_shr
    • ::無界_shl
    • ::無界_shr
    • ::中點
    • ::from_utf8
    • ::from_utf8_mut
    • ::from_utf8_unchecked
    • ::from_utf8_unchecked_mut
  • “const”符號用在函數中:
    • 核心::str::from_utf8_mut
    • <[T]>::copy_from_slice
    • 套接字位址::set_ip
    • SocketAddr::set_port,
    • SocketAddrV4::set_ip
    • SocketAddrV4::set_port,
    • SocketAddrV6::set_ip
    • SocketAddrV6::set_port
    • SocketAddrV6::set_flowinfo
    • SocketAddrV6::set_scope_id
    • 字元::是_數字
    • char::is_whitespace
    • <N::as_flattened
    • <N::as_flattened_mut
    • 字串::into_bytes
    • 字串::as_str
    • 字串::容量
    • 字串::as_bytes
    • 字串::長度
    • 字串::is_empty
    • 字串::as_mut_str
    • 字串::as_mut_vec
    • Vec::as_ptr
    • 向量::as_slice
    • 向量::容量
    • 向量::長度
    • 向量::is_empty
    • Vec::as_mut_slice
    • Vec::as_mut_ptr
  • Удалён второй уровень поддержки для целевой платформы i586-pc-windows-msvc. Рекомендуется использовать платформу i686-pc-windows-msvc, которая отличается поддержкой инструкций SSE2. Платформа i586-pc-windows-msvc потеряла смысл, так как для Windows 10 необходима поддержка SSE2, а более ранние выпуски Windows в Rust не поддерживаются.

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster