Skip to content

Releases: rust-lang/rust-analyzer

nightly

08 Feb 01:11
fc55443

Choose a tag to compare

nightly Pre-release
Pre-release
Merge pull request #21571 from Wilfred/check_type_names

fix: Stale diagnostics with rust-project.json and rustc JSON

2026-02-02

02 Feb 05:47
7cb789d

Choose a tag to compare

Commit: 7cb789d
Release: 2026-02-02 (v0.3.2777)

New Features

  • #21408 add support for default field values.
  • #21460 add support for #![feature(new_range)].

Fixes

  • #21564 fix upvar analysis of nested closures and re-enable unused_variables and unused_mut.
  • #21527 match => and == after meta in macros.
  • #21528 handle Self::EnumVariant and Self on traits in doclinks.
  • #21533 fix panic when an opaque was constrained to an impossible type in method autoderef.
  • #21555 clear diagnostics on panic.
  • #21542 complete inferred types in statics.
  • #21495 complete else before tuples.
  • #21513 use binding name for the new function in extract_function.
  • #21522 add semicolon in toggle_macro_delimiter.
  • #21514 handle continue in convert_range_for_to_while.
  • #21534 don't panic if spawning the workspace discovery command fails.

Internal Improvements

  • #21548 make JSON and postcard protocols explicit, drop generic Codec.
  • #21410 handle cancellation in bidirectional proc macro calls.

See also the changelog post.

2026-01-26

26 Jan 05:47
2532c48

Choose a tag to compare

Commit: 2532c48
Release: 2026-01-26 (v0.3.2769)

Fixes

  • #21497 (first contribution) allow const evaluation errors in method resolution.
  • #21491 insert type variables for statics.
  • #21490 don't mix up regular and built-in derives in "Expand macro recursively".
  • #21485 avoid emitting redundant block in move_guard.
  • #21499 don't offer apply_demorgan on if let.

Internal Improvements

  • #21492 fix parameter capture and drop order in async functions.
  • #21385 parallelize proc macro expansion.
  • #21479 add tests for bidirectional communication in proc macro expansion.
  • #21509 add tests for renaming keywords in imports.

See also the changelog post.

2026-01-19

19 Jan 05:40
080e703

Choose a tag to compare

Commit: 080e703
Release: 2026-01-19 (v0.3.2761)

New Features

  • #21483 trigger flycheck when non-workspace files get modified.

Fixes

  • #21475 (first contribution) look up flycheck by ID instead of vector index.
  • #21462 sync cast checks to rustc once again.
  • #21456 make naked_asm!() always return !.
  • #21364 fix lowering crash with supertrait predicates.
  • #21445 disable unused_variables and unused_mut warnings.
  • #21459 hide macro-generated renamed imports from symbol index.
  • #21464 respect re-exports in path symbol search.
  • #21484 don't show sysroot dependencies in symbol search.
  • #21451 complete mut and raw on &x.foo().
  • #21442 keep +#[cfg]+ and +#[track_caller]+ after extract_function.
  • #21412 keep guard expression in move_guard.
  • #20946 offer convert_to_guarded_return on if let ... else.
  • #21465 don't offer remove_parentheses on (2 as i32) < 3.

Internal Improvements

  • #21458, #21443 migrate unwrap_block and generate_mut_trait_impl assists to SyntaxEditor.
  • #21466 remove postcard-legacy proc macro server protocol.
  • #21468 improve workspace.discoverConfig docs.

See also the changelog post.

2026-01-12

12 Jan 10:30
d43c636

Choose a tag to compare

Commit: dd48777
Release: 2026-01-12 (v0.3.2753)

New Features

  • #21415, #21446 allow Rust paths in symbol search.
  • #18043 support configuring flycheck using workspace.discoverConfig.

Performance Improvements

  • #21407 reuse scratch allocations for try_evaluate_obligations.

Fixes

  • #21414 (first contribution) include traits defined in other crates in flyimport.
  • #21436 (first contribution) handle #[ignore = "reason"] on tests.
  • #21405 (first contribution) support Span::line and Span::column in proc macro expansion.
  • #21416 support Span::byte_range in proc macro expansion.
  • #21421 fix recursive built-in derive expansion.
  • #21399 properly lower SelfOnly predicates.
  • #21434 remove code made redundant by method resolution rewrite.
  • #21432 fix missing lifetimes diagnostics with function pointers.
  • #21420 ignore escapes when string highlighting is disabled.

