【Rust日报】2026-09-14 Allocator 稳定化进入最终意见征询期

💡 原文中文,约2200字,阅读约需6分钟。
📝

内容提要

Rust 动态四则:Allocator 稳定化进入最终意见征询,拟稳定最小 Allocator trait 及 Box/Vec 的 new_in;2026 调试调查显示约 46% 使用调试器,痛点集中在值展示与 async 步进;有人逆向电动滑板车固件并用 Rust 重写显示单元;mbrotli 以纯安全 Rust 实现 Brotli 编解码,解码较 C 快约 3 倍。

🔎

延伸解读

Allocator 稳定化:最小接口先行,兼容性优先

本次稳定化聚焦最小 Allocator trait 及 Box/Vec 的 new_in,并有意限制自定义分配器实例化路径。lang 侧明确 Box<T, A> 在 A 上不视为 fundamental,且当 A ≠ Global 时 Box 不带 noalias 及语言级唯一性要求,这为依赖释放时回推分配器状态的实现留出空间。libs 与生态讨论认为设计可在保持向后兼容前提下扩展,意味着后续可能逐步放开更多容器与场景。

调试调查:使用率与痛点揭示改进方向

约 46% 受访者当前在用调试器,超过一半不用;常用工具是 IDE 内 lldb,Linux 命令行 gdb 略高于 IDE lldb。约 87% 用调试器逐步执行,一半多用于栈回溯,仅约四分之一调试 async。痛点集中在值展示差(约 74%)和无法打印变量(约 55%),步进问题中 async 约 28%、宏约 23%。标准库类型抱怨最多的是 enum 与集合。约 62% 库作者不知道 debugger_visualizer 属性,后续重点包括改进展示、async 步进与基础文档。

滑板车逆向:非合规 CAN 总线与数据上报

作者对 Egret GT 电动滑板车进行硬件与固件逆向,并用 Rust 重写显示单元固件。显示单元 USB-C 口官方称仅充电,实际有两根脚被用作不合规的 CAN 总线。作者用 ESP32-C6、SN65HVD230 与 MCP2515 搭建嗅探/发送装置,记录启动与运行 CAN 帧,分析组件通信后编写自定义显示固件。手机 App 蓝牙逻辑显示可对显示板、控制器、按键板等路径做固件更新,并传出模式时长、温度、电机电流、电池电压与充电历史等指标,部分里程/充电数据会关联车 ID 上报。

mbrotli:安全 Rust 实现与性能取舍

mbrotli 是用 safe Rust 重写的 Brotli 编解码库,生产代码 forbid(unsafe_code)(测试除外),SIMD 压缩走 fearless_simd。支持 quality 0–11,在等价流式设置下可与 Google Brotli v1.2.0 逐字节对比。当前 crates.io 约 0.4.1,需要 Rust 1.89+。API 覆盖一次性 Vec/slice、std::io::Read/Write 适配器、增量 session 及可跨请求复用的工作区;并行压缩由调用方调度线程,

Q&A

Rust 的 Allocator 稳定化现在进展到哪一步了?

已进入最终意见征询期(final-comment-period),目标是稳定一套最小可用的 Allocator trait,以及 Box::new_in()、Vec::new_in()、System / Global 分配器,并为 T: GlobalAlloc 提供 Allocator 的 blanket impl。

Box<T, A> 在自定义分配器下有什么语言层面的特殊处理?

Box<T, A> 在 A 上不视为 fundamental;当 A ≠ Global 时,Box 不带 noalias 及对应的语言级唯一性要求,因为自定义分配器是普通 Rust 代码,部分实现会在释放时从数据指针回推分配器状态。

2026 年 Rust 调试调查中,开发者使用调试器的比例和主要痛点是什么?

约 46% 受访者当前在用调试器,超过一半目前不为 Rust 使用调试器。痛点方面:约 74% 提到值的展示差,约 55% 无法打印变量;步进问题里 async 约 28%、宏约 23%。

Rust 调试调查显示后续会重点改进哪些方面?

后续重点包括:改进 enum/集合/字符串在调试器中的展示、async 栈与状态机步进、常见调试器的基础文档;并提到 GSoC 在加强 debuginfo / visualizer 测试。

mbrotli 是什么?它和 Google Brotli 相比性能如何?

mbrotli 是用 safe Rust 重写的 Brotli 压缩/解压库(非 C 包装),生产代码 forbid(unsafe_code)。解码基准相对 Google C 中位约 3.1–3.7×;编码速度随 quality/负载在接近或超过 C 实现之间变化。

有人用 Rust 重写电动滑板车固件,具体是怎么做的?

作者 Ben 对 Egret GT 电动滑板车进行硬件与固件逆向,用 ESP32-C6、SN65HVD230 与 MCP2515 搭嗅探/发送装置,记录启动与运行 CAN 帧,分析组件通信后编写自定义显示固件,并用 Rust 重写显示单元固件。

🏷️

标签

➡️

继续阅读