Jonathan Turner und Nick Cameron haben am 18. Oktober 2016 eine erste Quellcode-Vorabfassung des Rust Language Server veröffentlicht. Das Projekt soll sprachspezifische Editorfunktionen in einem gemeinsamen Hintergrunddienst bereitstellen. Es handelt sich ausdrücklich um eine Fassung vor der Alpha, nicht um eine stabile Veröffentlichung für den täglichen Produktionseinsatz.
Die Ankündigung knüpft an die Rust-Language-Server-Demonstration in der RustConf-Keynote an. Der Mitschnitt zeigt den früheren Entwicklungsstand; maßgeblich für den Umfang der jetzigen Quellcode-Freigabe ist die schriftliche Projektankündigung.
Ein gemeinsamer Dienst für unterschiedliche Editoren
Der Rust Language Server nutzt das JSON-RPC-basierte Language Server Protocol. Zur frühen Implementierung gehören Fehlermeldungen während der Eingabe, Sprünge zu Definitionen, Referenzsuche, Umbenennungen und eingeblendete Typ- oder Dokumentationsinformationen. Das Team sucht weitere Entwickler, Tester und Unterstützung bei der Editorintegration.
Die Autoren warnen vor Fehlern und empfehlen regelmäßige Sicherungen. Gerade Änderungen durch Refactoring müssen kontrolliert werden. Auch die erste Analyse von Abhängigkeiten kann länger dauern. Projekte mit eigenen Build-Schritten oder Compiler-Plug-ins funktionieren nicht ohne Weiteres.
Nightly-Compiler und Cargo-Projekte vorausgesetzt
Der historische README-Stand vom 19. Oktober 2016 beschreibt den Aufbau mit einem aktuellen Nightly-Compiler und Cargo. Die Implementierung verbindet Compilerinformationen mit Racer und stellt Visual Studio Code als Referenz für die Frontend-Anbindung vor. Ein Teil der langfristig geplanten präzisen Compileranalyse steht noch aus. Eine installierte stabile Rust-Version allein ersetzt diese Voraussetzungen nicht.
Zuvor hatte Rust 1.12 unter anderem die Darstellung von Compilerfehlern überarbeitet. Der Language Server setzt an einem anderen Teil des Arbeitsablaufs an: Diagnose- und Navigationsfunktionen sollen innerhalb des Editors erreichbar werden. Das gemeinsame Protokoll kann dabei verhindern, dass jede Editoranbindung dieselbe sprachspezifische Logik selbst implementieren muss.

