Why building a Rust LSP is hard
GitHub Pages
Rust Glancer’s author explains why building a Rust language server is hard, especially around serving useful answers from incomplete project state without blocking the editor. The post says blocking on full indexing would leave users waiting 10-20-50-100 seconds with little editor functionality. It argues for starting with lightweight responses after the LSP handshake and then handling later requests via virtual file state, parallel query execution, and cancellation as code changes.
Why it matters
Building a Rust language server means producing useful answers from incomplete files, ambiguous workspace boundaries, and continuously changing editor state. It compares rust-analyzer and Rust Glancer across workspace discovery, incremental analysis, process isolation, and the tradeoffs behind a standardized protocol.