Hello!
This is the first instance of a monthly changelog for rust-analyzer. This changelog also serves as a transparency measure for our OpenCollective. We want to thank all sponsors, especially Embark Studios, as well as all individual contributors. You will also find a detailed bookkeeping record around your donation here within the next week.
Notable changes since last month include:
New Features
- Initial support for
.await
syntax (#1558). - Type inference for
?
(#1512). - Completion for type aliases (#1472).
- Mutable variables are underlined (#1544, #1550).
add_impl_members
adds types (#1476).- Sumbodules with raw names and
#[path]
are resolved (#1478, #1499). - Correctly add obligations in function methods (#1496).
- Initial type inference for
for
loops (#1501). - Use bounds on generic parameters during type inference (#1515).
- Completions works for fields of enum variants and in patterns (#1525, #1572).
- Show types of local variables in completion (#1582).
Fixes
- Make goto definition work with various Vim clients (#1511).
- Diagnostics are collected for a single file (#1494).
- Show code lens for
fn main
(#1536). - Fix discovery of lang items (#1514).
Internal Improvements
- Share the lexer with rustc (#1575).
- Migrate to the new version of rowan library, improving memory usage of syntax trees for 60% (#1545).
- Pick up floundering work from chalk (#1532).
- Many improvements and cleanups by (@kjeremy).
The highlight of the month is probably #1575. The end-game for rust-analyzer is to become a different front-end for the code that rustc itself uses. This pull request is the first step on this path: now, rust-analyzer and rustc use the same code for lexing Rust.