Internal Improvements

  • #21438, #21439 add integration test infrastructure to proc macro server.
  • #21433 include private definitions in generated docs.

See also the changelog post.

2026-01-05

05 Jan 08:07
6a1246b

Choose a tag to compare

Commit: 6a1246b
Release: 2026-01-05 (v0.3.2743)

New Features

  • #21376 allow finding references from doc comments.
  • #21308 add configuration options to override the test, bench and doctest subcommands.
  • #21370 add #[rust_analyzer::macro_style()] attribute to control macro completion brace style.

Performance Improvements

  • #21362, #21363 compress token trees to reduce memory usage (saves 120 MB on self).
  • #21396 only compute lang items for #![feature(lang_items)] crates.
  • #21390 pre-allocate interner storage with 64 KB of data or 1024 elements.
  • #21391 reduce impl_signature query dependencies in method resolution.

Fixes

  • #21374 (first contribution) suppress non_camel_case_types lint for +#[repr(C)]+ structs and enums.
  • #21403 suppress false positive missing associated item diagnostics when specialization is used.
  • #21397 fix Span::source_text in proc macro expansion.
  • #21377, #21400 support Span::file and Span::local_file in proc macro expansion.
  • #21393 add location links for generic parameter type hints.
  • #21375 fix incorrect dyn hint in impl Tr for.
  • #21361 ignore try_into_ prefix when suggesting a name.

Internal Improvements

  • #21367 add an upvars_mentioned that computes the closure captures.
  • #21369 migrate move_arm_cond_to_match_guard assist to SyntaxEditor.
  • #21388 remove unnecessary ConstLiteralRef enum.
  • #21401 add a README.md to proc-macro-srv-cli.

See also the changelog post.

2025-12-29

29 Dec 07:55
be6975f

Choose a tag to compare

Commit: be6975f
Release: 2025-12-29 (v0.3.2735)

New Features

  • #21200 don't expand built-in derives, treat them specifically instead (saves 180 MB on self).
  • #21337 stabilize type mismatch diagnostic.
  • #20193 add setting to disable showing rename conflicts.
  • #20741 add macro segment completion.

Fixes

  • #21326 keep flycheck generations in sync across multiple workspaces.
  • #21348 re-enable fixpoint variance analysis.
  • #21351 fix parsing of format_args!(..., keyword=...).
  • #21358 fix type inference when hovering on _.
  • #21354 fix duplicate default item in record update syntax.
  • #21330 fix indent in convert_to_guarded_return.
  • #20595 fix indent in convert_iter_for_each_to_for.
  • #20521 handle break in expected type analysis.
  • #21359 prompt the user to add the rust-analyzer component to the toolchain file.
  • #21297 fix LSP configuration request handling.

Internal Improvements

  • #21249, #21340, #21345 implement bidirectional proc macro server messaging prototype.
  • #21335 store closures with "tupled" inputs.
  • #21341 move library and local root inputs to base-db.
  • #21344 stop using MIR ProjectionElem in closure analysis.
  • #21349 make token trees no longer generic over the span.
  • #21353 pre-allocate some buffers for parsing.
  • #21355 reduce channel lock contention for drop threads.
  • #21357 drop AstIdMap asynchronously.
  • #21356 collect garbage when quiescient after events.
  • #21334 add cargo-machete CI step.

See also the changelog post.

2025-12-22

22 Dec 07:17
9d58a93

Choose a tag to compare

Commit: 9d58a93
Release: 2025-12-22 (v0.3.2727)

New Features

  • #21295, #21307 use GC instead of salsa interning for solver types (salves 648 MB and 31 s on self).
  • #21240 show parameter inlay hints for missing arguments.
  • #20996 add "Insert explicit method call derefs" assist.
  • #21309 add LSP extension to get failed obligations for a given function.
  • #21282 add crate_attrs field to rust-project.json.

