Skip to content

Releases: rust-lang/rust-analyzer

nightly

nightly Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Aug 00:42
69d0e26
Merge pull request #23226 from ChayimFriedman2/remnants-tt

minor: Remove non-longer-needed remnants from previous versions of the tt encoding

2026-08-24

Choose a tag to compare

@github-actions github-actions released this 24 Aug 06:15
5c156cd

Commit: 5c156cd
Release: 2026-08-24 (v0.3.3025)

New Features

  • #23147 add unary-operator-cannot-be-applied diagnostic.

Performance Improvements

  • #23079 optimize the heck out of the storage of token trees (saves 32 MB on self).

Fixes

  • #23186 (first contribution) allow asm! label blocks to diverge.
  • #23202 (first contribution) use owner expression store for anonymous consts.
  • #23134 accept trailing comma on built-in macro calls.
  • #23201 prevent stack overflow with recursive ADT layouts.

Internal Improvements

  • #23214 (first contribution) use Cargo build directory for flycheck logs.
  • #23166 download all build artifacts in a single step.
  • #23168 drop zigbuild support.
  • #23172 split VSIX publishing into different jobs and skip duplicates.

See also the changelog post.

2026-08-17.4

Choose a tag to compare

@github-actions github-actions released this 17 Aug 13:01
bb3bbbd
Merge pull request #23159 from grezzko/issue#22880

fix(parser): frontmatter error path for UTF-8

2026-08-17

Choose a tag to compare

@github-actions github-actions released this 17 Aug 06:12
bb3bbbd

Commit: bb3bbbd
Release: 2026-08-17 (v0.3.3016)

New Features

  • #22325 (first contribution) support Reborrow and CoerceShared built-in derives.

Fixes

  • #23109 (first contribution) offer replace_arith_op on references, too.
  • #23159 (first contribution) don't panic on non-ASCII character after a short frontmatter closing fence.
  • #23078 (first contribution) normalize associated types in orphan check.
  • #23118 avoid panic with mismatched associated type parameters.
  • #23107 fix off-by-one in lifetime binders when lowering dyn Trait<'a>.
  • #23103 don't consider locals of async functions as upvars of the returned coroutine.
  • #23072 replace unresolved type variables during impl selection.
  • #23138 return an error const to the solver when consteval fails.
  • #23115 lower range expressions during HIR lowering.
  • #23127 handle divergence correctly in cases like break return.
  • #23120 fix a panic in resolve_path.
  • #23117 add parentheses in some common cases of type_mismatch.
  • #23122 handle functions defined by macros in inline_call.
  • #22225 check original type in replace_arith_op.
  • #23111 ensure every workspace has a proc macro server.
  • #23140 fix rustc_private support for rustc_proc_macro.

Internal Improvements

  • #23112 avoid newlines in "overly long loop" message.
  • #23123 let pad16 take an enum instead of a bool.
  • #23121 build armhf binaries inside a container.
  • #23108 support multiple stable releases in one day.

See also the changelog post.

2026-08-10.1

Choose a tag to compare

@github-actions github-actions released this 10 Aug 16:40
f938641
Merge pull request #23108 from lnicola/release-suffix

internal: Support multiple stable releases in one day

2026-08-10

Choose a tag to compare

@github-actions github-actions released this 10 Aug 06:56
57411b3

Commit: 57411b3
Release: 2026-08-10 (v0.3.3005)

New Features

  • #23082 (first contribution) add replace_arith_with_strict assist.
  • #23043 remove broken and incomplete borrow checker.
  • #23042 support #[rustc_must_implement_one_of] in assists.

Performance Improvements

  • #23056 optimize item tree memory usage (saves 29 MB on self).
  • #23001 save an allocation in lifetime handling.

Fixes

  • #23014 (first contribution) accept trailing self in paths.
  • #23020 (first contribution) parse inner attributes in loop bodies.
  • #23070 (first contribution) avoid adding some extra spaces to function signatures.
  • #23055 allow struct literals in match guards.
  • #23077 parse 0 .. | _.
  • #23016 resolve assignment LHS in its expression scope.
  • #23085 merge the inference code for let expressions and statements.
  • #23008 fix ExprScopes handling of expressions inside patterns.
  • #23017 allow diverging RHS in destructuring assignments.
  • #23040 fix upvars query for const blocks inside closures.
  • #23096 don't declare a value namespace constructor for struct and enum variants if it doesn't exist.
  • #22899 support macros in #[doc] attributes in IDE features.
  • #23059 fix a panic caused by bound variables.
  • #22922 don't panic on m!('a).
  • #23019 don't panic on [usize; ""].
  • #22974, #23034 propagate macro expansion depth across body and block boundaries.
  • #23021 always allocate anonymous consts for C strings and byte string literals.
  • #23032 account for trailing line continuations in byte strings.
  • #23028 preserve trailing text when InsertReplaceEdit is unsupported.
  • #23036 make pub macros available to reverse dependencies.
  • #23054 parse inline asm with keyword as operand name.
  • #22994, #23015 exclude unit, never and unknown types from term search.
  • #21846 pass -Zjson-target-spec to Cargo when needed.

