HeadlinesBriefing favicon HeadlinesBriefing.com

Rust Glancer: Лёгкий LSP-сервер для Rust

Hacker News •
×

Rust Glancer, функциональный LSP-сервер для Rust, использует на два порядка меньше ОЗУ, чем rust-analyzer. Автор критикует зависимость rust-analyzer от [PERSON_NAME] для деревьев синтаксиса и предполагает, что для 99% сценариев использования — анализа 6666 зависимостей, которые вы никогда не редактируете — достаточно простого списка массивов. Инкрементальный парсинг и рефакторинги с мутацией DOM нужны только для активно редактируемых 1%.

Процедурные макросы остаются основным пожирателем памяти: их раскрытие выполняет реальный код, генерирует огромный вывод и вносит ~30% в размер бинарника rust-analyzer через парсинг JSON. Ленивый, неинкрементальный подход для тел функций — индексация только элементов и анализ только текущего файла — мог бы соединить лучшее из обоих миров. Сравнение с Rust Rover (без GUI) показывает похожую компактность, хотя поддержка build-скриптов и proc-макросов может остаться ограниченной.

Идеальная архитектура отражает PSI IntelliJ: конкретное дерево синтаксиса для открытых файлов, компактное на диске дерево заглушек для файлов проекта и предкомпилированные .rmeta-файлы для зависимостей. [PERSON_NAME] должен переключаться на salsa только когда пользователь касается ~/.cargo/registry/src. Определение абстрактного API для доступа к коду Rust — с поддержкой входов rmeta — остаётся самым доступным целя для настоящего "анализатора на бегу".

Ключевые сущности: Компании: [PERSON_NAME], rust-analyzer, Rust Rover, IntelliJ, Dart Analyzer | Люди: [PERSON_NAME]