Rust 筛选自 41 条资讯

Rust 日报 · 2026-08-04

今日速览

FalkorDB 用 8 万行 Rust 把核心引擎重写了,编译期直接消掉原本 C 代码里 100 多个内存安全 bug,测试过千例,用户那边完全无感。Rust 项目接下了不可移动类型和保证析构的 2026–2027 目标——后续会通过新增 trait 让类型显式声明自己能不能换内存位置、能不能被忘掉。Rust 1.98 会正式带浮点快速数学 API,允许用可控方式换性能,实测求和速度已经往整数那边靠了。意法半导体开始给自家传感器出 Rust 驱动,gccrs 在编译 Linux 内核的 Rust 代码上也捅破了关键一层,能处理简单独立程序了。


重要新闻

  • FalkorDB 用 Rust 完成核心引擎重写 — 图数据库 FalkorDB 把原来那套 C 引擎用 Rust 重写了,新代码差不多 8 万行,357 个 PR 并进来,跑过了 1585 个 TCK 场景和 1322 个流程测试。团队没一上来就追性能,走的是“先跑通、再稳定、最后优化”的路子,过程中用了 AI 编码代理,但设计和审查还是人盯。编译阶段直接清掉了原引擎 issue 列表里堆着的 100 多个内存崩溃和内存损坏类 bug,客户什么感觉都没有。

  • Rust All Hands 2026 回顾 — 今年 5 月在乌得勒支办的 Rust All Hands,来了 166 名项目成员和特邀的人,三天排了 73 场分组讨论,治理架构、团队状态、异步、Rust for Linux 都摊开聊了。同一时间还搞了 RustWeek 非会议,Bevy、Ariel OS、Rust GPU 等六个生态团队参与。会议记录全部公开了,2027 年会继续办。

  • Sovereign Tech Fellowship 资助的 Rust 维护工作(2026 年 6–7 月报告) — 维护者 Kobzol 拿了 STF 资助之后把这两个月的工作放出来了:重心压在编译时间优化上,通过给 bors 测试做剖析找到了 Cargo 里的性能瓶颈,已经交了好几个去掉不必要克隆的 PR。接下来计划继续削编译器里的瓶颈。同一批资助还给了 docs.rs 的维护者 Denis Cornehl。

  • 不可移动类型与保证析构(Move/Forget trait)提案 — Rust 语言团队把这个目标接下来了,计划 2026–2027 年把 Move 和 Forget 这几个 trait 引进来,类型可以显式选能不能被搬走、能不能被忘记。主要想解决的是 Pin 在处理自引用类型时堆出来的复杂度,以及 mem::forget 让析构不一定能跑的问题。后面会先出编译器 MVP 和 RFC,再到 Linux 内核环境里验证能不能走通。

  • gccrs 编译 Linux 内核代码取得重要进展 — gccrs 上半年一直在啃内核 Rust crates 的编译,属性处理、名称解析、资源管理这些地方修了一大堆问题,现在能把简单的独立程序正确编译出来。背后的目标是用 GCC 工具链去编译 Rust 内核模块,把 LLVM 到不了的架构也覆盖上。

  • 意法半导体发布 Rust MEMS 传感器驱动 — ST 开始在 crates.io 上发官方的 Rust 传感器驱动了,跟 Embassy STM32 等项目有配合。驱动靠 RAII 在编译期把内存安全管住,C 驱动那边也没丢,继续维护。