Internal Improvements

  • #23071 (first contribution) support built-in derives in Param::parent_fn.
  • #23010 install a single-threaded rayon pool in non-parallel analysis-stats.
  • #23037 support quiet mode in rust-analyzer diagnostics.
  • #23041 only show progress bars on TTYs.
  • #23047 use rustc_type_ir::try_visit.
  • #23013 bump salsa.
  • #23002 bump gen-lsp-types.

See also the changelog post.

2026-08-03

Choose a tag to compare

@github-actions github-actions released this 03 Aug 04:32
b54a82b

Commit: b54a82b
Release: 2026-08-03 (v0.3.2997)

New Features

  • #22306 emit inactive-code diagnostics in macros.
  • #22959 support CovariantUnsafeCell.

Performance Improvements

  • #22966 avoid having a separate query for defined opaques.

Fixes

  • #22886 (first contribution) fix a glob import shadowing bug.
  • #22964 (first contribution) show qualified paths on collisions in type-mismatch.
  • #22947 (first contribution) fix error code for mismatched-arg-count.
  • #22977 (first contribution) handle disallowed names in unlinked_file.
  • #22996 (first contribution) parse multi-line component arrays in rust-toolchain.toml
  • #22743 resolve path in all namespaces in resolve_path.
  • #22943 mark auto traits as coinductive.
  • #22932 fix a panic with large discriminant values.
  • #22930 fix a panic on <S as S>::S.
  • #22933 fix a Semantics panic on include!.
  • #22938 fix a panic with HRTB closure arguments.
  • #22957 hide parameter inlay hints with matching raw identifiers.
  • #22965 don't allocate anonymous consts for bare paths in blocks.
  • #22956 double stack size to 16MB.
  • #22948 implement slice_get_unchecked in MIR debug execution, to fix bitflags!.
  • #22992 don't panic on a self-referential impl Trait function.
  • #22993 handle backslash in r"\{foo}".
  • #23004 parse || 1.. .field.
  • #23003 add reference when completing a parameter where coercion applies.
  • #22940 match virtual paths by components.
  • #22660 respect references.exclude{Tests,Imports} in references lens.
  • #22903 only try to parse discoverConfig command stdout.

Internal Improvements

  • #22937 (first contribution) disallow postix snippets with item scope.
  • #22958 (first contribution) temporarily re-add --lockfile-path support.
  • #22909 (first contribution) make analysis-stats progress bar Unicode-safe.
  • #22945 store "liberated" closure signatures in InferenceResult.
  • #22864, #22997 fully port ExprScopes to take a visitor.
  • #22808 remove clone_for_update and mutable rowan APIs.
  • #22998 bump rowan to the version without mutable APIs.
  • #22969 simplify SourceChange.
  • #22939 bump rustc_next_trait_solver.

See also the changelog post.

2026-07-27

Choose a tag to compare

@github-actions github-actions released this 27 Jul 04:58
12c3381

Commit: 12c3381
Release: 2026-07-27 (v0.3.2989)

New Features

  • #22818 implement lowering of HRTBs.

  • #22851 add diagnostic for struct patterns with missing fields.

  • #22854 record and show obligation chain for unimplemented trait diagnostics:

    Screenshot showing the obligation chain for an unsatisfied trait bound

Performance Improvements

  • #22862 shrink hir::Expr from 56 to 48 bytes.
  • #22860 pack ExprOrPatId when stored and shrink ScopeData.
  • #22587 reduce scope of cache priming.

Fixes

  • #22865 (first contribution) respawn proc macro servers after stopping them.
  • #22861 record expressions in types in ExprScope.
  • #22852 eagerly normalize IntoFuture::Output for await.
  • #22849 fix syntax-bridge panic when splitting float.
  • #22855 fix InferenceContext:identity_args using the wrong DefId.
  • #22857 handle enum variants in next-solver generics.
  • #22896 use bool for the guard type in expected type analysis.
  • #22881 don't interpret +#[rust_analyzer]+ as #[rust_analyzer::rust_fixture].
  • #22918 prefer alloc over std paths when preferNoStd is set.
  • #22843 fix panic when adding unknown fields to macro-defined structs.
  • #22892 fix merge_imports panic with invalid paths.
  • #22919 don't offer replace_qualified_name_with_use on unqualified paths.
  • #22924 fix a crash in generic parameter handling.
  • #22923 handle cycles in impl_trait_with_diagnostics.
  • #22905 attach database to parallel analysis-stats inference workers.
  • #22898 add parentheses when required in invert_if.