Fixes

  • #21270 (first contribution) fix "file emitted multiple times" errors in rust-analyzer scip.
  • #21276 fix reference-style links in hover.
  • #21304 strip invisible delimiters in MBE.
  • #21262 use the HIR to check for used locals.
  • #21032 don't add semicolons to unit-returning function calls in argument lists.
  • #21278 suggest &mut T for &T in completions.
  • #21289 suggest &T for &&T in completions.
  • #21212 use variant name as variable in postfix completions for enums.
  • #21166 support this parameter name in closures.
  • #21277 fix reference stripping in expected type analysis.
  • #21291 fix expected type analysis for match arms.
  • #20438 fix guessing of braces for renamed macros.
  • #21293 don't offer move_guard in blocks with multiple statements.
  • #21258 support add_return_type for functions defined inside closures.
  • #20576 support nested if-let in merge_nested_if.
  • #20577 fix indent in merge_nested_if.
  • #21266 keep expression in replace_let_with_if_let.
  • #21272 prepend workspace root to target file for sysroot metadata.
  • #21273 fix method resolution for incoherent impls when there are two sysroots in the crate graph.

Internal Improvements

  • #21316 call out feature freeze on IDE assists.
  • #21314 add "Use of AI tools" section to developer docs.
  • #21279 add special ErasedFileAstId used to bypassing downmapping.
  • #21298 pretty-print attributes up to cfg(false).
  • #21284 bump rustc crates.
  • #20439 add hint to use T![] instead of T! {}.
  • #20472 drop style guide entry about precondition checks.

See also the changelog post.

2025-12-15

15 Dec 08:57
87cf663

Choose a tag to compare

Commit: 87cf663
Release: 2025-12-15 (v0.3.2719)

New Features

  • #21243 support #[feature(associated_type_defaults)].
  • #21242 support the 1.93 format_args! lowering.

Fixes

  • #21253 (first contribution) don't register twice for didSaveTextDocument.
  • #21265 (first contribution) properly handle multiple lint attributes on the same item.
  • #21238 (first contribution) add a stub is_transmutable to avoid panicking.
  • #21226 (first contribution) show generic args when displaying traits.
  • #21235 pass environment to fix a const generics panic.
  • #21251 fix a panic in TypeBound::kind().
  • #21233 revert "turn BlockLoc into a tracked struct".
  • #21244 support #[rustc_deprecated_safe_2024(audit_that = reason)].
  • #21210 fix completion with {{{ and _ in format strings.
  • #20754 keep labels and attributes in convert_for_to_while_let.
  • #21239 add missing parameter in replace_method_eager_lazy.
  • #21044 keep generics in generate_fn_type_alias.
  • #21175 fix indent in toggle_ignore.
  • #21264 don't offer bind_unused_param in closures.
  • #21256 demote add_return_type.
  • #21187 include overloaded operators in SCIP index.
  • #21221 don't needlessly add visibility in no_such_field quick fix.

Internal Improvements

  • #21225 give FileSymbol a 'db lifetime.
  • #21263 use generated names in old format_args! lowering.
  • #21174, #21199 migrate convert_iter_for_each_to_for and generate_delegate_trait assists to SyntaxEditor.
  • #21209 do not create stale expressions in body lowering.
  • #21252 fix two Clippy lints.

See also the changelog post.

2025-12-08

08 Dec 10:15
5e3e9c4

Choose a tag to compare

Commit: 5e3e9c4
Release: 2025-12-08 (v0.3.2711)

New Features

  • #21218 bump minimum supported toolchain version from 1.78 to 1.90.

Fixes

  • #21205 (first contribution) handle #[cfg] in macro input attribute stripping.
  • #21203 add configuration option to hide placeholder type hints.
  • #21222 don't complete unit return type in async associated items.
  • #21215 don't implement sizedness check via all_field_tys.
  • #21190, #21195 more proc macro server fixes.
  • #21223 temporarily disable postcard.
  • #21198 add missing semicolon in incomplete let completion.
  • #21183 register define_opaque built-in attribute macro.
  • #21164 allow multiple active discovery operations.

Internal Improvements

  • #21182 remove TraitEnvironment.
  • #21178 make ModuleId and BlockLoc tracked structs.
  • #21208 handle lint attribute expansion in hir.
  • #21188 fix rustdoc warnings and enable them on CI.
  • #21189 remove mdbook-toc usage from the book.

See also the changelog post.