rust-lang / rust-roadmap-2017

Tracking Rust's roadmap
218 stars 12 forks source link

Rust Language Service #6

Open aturon opened 7 years ago

aturon commented 7 years ago

Point of contact

@nrc @jonathandturner

Overview

The RLS provides a server that runs in the background, providing IDEs, editors, and other tools with information about Rust programs. It supports functionality such as 'goto definition', symbol search, reformatting, and code completion, and enables renaming and refactorings.

The RLS gets its source data from the compiler and from Racer. Where possible it uses data from the compiler which is precise and complete. Where its not possible, (for example for code completion and where building is too slow), it uses Racer.

Since the Rust compiler does not yet support end-to-end incremental compilation, we can't offer a perfect experience. However, by optimising our use of the compiler and falling back to Racer, we can offer a pretty good experience for small to medium sized crates. As the RLS and compiler evolve, we'll offer a better experience for larger and larger crates.

The RLS is designed to be frontend-independent. We hope it will be widely adopted by different editors and IDEs. To seed development, we provide a reference implementation of an RLS frontend for Visual Studio Code.

Status

Currently the RLS is in the alpha stage. It is able to work with many real-world, Cargo-based Rust projects.

We're working to continue to mature the RLS towards its eventual release. The next step in this maturation is a second alpha which will help us iron out a few limitations in the first alpha, namely being able to work with test code, see types from the standard library, and further improving compatibility with more projects.

After the second alpha, we'll release the RLS beta. The beta will be the first release with easy installation, giving the full picture of what the RLS 1.0 release will feel like when it's ready.