工具、库与版本更新

  • iceoryx2 推出 ByteAtomic 提供安全无锁原语 — iceoryx2 是个基于共享内存的零拷贝 IPC 框架。它的无锁算法在进程间同时改同一个内存区域时,如果直接用 core::ptr::copy 搬数据,哪怕算法能检测到竞争,行为也是未定义的。ByteAtomic 用字节级原子操作把内存拷贝包了一层,杜绝这种数据竞争。

  • BorrowSanitizer:跨语言别名违反的动态检测工具 — 一个 LLVM 净化器,专门揪 Rust unsafe 代码和跟 C/C++ 互操作时违反别名模型引起的未定义行为。和 Miri 不一样的地方在于它能检测外部的 C/C++ 代码,而且性能目标是撑得住 fuzzing。完全开源。

  • Wild linker 发布 0.10.0 — 这个 Rust 写的快速链接器新版修了一堆 bug,链接脚本支持也明显增强了。性能跟之前差不多,团队自己觉得在大量重构下面还能把速度稳住,本身就是个成绩。

  • rust-analyzer changelog #339 — 新加了宏内非活跃代码诊断和 CovariantUnsafeCell 支持。修了好几个 panic:大判别值的、<S as S>::S 的、闭包 HRTB 参数的,还有一些别的。内部重构把 rowan 的可变 API 拿掉了,一些查询性能也有提升。

  • pdfni:纯 Rust 的 PDF 表格检测库 — 不碰 OCR,也不依赖系统 PDF 库,内置了一个从 Mozilla pdf.js 移植来的纯 Rust 阅读器。能检测文本型 PDF 里的表格区域和单元格结构,顺便输出结构化文档模型(标题、列表、段落)和 Markdown,给 CLI 也留了库接口。

  • maryada:适用于 no_std 环境的区间算术库 — 按 IEEE 1788.1-2017 标准实现的区间算术接口,只依赖 libm 和可选的 num-complex,还额外拿了复数平面上的区间运算出来。

  • GraphForge:嵌入式 openCypher 兼容图引擎 — Rust 核心,支持 openCypher 查询,结果用 Arrow 格式返回,持久化走 Parquet。本地跑大规模图数据的分析和调查,百万条边以上的数据集也能处理。

  • Assura:合约优先语言,验证后生成 Rust — 开发者先在 Assura 里把程序规范写清楚,Z3/CVC5 做 SMT 验证,工具链再自动吐出 Rust 代码。还能嵌进 AI 循环里,走“写契约、出代码”的流程。

  • Sanedit:模态终端文本编辑器 — 没走 tree-sitter 加 ropey 的常见路线,自己搞了 PEG 语法高亮和文件处理,支持 LSP、多光标,尤其针对超大文件专门优化过。

  • Wallr:使用 wgpu 渲染的原生 Wayland 壁纸引擎 — 没在 swww 或 hyprpaper 上套壳,渲染路径完全自研,11 种过渡效果全是 GPU 驱动,定时基于墙上时钟而不是刷新率。

  • 开源 Rust 数据库客户端 — 作者在用 Rust 和 GPUI 搭一个免费的数据库管理工具,PostgreSQL、MySQL、SQLite、Turso 都支持,定位是 TablePlus 和 Dataflare 的替代品,现在在找反馈和贡献。

  • Learning Rust 教程(2016 年至今)近期更新 — learning-rust.github.io 最近更了一版,作者自己说跟着 Rust 语言一路演进持续维护教程真的很难。

性能优化与语言技巧

  • 无分支 Rust:去掉一个 if 让 filter 快 4 倍 — 对 100 万个 f64 按阈值过滤,惯用 filter 写法在保留 50% 元素时反而最慢,3.94 ms;保留 99% 反而只要 1.49 ms。根源在 CPU 分支预测——一半 true 一半 false 的时候预测错误率最高。换了一个用布尔转整数再构造掩码的无分支写法,耗时压到 0.9 ms 上下,文章给了具体实现和 criterion 基准数据。

  • Rust 1.98 的浮点快速数学 API — Rust 1.98 会通过 crate 级属性或 -Z fast-float 标志,让编译器能更激进地优化浮点运算,允许开发者指定可接受的舍入精度边界。文章用 100 万 i64 和 f64 求和来演示,x86-64-v3 目标下浮点求和接近整数性能,也解释了编译器为什么默认在浮点上那么保守。

  • 用户的 Clippy 严格配置分享 — 一个开发者把 Clippy 默认全开 clippy::pedantic,而且强制检查所有潜在 panic 点,合并和发布之前确保代码里不藏 unwrap、expect 这类运行时恐慌点。

  • 实用的内存安全思考 — 从 Zig 在看 Fil-C 安全编译目标这件事说起,把 Rust 的 unsafe 口子、Fil-C 的运行时检查这些不同路子放在一起看,结论是内存安全其实是一条谱,Rust 的借用检查在实践里给的安全屏障足够强、也够实用,有 unsafe 代码不等于整块程序就裸奔了。

  • false.err(())?; 是坏主意吗? — 作者搞了个模式:给 bool 挂一个 .err() 方法,false 的时候就返回 Err,然后函数里直接跟 ? 配合提前返回。帖子下面吵了一轮,有人觉得省了写 if 的麻烦,有人觉得看着别扭。

嵌入式与系统编程

  • The Embedded Rustacean 第 77 期 — 这期讲了 RustConf 2026 票务截止提醒和日程更新、ST 的 Rust MEMS 驱动、probe-rs 0.32.0 发布、Ferrocene 26.05.0 上线、ESP32-S31 量产、Arduino Core on Zephyr 脱离 Beta,还提了社区里一个嵌入式 Agent 技能仓库和 ST 在推 Rust 驱动的报道。

  • Netstack3:在 unsafe 世界中实现安全 — Fuchsia 的纯 Rust 网络栈 Netstack3 搞了 6 年,10 个开发者堆了 19.2 万行代码,unsafe 占比压得极低。准备上线的时候靠灰度发布和海量测试保证不出事,实战下来就是在系统级软件里也能把 unsafe 锁到很小。

  • 在 GPU 上用 compute shader 解析 JSON — slurpjson 把 JSON 解析拆成一系列并行前缀扫描,全部扔到 GPU 上用 wgpu compute shader 跑,输出一个扁平的语法结构带。目前还是研究阶段,性能没超过 CPU 端的 simdjson,但方向是实实在在在探 GPU 上并行解析的可行性。