Rust 筛选自 28 条资讯

Rust 日报 · 2026-08-09

今日速览

这周值得注意的项目不少。OS101 操作系统自带 TLS 1.3 和浏览器,Dirge 编程 Agent 主打「默认全开」且空闲内存仅 8MB。社区对 SemVer 的质疑有了具体替代方案,Haskell 的版本策略被拿来对比。Rust Internals 上出现了一个针对 declarative macro 递归调用的设计提案,直指辅助宏泄漏问题。照片去重、剪贴板管理、文件整理等实用小工具也各有亮点。

项目与工具

  • OS101:用 Rust 从零写的 x86_64 操作系统 — 一个学习项目,目标是逐层理解引导、中断、内存、GUI、网络到浏览器。内核是 no_std,自带 IPv4 协议栈和 TLS 1.3 实现(X25519、ChaCha20-Poly1305、SHA-256),浏览器用自研 HTML/CSS 引擎加 QuickJS 脚本。已有 shell、GUI 桌面、记事本/画图/终端等应用、几个小游戏和安装向导,支持 .opk 运行时包免重启安装。作者列了限制:TLS 证书未验证,真硬件仍是实验性的,缺 AHCI/NVMe、SMP 和 aarch64。

  • Dirge——内置齐全的 Rust 编程 Agent — 以「默认全开」为卖点:MCP、LSP、ACP、Janet 插件系统、tree-sitter 代码理解和跨会话记忆全部内置,同时保持原生 Rust 的轻量(空闲内存约 8MB、二进制约 36MB、无运行时)。agent 循环刻意让便宜小模型也能保持生产力:能修复畸形的工具调用、在写入磁盘前用 tree-sitter 校验每次修改、打断重复循环,并在模型持续失败时注入恢复检查点、提示它本意的工具或路径,再升级到更强模型。记忆分两级(项目内热事实 + 可搜索的面包屑索引)和全局跨项目层,内置面向 agent 的 kanban 看板,长会话以可增量刷新的检查点保留现场。

  • JustAPI:框架本体用 Rust 实现的 Python Web 框架 — 网服务器、路由、TLS、请求校验、JSON 序列化和数据库访问全部在 Rust 里完成,Python 进程只负责运行应用逻辑。作者 Swadhin Biswas 说明贯穿项目的设计约束是「能用 Rust 实现就必须在 Rust 实现」,Python 侧只保留 Rust 值与 handler 之间的胶水。可从 PyPI 安装,支持 Linux、macOS、Windows,并提供 CPython 3.14t 自由线程版的 wheel;作者给出的 hello-world 基准是 766k req/s。他也坦承设计、实现、调试和文档大量借助 agentic AI,代码里有他完整理解、能维护的部分,也有「经过审查和测试但不敢说能凭记忆复现」的部分。

  • wayshot:带大量 AI 功能的视频编辑与录制工具 — 用 Rust 和 Slint 框架写的视频编辑、屏幕录制、推流和屏幕共享工具,支持 Linux 和 Windows。编辑器有多轨时间线、46 种视频滤镜、12 种音频滤镜、关键帧动画、字幕系统(可导出 SRT/VTT/ASS),AI 功能包括字幕翻译与移除(基于 LaMa inpainting)、DeepFilter 降噪、摄像头背景移除;录制侧支持 WebRTC 屏幕共享和 RTMP 推流。

  • RSMalloc Alpha-2:基于 RSEQ 的通用内存分配器 — 距 Alpha 几个月后发布的新版本,包含近 100 个提交的改进、优化和 bug 修复。新增 ≥4KB 大小类的 trim 支持(带后台 trimmer 线程)、部分 NUMA 感知、基于 bitmap 的偷取、自适应 refill 和 RB-Tree 大块元数据;每 CPU 快速路径用内联汇编临界区。仍处于 Alpha-2,作者希望得到基准测试和反馈。

  • 用合成器驱动动画的 Wayland 桌面 — zaytun-os 这个 Wayland 桌面环境的实验点在于:动画由合成器统一驱动而不是各应用自己控制,应用挂起时桌面动画仍能继续;缓动不用传统曲线,而是解析求解的阻尼弹簧,动画被中断时保留当前速度。静止时不渲染无用帧,作者曾因阈值设太小,让一个动画在半秒内渲染了超过 1.3 万帧,其中只有 19 帧真正改变了画面。shell 直接跑在合成器内部,面板不需要逐帧 IPC;dock、图标、窗口装饰、平铺、多显示器、XWayland 都还没做。

  • 照片去重工具:127 位双梯度 dHash 加本地 CLIP 检测连拍 — 同时跟踪水平和垂直亮度梯度,生成 127 位 dHash,整个哈希放进 u128,比较就是 XOR 加 count_ones;阈值为 10/127 时能识别 WhatsApp 重压缩和缩放的图,又不会把相似照片误并。连拍检测单独做成了可选模式:用本地 CLIP 模型对嵌入向量算余弦相似度,真连拍得分 0.90 以上,无关照片低于 0.65。对 Synology 图库,它通过 DSM API 直接哈希约 10KB 的服务端缩略图,免下载原图,rayon 并行处理;审查页面用本地 tiny_http,带 per-run CSRF token 和 Host 校验防 DNS rebinding。

  • SuperClip:一个轻量剪贴板管理器 — 作者嫌现有剪贴板管理器要么是闲置吃 100MB+ 内存的 Electron 应用,要么强推云同步,于是用 Tauri 写了一个:二进制约 12MB,历史存本地 JSON,无账户、无遥测、无网络调用。全局热键打开面板,方向键或点击选择,回车粘贴回原应用,常用片段可置顶。Linux 的剪贴板和焦点处理是整套里最麻烦的部分,作者在 Mint 上开发,希望其他发行版/窗口管理器用户反馈。

  • Basalt:作者等了七年才做出来的 Minecraft 启动器 — Rust 后端加 Tauri,前端 React,主打「功能不牺牲外观」。支持独立实例、模组加载器,从 CurseForge/Modrinth 下载 mod、整合包、资源包和数据包;可以从 Prism、ATLauncher、Modrinth app 导入实例而不改动原文件,危险改动前自动快照,游戏崩溃时读日志解释原因。带游玩时长统计,凭据存系统钥匙串。目前是 beta,主要面向 Linux,也支持 Windows/macOS;NixOS 用户可以从 flake 源码构建。作者说明前端部分设计用了 AI 辅助,Rust 后端完全自己写。

  • Nornsaga:no_std 模态图结构编辑器,AI 内联协作 — 本来是 Helix 的改写,最后变成自己的项目:内部有索引器和符号系统,为 Rust 代码构建双向依赖图,用来做作用域判断、高亮和幽灵类型。AI 通过 Ollama 跑 qwen3.5.8b,绑定在光标上下文上,可以跟随用户操作并直接在编辑器中改动;作者想把它做成「按作用域协作」的工具,而不是你下指令、模型盲改。目前是 alpha,只支持 Rust。

  • Sift:带事务日志的本地文件整理 CLI — 安全优先的文件整理工具,选择 Rust 是为了在几千个文件上解析规则、提取 EXIF/ID3 元数据时保持速度和低内存占用。每次移动、复制、删除、压缩都会记录到 ~/.config/sift/history.json;sift undo 按逆序回滚并 touch 文件 mtime,避免目录监视器立刻重新触发;不传 -x 时只预览规则匹配结果、不碰磁盘。TUI 基于 ratatui,支持文件系统事件流和系统回收站集成。

  • 在 no_std Rust 中驱动 7.3 寸六色墨水屏(ESP32-S3) — Seeed Studio reTerminal E1002 载板(XIAO ESP32-S3)的 Embassy 示例集,覆盖电池电压读取、按键消抖、无源蜂鸣器 PWM、microSD 与墨水屏驱动等。电池采样用 GPIO21 使能分压电路,测完再关掉避免泄流;I2C 与 SPI 总线分别在 RTC/SHT40 和 microSD/墨水屏之间共享。基于 esp-hal v1.1,日志走 defmt。

