Rust Glancer、解析をdiskへ移して100MB未満を狙うLSP
これは何?Rust GlancerはRust codeの補完、定義移動、型hint、reference検索をeditorへ提供する、rust-analyzer代替のLanguage Serverです。
rust-analyzerのincremental query・syntax treeをmemoryへ保つ設計に対し、workspaceのfrozen analysisをfilesystemへ保存し、query時だけ必要部分を読む方式を採用しました。作者のMacBook上では通常規模のprojectを100MB未満で動かし、保存済みindexをeditor restart後も再利用しました。saveまで新itemをindexしない、完全なkeystroke精度は持たない、開発4か月で未実装機能と既知bugがあるという制約も明示しています。
LSPのresource設計は速度だけでなく、同時に開くworkspace数、agentによる大量file変更、restart costへ影響します。採用時はmemory値だけでなく、save前のsemantic gapとmissing language featureがprojectで許容できるかを測る必要があります。
- 読むべき人
- Rust developer、compiler tooling、developer experience、resource-constrained environmentの担当者
- HN
- 412 points / 104 comments