< 返回版块

苦瓜小仔 发表于 2025-12-06 00:12

Tags:日报

公告《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?旧版的重整方案存在诸多缺陷:

  1. 信息丢失:由于重用了 C++ 的方案,无法准确表达 Rust 特有的泛型实例化信息。
  2. 不一致性:随着时间推移,旧方案为了支持 Rust 特性打了很多补丁,变得不一致且容易产生符号冲突。
  3. 依赖内部实现:旧符号包含依赖编译器内部实现的哈希值,缺乏确定性。

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-unitsuniswap-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 编译器成员)

核心议题:如何让自定义智能指针(如 RcMutexGuard 等)拥有与原生引用(&&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 月进展

取得的重大进展:在图形栈和桌面体验上迈出了里程碑式的一步。

  1. Wayland 初步支持:Redox 首次实现了 Wayland 协议的移植,成功运行了 Smallvil 合成器和 Smithay 框架,并支持了基于 Wayland 的 GTK 工具包,为构建现代化的图形界面奠定了坚实基础。
  2. 桌面与浏览器生态:除了 Wayland,开发团队还将经典的 MATE 桌面环境(基于 X11 会话)移植到了系统中,并成功引入了 WebKitGTK 浏览器引擎,这意味着 Redox 距离拥有功能完整的原生网页浏览器更近了一步。
  3. 硬件驱动突破:在底层驱动方面,创始人 Jeremy Soller 合并了针对 Intel HD 集成显卡的初始模式设置(modesetting)驱动代码,开启了原生硬件加速图形渲染的新篇章。
  4. 系统优化:此次更新还包含了一系列系统启动修复、构建系统的简化重构以及针对 GitLab 基础设施的安全性增强,显著提升了操作系统的稳定性和开发者的维护体验。

阅读:https://www.redox-os.org/news/this-month-251130/

嵌入式 Rust 半月刊 #60

阅读:https://www.theembeddedrustacean.com/p/the-embedded-rustacean-issue-60

--

From 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页