设计与讨论

  • 「我有点讨厌 SemVer」 — 一篇观点帖。作者认为 SemVer 把 0.x 和 1.0 之后划成两种状态是假定过头了:实践中很多项目长期只升 minor,而「升 major 是因为 90% 用户不受影响的小破坏,还是重写了整个 API」SemVer 根本不区分,两者的心理和营销含义却完全不同。Cargo 假定所有 crate 都遵守 SemVer,所以这个缺陷影响面不小。作者更推崇 Haskell 的 Package Versioning Policy:A.B.C.D 中 A.B 是 major 元组,C.D 相当于 MINOR.PATCH,A 可以专门用于传达「绑定的是哪一年/哪个外部规范版本」这类项目特定信息。

  • 提议:declarative macro 用 self! 递归调用,并引入宏臂可见性 — Rust Internals 上的一个设计讨论。当前痛点是:宏需要辅助宏处理子任务(例如数参数个数)时,必须另外声明并导出 helper,下游 crate 在手动展开一层宏后就会依赖到这个隐藏 helper。作者提议允许宏内部用 self! 调用自身,并新增 priv 修饰的宏臂:这些匹配臂只在宏展开前的文件内部可见,外部调用会忽略它们,这样就不需要导出辅助宏。

社区

  • RustWeek 访谈:编译器工程师 Michal Kostrubiec(FractalFir) — FractalFir 本人把五月 Rust Week 上的这篇访谈发到了 r/rust,称其中谈到了他如何走上 Rust 编译器开发这条路、一路上犯过的错误,以及目前在做 Rust on GPUs 的工作。访谈内容不长,对编译器开发者的成长路径感兴趣的话值得一看。