Changelog #0

Hello!

This is the first instance of a monthly changelog for rust-analyzer. Notable changes since last month include:

New Features

  • #1558 initial support for .await syntax.

    • #1512 type inference for ?.

    • #1472 completion for type aliases.

    • #1544, #1550 mutable variables are underlined.

    • #1476 add_impl_members adds types.

    • #1478, #1499 sumbodules with raw names and #[path] are resolved.

    • #1496 correctly add obligations in function methods.

    • #1501 initial type inference for for loops.

    • #1515 use bounds on generic parameters during type inference.

    • #1525, #1572 completions works for fields of enum variants and in patterns.

    • #1582 show types of local variables in completion.

Fixes

  • #1511 make goto definition work with various Vim clients.

  • #1494 diagnostics are collected for a single file.

  • #1536 show code lens for fn main.

  • #1514 fix discovery of lang items.

Internal Improvements

  • #1575 s the lexer with rustc.

  • #1545 migrate to the new version of rowan library, improving memory usage of syntax trees for 60%.

  • #1532 pick up floundering work from chalk.

  • 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.