The Rust Dev Tools Team has confirmed that the last release of the Rust Language Server (RLS) will be in September 2022, alongside Rust 1.64, as it is deprecated in favour of the Rust Analyzer.
Both the Rust Analyzer and RLS are implementations of the Language Server Protocol (LSP), enabling IDEs to provide static analysis features like error detection, code completion, and jump to definition, all of which improve productivity. Tools which support LSP include VS Code, Visual Studio, vim and neovim, Sublime, Eclipse, Emacs and many more.
The problem with RLS is that it works by using the rust compiler, rustc, to compile code in the background with a “save-analysis” option and then loading and parsing the output. This is slow, whereas the new Rust Analyzer uses an incremental compilation which is much faster. Rust Analyzer was made an official part of the Rust project in February at which point it was said to be the “very likely future of Rust IDE support,” as now confirmed. The high level of interest in Rust Analyzer, and its complexity, is indicated by over 1,000 open issues; but the RFC for making it the official LSP for Rust was the “most upvoted Rust RFC ever” according to the team.
According to the 2021 Rust developer survey (PDF), the most popular IDEs for Rust are VS Code (53.69%) and vi/vim/neovim (28.15%). In third place are the JetBrains IDEs (21.24%) which have their own Rust plug-in and do not require Rust Analzyer.
The Rust team also released Rust 1.62 last week. New features include adding dependencies from the command line with “cargo add”, a [default] attribute for enums so they can have a default value, lightweight mutexes on Linux, and easier building of OS-less binaries “for example when writing a kernel”, said the team.
Rust has a release cycle where every six weeks a beta branch is created and the previous beta is promoted to be the new stable release. The rapid release cycle reduces the pressure on the community of volunteers, according to Rust Infrastructure Team Lead Pietro Albini, because it means that “we have no pressure to ship things. If a feature is not ready, we have issues, we can just delay it by a few weeks, and nobody is going to care if it’s going to get stabilised today or in a month and a half.”