公告《Rust 已在 nightly 中切换到自己的 mangling 方案》
这篇文章发布于 2025 年 11 月 20 日,宣布 Rust 编译器(rustc)将在 Nightly 构建版本中默认启用 Rust 自有的 v0 符号修饰(mangling)方案。
核心变更:
- 默认开启 v0:从 2025 年 11 月 21 日的 Nightly 版本开始,所有目标平台默认使用 v0 重整方案,不再使用基于 C++ Itanium ABI 的旧版(legacy)方案。
- 目的:这是迈向未来在稳定版(Stable)中默认启用 v0 的重要一步,目前旨在通过 Nightly 用户群提前发现潜在问题。
为什么需要 v0?旧版的重整方案存在诸多缺陷:
- 信息丢失:由于重用了 C++ 的方案,无法准确表达 Rust 特有的泛型实例化信息。
- 不一致性:随着时间推移,旧方案为了支持 Rust 特性打了很多补丁,变得不一致且容易产生符号冲突。
- 依赖内部实现:旧符号包含依赖编译器内部实现的哈希值,缺乏确定性。
v0 方案(基于 RFC 2603)的优势:
- 无歧义且可逆:能够完整编码泛型参数等信息,使得从符号反推源代码结构成为可能。
- 更好的工具支持:调试器(如 GDB、LLDB)和性能分析工具(如 perf)可以利用这些丰富的信息提供更精确的堆栈跟踪和调试体验(例如,区分
Vec<u32>和Vec<i32>的方法调用)。
潜在影响与兼容性:
- 工具链支持:虽然主流工具(如较新版本的 GDB 和 perf)已经支持 v0,但一些旧工具或小众工具可能无法识别新符号,导致用户看到乱码般的函数名。
- 二进制大小:v0 产生的符号可能比旧版更长,若未剥离符号(strip),可能会导致链接时间和二进制体积轻微增加。
- 如何回退:如果用户遇到问题,可以通过编译参数
-C symbol-mangling-version=legacy切换回旧版方案。
后续计划:
- 编译器团队将根据 Nightly 用户的反馈修复潜在问题。
- 在确保生态系统中的工具(如调试器、性能分析器)有足够广泛的支持后,最终会在稳定版中默认启用 v0。
阅读:https://blog.rust-lang.org/2025/11/20/switching-to-v0-mangling-on-nightly/
公告《crates.io 删除恶意库 evm-units 和 uniswap-ut》
crates.io 团队在收到 Socket 安全研究员报告后,紧急删除了 evm-units 和 uniswap-utils 两个恶意库。
这两个库由用户 ablerust 于 2025 年 4 月发布,总计下载量约 1.4 万次,被发现包含试图窃取加密货币的恶意载荷。
官方已立即禁用了相关用户账号,并确认 crates.io 上没有其他库依赖这两个恶意包。
阅读:https://blog.rust-lang.org/2025/12/03/crates.io-malicious-crates-evm-units-and-uniswap-utils/
语言设计博客:真正的自定义智能指针
作者:Nadrieril(Rust 编译器成员)
核心议题:如何让自定义智能指针(如 Rc、MutexGuard 等)拥有与原生引用(&、&mut)同等的“一等公民”地位。
- 痛点:目前只有原生引用能轻松实现“投影”,即从指向结构体的引用(
&s)直接派生出指向其字段的引用(&s.field)。自定义智能指针很难安全、自然地实现这种从MyPtr<Struct>到MyPtr<Field>的转换。 - 提案:作者建议引入一套新的 Trait(如
Project),允许智能指针定义自己的投影行为。 - 意义:这不仅能让智能指针支持更自然的字段访问语法(
(*x).field),还支持虚拟位置(如 Struct-of-Arrays 内存布局),并为在智能指针上进行模式匹配和更精细的借用检查铺平道路。
阅读:https://nadrieril.github.io/blog/2025/11/11/truly-first-class-custom-smart-pointers.html
Redox OS:11 月进展
取得的重大进展:在图形栈和桌面体验上迈出了里程碑式的一步。
- Wayland 初步支持:Redox 首次实现了 Wayland 协议的移植,成功运行了 Smallvil 合成器和 Smithay 框架,并支持了基于 Wayland 的 GTK 工具包,为构建现代化的图形界面奠定了坚实基础。
- 桌面与浏览器生态:除了 Wayland,开发团队还将经典的 MATE 桌面环境(基于 X11 会话)移植到了系统中,并成功引入了 WebKitGTK 浏览器引擎,这意味着 Redox 距离拥有功能完整的原生网页浏览器更近了一步。
- 硬件驱动突破:在底层驱动方面,创始人 Jeremy Soller 合并了针对 Intel HD 集成显卡的初始模式设置(modesetting)驱动代码,开启了原生硬件加速图形渲染的新篇章。
- 系统优化:此次更新还包含了一系列系统启动修复、构建系统的简化重构以及针对 GitLab 基础设施的安全性增强,显著提升了操作系统的稳定性和开发者的维护体验。
阅读:https://www.redox-os.org/news/this-month-251130/
嵌入式 Rust 半月刊 #60
阅读:https://www.theembeddedrustacean.com/p/the-embedded-rustacean-issue-60
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论