該新聞稿已發布 銹1.96.0 — Rust 程式語言的最新穩定版本。該更新已發布。 28的五月2026年它可以使用標準的 rustup update stable 指令來安裝。主要變化包括 core::range 中的新範圍類型、模式匹配巨集的穩定性、WebAssembly 建置行為的最佳化,以及 Cargo 中兩個漏洞的修復。
主要變化
新的範圍類型 core::range::Range*。
在標準函式庫中新增了穩定的範圍類型:`core::range::Range`、`RangeFrom`、`RangeInclusive` 及其關聯的迭代器。與 `core::ops` 中的舊型別不同,新的範圍類型不會直接實作 `Iterator` 接口,而是透過 `IntoIterator` 函數轉換為迭代器。這使得這些範圍類型可以複製,例如,在將範圍儲存為結構體欄位時非常方便。目前,類似 `0..1` 的語法仍然會建立舊的範圍類型,但計劃在未來的語言版本中將其遷移到新類型。新增了 assert_matches! 和 debug_assert_matches!。
新增的巨集可讓您檢查某個值是否與給定的模式相符。這與 `assert!(matches!(…))` 的概念類似,但如果出現錯誤,則會列印該值的調試表示形式,從而簡化診斷。為了避免與常用的第三方函式庫衝突,這些巨集並未加入到 Prelude 中,因此必須從 core 或 std 中明確匯入。更改了 WebAssembly 目標的行為。
Rust 不再將 `--allow-undefined` 參數傳遞給 WebAssembly 建置的連結器。未定義的符號現在會在連結過程中被視為錯誤,而不是自動轉換為從 `env` 模組匯入。這應該能更早地捕獲建置錯誤和無效的符號名稱。如果需要,可以使用 `RUSTFLAGS=-Clink-arg=--allow-undefined` 或使用 `#[link(wasm_import_module = "env")]` 明確指定導入的 wasm 模組來恢復舊的行為。貨物已進行安全修復。
語言的變化。
本次發佈內容包括: 一些小的修復和增強:允許將巨集的 expr 元變數傳遞給 cfg,修正了元組表達式中永遠不會進行的類型轉換,修復了函數參數類型推斷提示不正確的罕見情況,添加了對內聯彙編中 s390x 向量暫存器的支持,並重新允許使用 ManuallyDrop 量作為模板來修復 Rust 1.94.0.ust 中引入常的問題。編譯器和平台的變化。
為 LinuxLoongArch 目標已啟用連結鬆弛支援-這是一種連結優化,可簡化程式碼部署後的一些轉換和呼叫。對於 riscv64gc-unknown-fuchsia,基本配置已更新為支援向量擴充的 RVA22 設定檔。標準庫更新。
新增了遍歷非零整數範圍的支援。修正了 SGX 中透過 ToSocketAddr 函數延遲處理主機位址的問題,並在文件和內部約定中明確了「可讀/可寫入」記憶體的定義:通用定義中已移除空指針,並且現在針對特定方法單獨指定了異常情況。穩定的API。
已穩定化的介麵包括 assert_matches!、debug_assert_matches! 以及 From 的實作。適用於 AssertUnwindSafe ,LazyCell和 LazyLock以及來自 core::range 的新範圍類型和迭代器,包括 Range、RangeFrom、RangeToInclusive 及其迭代器。貨物:依賴項和文件的變更。
現在依賴項可以同時指定 Git 倉庫和備用鏡像倉庫:本地將使用 Git 版本,發佈時將使用鏡像倉庫版本,類似於 crates.io 的行為。此外,Cargo 配置中也新增了對 target.'cfg(..)'.rustdocflags 的支援。Rustdoc 現在能更準確地處理文件了。
已棄用的 API 註解現在會以常規文件的形式呈現,不再像以前那樣透過空格進行特殊處理:pre-wrap。此外,rustdoc 不再檢查 impl 元素中 missing_doc_code_examples 的缺失值,並且方法和相關函數現在在文件側邊欄中分開顯示。可能存在的不相容性。
該版本包含一些更改,這些更改可能會出現在非標準程式碼中:某些 #[repr(Int)] 枚舉的佈局在極端情況下得到了修復,並且 Pin 中的一些無用的 unsize 轉換已被禁用。 WebAssembly 建置現在會因未定義的符號而崩潰,意外穩定的 #![reexport_test_harness_main] 屬性已再次被功能門控,-Csoft-float 選項已移除,最低外部 LLVM 版本已增加到 21。對於 AVR,c_double 類型已變更為 f32,因為在這些目標平台上,C 雙精確度浮點數預設是 32 位元的。
來源: linux.org.ru
