Hacker News 中文摘要

RSS订阅

Rust Glancer:内存占用减少100倍的Rust LSP -- Rust Glancer: Rust LSP using 100x less RAM

文章摘要

作者用四个月开发了一个低内存占用的Rust LSP替代实现,目标内存低于100MB,支持重启后即时索引,适合老旧设备。

文章总结

好的,这是根据您的要求,对原文进行中文重述和精简后的版本:

标题:你好,世界!· Rust Glancer

本文介绍了一个名为 Rust Glancer 的项目,这是一个专注于低内存占用的 Rust 语言服务器协议(LSP)替代实现。该项目已开发了四个月。

核心特性: 1. 极低内存占用:对于合理的项目,目标内存使用低于 100MB。 2. 重启后即时索引:项目索引后,重启编辑器无需重新索引。

这些特性使其非常适合老旧电脑。例如,在一台 2020 年款、8GB 内存的 MacBook Pro M1 上测试,效果良好。性能对比显示,在相同机器上,Rust Glancer 的索引速度(基础索引约 5-6 秒,完整索引约 8-9 秒)优于 rust-analyzer(基础索引约 6-7 秒,完整索引约 13-14 秒)。

与 rust-analyzer 的区别: rust-analyzer 内存占用高的原因有三:一是 Rust 工作区信息量大;二是其使用的 Salsa 数据库与内存强绑定;三是其语法树表示(Rowan)导致内存碎片化。Rust Glancer 的核心思路是放弃增量更新,采用“冻结分析结果,保存时失效”的模型。分析结果可卸载到文件系统,按需加载,从而节省内存并支持重启复用。代价是分析速度较慢,但通过输入时进行浅层分析、复用之前完整索引等技巧来缓解。对于编辑器外的代码变更(如 AI 代理修改),Rust Glancer 也进行了优化,避免频繁重索引。

项目起源与演变: 作者有约 7 年的 Rust 专业经验,因不满 rust-analyzer 的高内存占用和初始索引速度,最初只想构建一个“Rust 智能标签”工具。但项目逐步演进,从简单的声明索引,到添加类型传播、特质解析,最终发展成一个功能较完整的 LSP。关键里程碑包括:声明式宏展开、类型推断引擎、以及特质求解引擎(集成了 Chalk)。作者已将其作为日常驱动使用约一个半月。

AI 使用情况: 该项目大量使用了大型语言模型(LLM),但并非“氛围编码”。作者会审查每个拉取请求,确保代码质量。LLM 充当了领域专家角色,但作者主导设计并修正 LLM 提出的缺陷。作者强调代码归属自己,并欢迎批评指正。

未来计划: - 进一步优化性能和内存(尤其是索引阶段和碎片问题)。 - 改进类型推断和语法支持。 - 增加代码操作(如实现缺失特质字段、自动导入)。 - 可能支持过程宏(通过非代码执行的方式)。 - 不支持构建脚本或需要执行不可信代码的过程宏。 - 计划撰写博客,深入介绍 Rust Glancer 的内部工作原理(如内存对齐、引擎子进程模型、分片缓存等)。

总结: Rust Glancer 是一个有潜力的项目,尤其适合硬件资源有限或愿意牺牲部分功能以换取低内存占用的用户。它已具备基本功能,但仍在完善中。

评论总结

根据评论内容,主要观点如下:

1. 作者身份澄清
- 评论1指出文章作者为popzxc,而非matklad本人,并附上matklad的独立文章链接。
- 关键引用:
- "To clarify, author is https://github.com/popzxc, not me!"
- "My thoughts are here: https://matklad.github.io/2026/08/21/rust-glancer.html"

2. 术语解释需求
- 评论2对未解释的缩写“Rust LSP”提出疑问,认为应明确说明。
- 关键引用:
- "Why don't people explain their acronyms? What is a Rust LSP?"

3. Rust Analyzer(RA)与Rust Rover对比
- 评论3指出RA构建大型工作区内存数据结构缓慢,而Rust Rover采用不同方式,询问其使用体验和权衡。
- 关键引用:
- "Waiting for RA to build up the full in memory data structure for a large workspace is so painful."
- "Does anyone have experience using that? Any tradeoffs?"

4. 磁盘缓存方案
- 评论4简短提问RA是否支持磁盘缓存。
- 关键引用:
- "RA with disk cache?"

5. 作者互动
- 评论5为作者popzxc,表示愿意回答问题。
- 关键引用:
- "Happy to answer any questions."

总结:评论主要围绕Rust语言服务器(LSP)工具的性能优化展开,包括对RA构建速度的批评、Rust Rover的替代方案、磁盘缓存可能性,以及术语解释需求。作者身份澄清和互动也构成部分内容。