工具大全
开发者工具作者:Coocon2026年8月23日9 次阅读约 4 分钟阅读

Rust Glancer:把 Rust LSP 内存压到 100MB 以下的替代实现(0822)

Rust Glancer:把 Rust LSP 内存压到 100MB 以下的替代实现

Rust 圈昨天炸出一件新鲜事:一个叫 Rust Glancer 的项目,宣称自己是「专注于低内存的 Rust LSP 替代实现」,在 HN 上冲到 360+ 分,rust-analyzer 的作者 matklad 亲自写博客站台。

先给结论:它不是要取代 rust-analyzer,而是给「机器不够好、或愿意牺牲部分完整度换内存」的人多一个选择。项目自己说得也很清醒——不装。

核心数据:内存目标与索引速度

项目作者在博客开头就摆明定位,原句:

an alternative Rust LSP implementation that is built with a focus on low memory usage.

两个主打特性,第一个就是内存:

  • 极低内存占用(合理项目 target <100mb
  • 重启后立即恢复索引,不用重新建索引

作者给了一张实测表,Rust Glancer 对比 rust-analyzer 的索引时间:

机器 索引类型 Rust Glancer rust-analyzer
MacBook Pro M4 Max, 36GB (2025) 基础索引 5 秒 6 秒
MacBook Pro M4 Max, 36GB (2025) 全量索引 8 秒 13 秒
MacBook Pro M1, 8GB (2020) 基础索引 6 秒 7 秒
MacBook Pro M1, 8GB (2020) 全量索引 9 秒 14 秒

作者还补了一句:

throughout this video, the used RAM remained under 100mb

演示全程内存都没超过 100MB。这对 8GB 老机器的意义,用过 rust-analyzer 的人都懂。

为什么 rust-analyzer 那么吃内存

matklad 在站台文章里直接点破了根因,措辞相当不客气:

rust-analyzer uses rowan for syntax tree representation... Yeah, rowan is garbage :P

翻译一下这段吐槽:rowan 的树形表示会带来严重的内存碎片,导致从 OS 拿的 RAM 远高于「实际使用」的 RAM。rust-analyzer 选它是为了更快,也确实做到了——但这套架构天然跟内存绑定,很难把部分数据挪到内存之外。

Rust Glancer 的思路反着来:不做增量 LSP,改用「冻结的分析结果 + 保存时失效」。核心好处是:

  • 分析结果可以落盘,需要时才加载进内存
  • 保存的分析结果可复用,重启编辑器不用重新索引

代价作者也明说:冻结的分析天生比惰性增量慢,得靠「输入时只做浅层分析、复用上次完整索引」来补救。所以新写的 import、struct、trait 要保存后才进索引

别把它当 rust-analyzer 杀手

这是我最欣赏这个项目的一点——它不吹牛。作者原话:

it's highly unlikely that Rust Glancer will ever become "just like rust-analyzer, but better".

定位很清楚:要完整度和逐键精度,继续用 rust-analyzer;机器弱、愿意拿完整度换内存,才轮到 Glancer。

几条现实约束,装之前先掂量:

  • 还不是完整 LSP,缺不少功能、有已知 bug
  • 已有完整索引管线 + 类型推断 + trait solver(chalk),大部分常规语法和 goto definition、hover、inlay hints、completions 都能用
  • build scripts / proc macros 大概率不会支持——作者明确说这类需要跑不可信代码的场景不在计划内

matklad 补了一个技术判断:rust-analyzer 曾测出 30% 的二进制体积花在 JSON 解析上,proc macro 展开慢是因为要跑真实代码。Rust Glancer 选择绕开这条路,代价就是放弃这部分能力。

对 Agent 工作流的意外优化

一个有意思的细节:作者观察到 rust-analyzer 在 Agent 编辑代码时,inlay hints 会错位。Rust Glancer 专门为此做了优化——自定义 file watcher,且对「编辑器外变更」降低优先级,Agent 的批量改动不会触发频繁重建索引。

对现在越来越多人用 Agent 改 Rust 代码来说,这是个实打实的加分项。

你今天可以做的事

  1. 机器内存紧张、或开了好几个 IDE 工作区的人,直接装 VS Code 扩展试:rust-glancer.rust-glancer
  2. 别急着删 rust-analyzer——两者可以共存,弱机/大依赖树项目用 Glancer,重重构用 rust-analyzer
  3. 关注它后续的 proc macro 方案:作者提了个「不执行真实代码」的怪招,如果真成了会是 LSP 圈的大新闻

FAQ

Q:Rust Glancer 是 rust-analyzer 的分叉吗? 不是。它是独立实现,4 个月从「smart ctags for Rust」一路长成真 LSP。作者给 rustc、clippy、rust-analyzer 都贡献过代码,但这是全新项目,不是 fork。

Q:它能替代 rust-analyzer 日常用吗? 取决于你的项目。普通语法、goto definition、hover、inlay hints、completions 都可用,但缺功能、有 bug,且 build scripts / proc macros 大概率不支持。作者自己已经拿它当日常主力用了约 1.5 个月。

Q:那个「100x less RAM」的说法准确吗? HN 标题写的是「100x less RAM」,matklad 的说法是「two orders of magnitude less RAM」。项目自己更保守,用的是「target <100mb」这个可验证目标,并给了演示视频全程 <100MB 的实测。具体倍数因项目而异,别把这个 marketing 数字当真,看实测表更靠谱。

参考来源:

相关文章

86 分钟:Rust 供应链攻击把 yank 机制变成了诱饵

2026 年 8 月 20 日,arrayref 被投毒。真正值得研究的不是恶意代码本身,而是攻击者把 cargo 的 yank 提示变成了社会工程武器——先把好版本全部标记为废弃,再让 cargo 亲口建议你升级到那个恶意版本。整条链路只在线 86 分钟,却踩中了 Rust 依赖模型里最难防的一环:build.rs 在编译期就是任意代码执行。

rustcargo+4
developer2026年8月21日8 min
99

Protobuf 终于有官方 LSP 了:VS Code / Neovim 配置实操指南

Buf 把 production-grade 的 Protobuf LSP 直接打包进了 buf CLI:跳转定义、补全、找引用、重命名、organize imports、与 buf lint 同源的实时诊断,全都有了。本文给出 VS Code、Neovim(0.11 新写法 + lspconfig 旧写法)、JetBrains 三条配置路径,一个两文件的最小验证工程,以及已知的坑(buf-config filetype 要手动注册、旧插件要卸载、别再用 buf beta lsp)。所有命令基于 buf v1.72.0 实测。

开发工具grpc+6
developer2026年8月17日5 min
156

X 开源推荐算法:看得见,不等于看得懂

8 月 13 日 xAI 把 For You 信息流的排序、过滤、打标签系统一次性推上 GitHub,代码量翻了十几倍,连 Phoenix 排序模型的训练代码和合成数据都给了。第二天他们又提交了一次——不是改逻辑,是给权重加注释,因为有人把 -234 读成了「一个举报抵 468 个赞」。

开源推荐算法+6
ai-tutorials2026年8月15日10 min
173

MCP 官方发布新路线图:五个优先方向,HTTP 传输一统江湖(0822)

Model Context Protocol 官方发布新版路线图,明确五大优先方向:Agent 消息原语、HTTP-native 传输统一、Agent 身份安全、原语改进、SDK 体验。本文拆解每个方向对你接入 MCP 的实际影响。

aillm+3
developer2026年8月23日5 min
9