Rust Glancer: un servidor LSP ligero para Rust y el futuro de rust-analyzer

Fuentes: Rust Glancer and the glance analyzer architecture for rust-analyzer

Rust Glancer es un nuevo servidor LSP (Language Server Protocol) funcional para Rust que, según se destaca en una publicación comunitaria, consume aproximadamente cien veces menos memoria RAM que las alternativas existentes como rust-analyzer. La entrada, surgida a partir de un comentario en lobste.rs, aprovecha el lanzamiento para reflexionar sobre la arquitectura de los servidores de lenguaje en Rust.

El texto repasa varias decisiones técnicas discutidas: el uso de la biblioteca de análisis sintáctico rowan, considerada poco eficiente para indexar las miles de dependencias de un proyecto; el coste de memoria que introduce la expansión de macros procedurales, que puede representar alrededor del 30 % del tamaño del binario de rust-analyzer solo por el código de parseo JSON; y la falta de garantías de sincronización en el protocolo LSP frente a alternativas históricas como el protocolo del Dart Analyzer.

El autor propone una arquitectura híbrida inspirada en IntelliJ, con tres niveles de representación del código: árbol sintáctico para los ficheros abiertos, stubs en disco para el resto del proyecto y metadatos .rmeta de rustc para las dependencias. Esta separación permitiría que rust-analyzer dejase de tratar toda la base de código con la misma sobrecarga incremental y reservase el análisis completo solo para los ficheros que el usuario está editando activamente.