HeadlinesBriefing favicon HeadlinesBriefing.com

Rust Glancer: Servidor LSP Leve para Rust

Hacker News •
×

Rust Glancer, um servidor LSP funcional para Rust, usa duas ordens de magnitude menos RAM que rust-analyzer. O autor critica a dependência do rust-analyzer em [PERSON_NAME] para árvores de sintaxe e sugere que para o caso de uso de 99% — analisar 6666 dependências que você nunca edita — uma simples lista de arrays seria suficiente. Parsing incremental e refatorações por mutação de DOM são necessários apenas para o 1% ativamente editado.

Macros de procedimento continuam sendo um grande consumidor de memória: expandi-las executa código real, gera saída massiva e contribui com ~30% do tamanho do binário do rust-analyzer via parsing JSON. Uma abordagem preguiçosa e não-incremental para corpos de funções — indexar apenas itens e analisar o arquivo atual — poderia combinar o melhor dos dois mundos. A comparação com Rust Rover (sem GUI) sugere compacidade similar, embora suporte a build-scripts e proc-macros possa permanecer limitado.

A arquitetura ideal espelha o PSI do IntelliJ: uma árvore de sintaxe concreta para arquivos abertos, uma árvore de stubs compacta em disco para arquivos do projeto, e arquivos .rmeta pré-compilados para dependências. [PERSON_NAME] deve mudar para salsa apenas quando o usuário tocar em ~/.cargo/registry/src. Definir uma API abstrata para acesso a código Rust — com suporte a entradas rmeta — permanece a fruta mais acessível para um verdadeiro "analisador de relance".

Entidades-chave: Empresas: [PERSON_NAME], rust-analyzer, Rust Rover, IntelliJ, Dart Analyzer | Pessoas: [PERSON_NAME]