![]()
2025 年 10 月 31 日,Rust 官方发布了Rust 1.91.0版本,这是一次功能与平台支持双重提升的重要更新。此版本不仅在语言层面引入了多项稳定特性,还对编译器、标准库、Cargo、Rustdoc、平台支持及兼容性规则做了系统性改进,并升级了内部 LLVM 到 v21。
语言层面更新
•模式绑定与资源释放顺序优化
模式绑定将按编写顺序降低绑定,释放顺序基于主绑定的顺序。•C 风格可变参数函数支持
对 sysv64、win64、efiapi、aapcs 等 ABI 稳定了声明可变参数函数的能力,可在extern块中声明,但不可定义。•新增 Lint
•
dangling_pointers_from_locals:警告局部变量产生的悬垂指针。•
integer_to_ptr_transmutes:警告从整数到指针的跨类型转换(默认警告)。•
semicolon_in_expressions_from_macros从警告升级为拒绝。
•汇编特性
• 稳定LoongArch32内联汇编。
• 稳定sse4a和tbmtarget features。
•平台条件宏改进
新增target_env = "macabi"和target_env = "sim",替代原有target_abi。
• 对
never-to-any类型的as转换不再警告,视为不可达代码。
•Tier 2(带主机工具)提升:
•
aarch64-pc-windows-gnullvm•
x86_64-pc-windows-gnullvm
注:暂缺 llvm-tools 与 MSI 安装包,后续版本补充。
•Tier 1提升:
•
aarch64-pc-windows-msvc
• Panic 信息中打印线程 ID。
• 修复
core::panic::Location::file返回类型中过于严格的生命周期约束。• 保证
std::cmp中_by()变体的参数顺序稳定。• 文档补充关于
Clone和Eq的假设说明。•
std::thread在设置线程栈大小失败时返回错误,而非直接 panic。
1.文件与路径相关
•
Path::file_prefix•
PathBuf::add_extension/PathBuf::with_added_extension•
impl PartialEq/impl PartialEqforPath和PathBuf•
Ipv4Addr::from_octets、Ipv6Addr::from_octets、Ipv6Addr::from_segments
2.原子指针相关
•
AtomicPtr::fetch_ptr_add/fetch_ptr_sub•
AtomicPtr::fetch_byte_add/fetch_byte_sub•
AtomicPtr::fetch_or/fetch_and/fetch_xor
3.整数严格运算
•
{integer}::strict_add/strict_sub/strict_mul/strict_div等系列• 有符号/无符号混合运算 API
4.集合与迭代器
•
BTreeMap::extract_if/BTreeSet::extract_if•
core::iter::chain•
core::array::repeat
5.其他稳定 API
•
Duration::from_mins/from_hours•
Cell::as_array_of_cells•
u{N}::carrying_add/borrowing_sub/carrying_mul/carrying_mul_add•
PanicHookInfo::payload_as_str•
str::ceil_char_boundary/floor_char_boundary
6.可在 const 上下文中使用的既有稳定 API
•
<[T; N]>::each_ref/each_mut•
OsString::new/PathBuf::new•
TypeId::of•
ptr::with_exposed_provenance/ptr::with_exposed_provenance_mut
•稳定配置项
build.build-dir
用于指定中间构建产物的存储目录,该目录内容布局可能会随版本变化。•
--target与build.target支持使用"host-tuple"字符串自动替换为当前主机三元组。
• 搜索结果中,文档别名排名低于同名非别名项。
• 原始指针在类型搜索中可用,且函数签名展示支持原始指针类型。
•语言兼容性
• 协程捕获必须保持可释放性。
• Apple 平台链接时总是传递 SDK 根目录。
• 关联类型绑定位置的宽松约束现正确禁止。
• 属性解析更严格,无效属性将报错。
• 多个错误信息在依赖项中同样提升为拒绝。
• 函数
pin!、format_args!、write!、writeln!在 2024 版if let检查中作用域收紧。• 元组索引等位置的无效数字后缀拒绝解析。
•
static关键字的闭包语法无效。•
--cfg与--check-cfg中禁止 Shebang。
•Cargo 兼容性
•
cargo publish在设置了build.build-dir时不再保留.crate压缩包作为最终产物,需使用cargo package。• Cargo 消息颜色匹配 rustc 样式。
• 自定义
build-dir时需注意内部布局变化可能导致工具不兼容。
• Rust 编译器及相关工具链升级到LLVM 21,提升性能与优化能力。
总结:Rust 1.91.0 在语言稳定性、API 丰富性、平台扩展性上都向前迈出了重要一步,同时在兼容性规则上更严格,以确保生态的长期安全性与一致性。建议开发者及时升级并关注新 Lint 对现有代码的影响。
我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的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.