首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >rust 1.91.0 发布:稳定大量新特性与平台支持升级

rust 1.91.0 发布:稳定大量新特性与平台支持升级

作者头像
福大大架构师每日一题
发布2025-12-19 08:46:44
发布2025-12-19 08:46:44
1760
举报

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 内联汇编。
    • • 稳定 sse4atbm target 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() 变体的参数顺序稳定。
  • • 文档补充关于 CloneEq 的假设说明。
  • std::thread 在设置线程栈大小失败时返回错误,而非直接 panic。

稳定 API 列表

  1. 1. 文件与路径相关
    • Path::file_prefix
    • PathBuf::add_extension / PathBuf::with_added_extension
    • impl PartialEq<str> / impl PartialEq<String> for PathPathBuf
    • Ipv4Addr::from_octetsIpv6Addr::from_octetsIpv6Addr::from_segments
  2. 2. 原子指针相关
    • AtomicPtr::fetch_ptr_add / fetch_ptr_sub
    • AtomicPtr::fetch_byte_add / fetch_byte_sub
    • AtomicPtr::fetch_or / fetch_and / fetch_xor
  3. 3. 整数严格运算
    • {integer}::strict_add / strict_sub / strict_mul / strict_div 等系列
    • • 有符号/无符号混合运算 API
  4. 4. 集合与迭代器
    • BTreeMap::extract_if / BTreeSet::extract_if
    • core::iter::chain
    • core::array::repeat
  5. 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. 6. 可在 const 上下文中使用的既有稳定 API
    • <[T; N]>::each_ref / each_mut
    • OsString::new / PathBuf::new
    • TypeId::of
    • ptr::with_exposed_provenance / ptr::with_exposed_provenance_mut

Cargo 改进

  • 稳定配置项 build.build-dir 用于指定中间构建产物的存储目录,该目录内容布局可能会随版本变化。
  • --targetbuild.target 支持使用 "host-tuple" 字符串自动替换为当前主机三元组。

Rustdoc 更新

  • • 搜索结果中,文档别名排名低于同名非别名项。
  • • 原始指针在类型搜索中可用,且函数签名展示支持原始指针类型。

兼容性变化

  • 语言兼容性
    • • 协程捕获必须保持可释放性。
    • • 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助力您的未来发展。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 语言层面更新
  • 编译器优化
  • 平台支持升级
  • 标准库更新
  • 稳定 API 列表
  • Cargo 改进
  • Rustdoc 更新
  • 兼容性变化
  • 内部改进
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档