![]()
![]()
![]()
2026年1月22日,Rust 官方正式發布Rust 1.93.0。本次更新帶來了語言層面的多項穩定特性、編譯器優化、平臺支持拓展、標準庫改進以及 Cargo 和 Rustdoc 的實用增強。這一版本在性能、安全性和系統兼容性方面都有顯著提升。以下為詳細版本更新內容解析。
一、語言特性更新
Rust 1.93.0 對語言層面進行了多項穩定化與行為修正:
? 穩定s390x向量相關目標特性以及is_s390x_feature_detected!宏。
? 支持系統 ABI 下的C 風格可變參數函數聲明穩定化。
? 當使用某些關鍵字作為cfg 條件時,編譯器會明確報錯。
?asm_cfg特性正式穩定。
? 在常量求值(const-evaluation)期間支持按字節復制指針。
?LUB 強制轉換(Least Upper Bound coercions)現在能夠正確處理函數項類型及安全性不同的函數。
? 允許包含可變引用靜態項的 const 項(非常危險,但并非總是未定義行為)。
? 新增兩個警告默認開啟的 lint:
?const_item_interior_mutations:警告對具有內部可變性的 const 項進行變更操作。
?function_casts_as_integer:警告將函數指針強制轉為整數類型的操作。
? 編譯器穩定化了-Cjump-tables=bool參數(之前為 -Zno-jump-tables)。
該項影響函數跳轉表生成方式,助力優化調度與體積。
? 新增riscv64a23-unknown-linux-gnu平臺,晉升為Tier 2(不包含宿主工具)。
關于 Tier 分級的更多信息可參考 Rust 平臺支持頁面。
本次標準庫在安全與性能之間進行了平衡調整,核心變化如下:
? 停止在內部對
Copytrait 使用特化(specialization),因為在依賴生命周期的Copy實現中會導致不安全行為。這可能造成性能回退,部分標準庫 API 會調用Clone::clone而非位復制。? 允許全局分配器(global allocator)使用線程局部存儲以及
std::thread::current()。? 修復 BTree::append 行為,確保當附加鍵已存在時,不會更新已有鍵。
? 不再要求
T: RefUnwindSafe對應vec::IntoIter : UnwindSafe。
Rust 1.93.0 穩定了一批新 API,進一步增強底層能力與安全控制:
?
<[MaybeUninit ]>::assume_init_drop?
<[MaybeUninit ]>::assume_init_ref?
<[MaybeUninit ]>::assume_init_mut?
<[MaybeUninit ]>::write_copy_of_slice?
<[MaybeUninit ]>::write_clone_of_slice?
String::into_raw_parts?
Vec::into_raw_parts?
::unchecked_neg?
::unchecked_shl?
::unchecked_shr?
::unchecked_shl?
::unchecked_shr?
<[T]>::as_array?
<[T]>::as_mut_array?
<*const [T]>::as_array?
<*mut [T]>::as_mut_array?
VecDeque::pop_front_if?
VecDeque::pop_back_if?
Duration::from_nanos_u128?
char::MAX_LEN_UTF8?
char::MAX_LEN_UTF16?
std::fmt::from_fn?
std::fmt::FromFn
這些新增穩定接口提升了內存控制、數值操作及格式化能力。
六、Cargo 更新
本次 Cargo 工具也有不少實用增強:
? 根據編譯 profile,在構建腳本中啟用CARGO_CFG_DEBUG_ASSERTIONS。
? 在cargo tree命令中,支持長形式的--format 變量。
? 新增--workspace參數支持到cargo clean命令。
Rustdoc 文檔生成器的體驗進一步優化:
? 移除
#![doc(document_private_items)]。? 搜索過濾中包括屬性宏及派生宏。
? 搜索過濾中包括extern crate 導入項。
? 增強 crate 級文檔屬性校驗,例如
html_favicon_url、html_logo_url、html_playground_url、issue_tracker_base_url、html_no_source。
如果這些屬性值缺失、異常或類型錯誤,將觸發默認拒絕(deny-by-default)lint ——rustdoc::invalid_doc_attributes。
本次更新還帶來多項兼容性提示及未來預警:
? 新增pin_v2到內置屬性命名空間。
? 捆綁的 musl 更新至1.2.5。
? 在Emscripten環境中,panic=unwind 時的異常 ABI 由 JS 異常改為wasm 異常處理 ABI。鏈接 C/C++ 對象時需傳入
-fwasm-exceptions。
在 nightly Rust 上,可通過-Zwasm-emscripten-eh=false -Zbuild-std獲取舊行為,但未來會移除。? 當在無意義的地方(如 trait 方法或類型)使用
#[test]屬性時,編譯器現將報錯,不再忽略;同時 rustdoc 生成也會出錯。? Cargo 在更多場景下設置CARGO_CFG_DEBUG_ASSERTIONS環境變量,這可能導致依賴static-init 1.0.1–1.0.3的 crate 編譯失敗。
? 在offset_of!宏中,用戶自定義類型將檢查是否結構良好。
? 執行cargo publish時,當
build.build-dir未設置時,不再生成可訪問的.crate文件工件。? lintderef_nullptr從警告默認(warn-by-default)提升為默認拒絕(deny-by-default)。
? 新增未來兼容性警告:
? 針對函數參數中未模式綁定(pattern)的 ... 參數,除 extern 塊之外提醒。
? 針對repr(C)枚舉的 discriminant 值不適配 c_int/c_uint。
? 針對repr(transparent)的行為忽略repr(C)類型警告。
代碼地址:github.com/rust-lang/rust
Rust 1.93.0 是一次穩健且深度的更新版本。從語言細節到標準庫安全修正、再到平臺支持與工具鏈增強,都體現了 Rust 一貫的“安全、并發、性能”核心理念。無論是編譯器優化、Cargo 構建體驗,還是 Rustdoc 文檔一致性,都在此版本迎來全面進步。
Rust 1.93.0 的發布標志著 Rust 在系統級語言領域持續邁進,為開發者提供更強的安全保證和更高效的編譯環境。
結語:
Rust 1.93.0 不僅是一個版本號,更是語言設計成熟度的再一次體現。開發者可立即升級體驗最新穩定特性,享受更強的系統安全與開發效率。
我們相信人工智能為普通人提供了一種“增強工具”,并致力于分享全方位的AI知識。在這里,您可以找到最新的AI科普文章、工具評測、提升效率的秘籍以及行業洞察。 歡迎關注“福大大架構師每日一題”,發消息可獲得面試資料,讓AI助力您的未來發展。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.