Today, we’re happy to announce the second alpha for the Rust Language Server, a project build to bring high-quality Rust IDE support to any IDE or editor. This release brings new features, better stability, and an easier installation than the first alpha.
When a project first starts, it tends to begin life as a library or as an application. As projects grow, sometimes they take on aspects of both, being both a library and an application that can be executed.
With alpha 2, we add support for this hybrid project type. Why, you might ask?
Editing Cargo’s source code
With this change we can now work on Cargo in RLS. We’re continuing to improve the experience and take on even larger codebases, but it’s promising to see the RLS already able to work with real-world projects, like Cargo.
Rust projects that need serialisation often reach for the popular serde crate to do the work. With alpha 2, we now support the new serde annotations that are based on the new custom derive capabilities, which is sometimes called “macros 1.1”.
Editing a test in Tokio
With alpha 2, you’ll also be able to get intellisense for the
#[test] functions code in your project, allowing you to seamlessly switch between application and test code without having to change anything in your IDE or project. We’d like to extend this coverage more in the future.
We’ve fixed dozens of issues in the RLS and related crates. As a result, the experience is much more solid. We continue to make stability a focus as we push towards the beta release, but we’re already pleased with the progress since the first alpha.
When you look at the setup instructions for the RLS now, you’ll see we’ve got it down to four steps.
Standard library documentation on hover
We’ve also simplified getting access to the standard library documentation. In one step, you can get now all the types and documentation for the standard library to your RLS install, allowing you to get the same IDE experience with the standard library that you do with your own code.
The RLS, as it’s matured, has proven that it’s ready to take a step closer to being an official Rust project. Recently, the Rust tools team voted to bring the RLS in the Rust language ‘nursery’, a set of blessed projects that are working towards becoming an officially supported part of the Rust toolchain. We’re excited to take this step and are committed to continuing to improve it towards the eventual 1.0 release.
We’re hopeful this will let more people set up the RLS and get the best experience. In the future, we hope to transition the RLS over to the rustup tool, which should allow you to add RLS support with one easy command. This release is a stepping stone to that vision.