Internal Improvements

  • #22548, #22611 add a few more database lifetimes.
  • #22831 migrate HirDatabase and remove #[query_group].
  • #22867 merge WherePredicate::ForLifetimes and WherePredicate::TypeBound.
  • #22883 add Module::path_segments.
  • #22914 clean up support code for pre-1.94 toolchains.

See also the changelog post.

2026-07-20

Choose a tag to compare

@github-actions github-actions released this 20 Jul 05:26
cac0779

Commit: cac0779
Release: 2026-07-20 (v0.3.2981)

New Features

  • #22283 early late classification of lifetimes.
  • #22791 re-enable auto trait inference.
  • #22777 treat library files as truly immutable.
  • #22464 hide private fields on hover depending on context.
  • #22811 add capture hints to coroutines.
  • #22813 add return-outside-of-function diagnostic.

Performance Improvements

  • #22794 avoid an allocation when converting case in flyimport.

Fixes

  • #22634 (first contribution) don't panic when restarting flycheck with an empty handle list.
  • #22822 (first contribution) fix panic on functions and proc macros with the same name.
  • #22784 don't #[macro_use] the sysroot crates.
  • #22773 resolve non-plain paths in blocks correctly.
  • #22747 reimplement the crate_supports_no_std syntactic heuristic.
  • #22832 correctly record binding owners in coroutines.
  • #22825 respect hover.documentation.enable.
  • #22483 don't assume array destructuring assignments with rest pattern are constant-sized.
  • #22583 update render_const_using_debug_impl for recent standard library changes.
  • #22804 don't update existing parent inference results for anonymous consts.
  • #22810 stop leaking bound variables from skipped binders.
  • #22827 fix panic on type bounds after macro calls caused by parser recovery.
  • #22789 fix invalid pattern_matching_variant lowering due to recovery.
  • #22759, #22782 use quote! to avoid some unwrap panics in SyntaxFactory.
  • #22792 preserve whitespace from macro inputs in extract_variable.
  • #22819 only update the status if the message is different when the client doesn't support experimental/serverStatus.

Internal Improvements

  • #22780 remove #[salsa::cycle] support from #[query_group].
  • #22814 migrate HirDatabase::borrowck away from #[query_group].
  • #22534 turn BlockLoc into a tracked struct, take 3.
  • #22779 remove the TreeMutator from SourceChangeBuilder.
  • #22815 remove manual lifetime extension.
  • #22778 split out a session construct.
  • #22793 use Result for the lsp_server::Response payload.

See also the changelog post.

2026-07-13

Choose a tag to compare

@github-actions github-actions released this 13 Jul 04:44
ffcdbbd

Commit: ffcdbbd
Release: 2026-07-13 (v0.3.2971)

New Features

  • #22734 add quick fix for array length mismatch.

Performance Improvements

  • #22766 share same proc macro servers between workspaces and use two processes.

Fixes

  • #22770 (first contribution) clamp cttz const eval result to type width.
  • #22654 improve #[doc = macro!()] expansion.
  • #22744 don't complete ..Default::default() when implementing Default.
  • #22736 fix panic in merge_imports on trailing path separator.
  • #22707 fix MIR lowering crash with error types.
  • #22749 fix crash in generate_function with unresolved module.
  • #22751 handle #[cfg] in tail expression macros even better.
  • #22683 support Cargo 1.97 CARGO_RESOLVER_LOCKFILE_PATH setting.
  • #22735 fix proc macros TokenStream::from_str for doc comments.
  • #22741 add parentheses when adding reference to dyn 'a + B.
  • #22535 prettify associated consts of trait defined by a macro.
  • #22726 suggest code action fixes even if their range is elsewhere.
  • #22405 recurse into container expressions for unused-must-use.
  • #22768 handle $ in onEnter.

Internal Improvements

  • #22728 remove dead NavigationTarget::docs field.
  • #22719 remove some more ExpandDatabase queries.
  • #22729 migrate ExpandDatabase::{expansion_,real_,}span_map queries.
  • #22733 make expand_speculative a method on MacroCallId.
  • #22717 simplify fn_macro::register_builtin!.
  • #22739 remove ExpandDatabase.
  • #22746 remove cycle_{fn,initial} support from #[query_group].
  • #22745 remove DefDatabase.
  • #22774 remove Intern::Database and Lookup::Database associated types.
  • #22764 use Expr::parse instead of SourceFile::parse in ast::make.
  • #22748 remove unnecessary clone_for_update.
  • #22581 log a message when cache priming completes.
  • #22755 support goards in match_ast!.
  • #22753 bring lsp_server::Response closer to the spec.
  • #22635 bump gen-lsp-types.
  • #22750 fix new Clippy lints.

See also the changelog post.