Releases: rust-lang/rust-analyzer
Releases · rust-lang/rust-analyzer
Release list
nightly
Merge pull request #23226 from ChayimFriedman2/remnants-tt minor: Remove non-longer-needed remnants from previous versions of the tt encoding
2026-08-24
Commit: 5c156cd
Release: 2026-08-24 (v0.3.3025)
New Features
#23147addunary-operator-cannot-be-applieddiagnostic.
Performance Improvements
#23079optimize the heck out of the storage of token trees (saves 32 MB onself).
Fixes
#23186(first contribution) allowasm!label blocks to diverge.#23202(first contribution) use owner expression store for anonymous consts.#23134accept trailing comma on built-in macro calls.#23201prevent stack overflow with recursive ADT layouts.
Internal Improvements
#23214(first contribution) use Cargo build directory for flycheck logs.#23166download all build artifacts in a single step.#23168dropzigbuildsupport.#23172split VSIX publishing into different jobs and skip duplicates.
See also the changelog post.
2026-08-17.4
Merge pull request #23159 from grezzko/issue#22880 fix(parser): frontmatter error path for UTF-8
2026-08-17
Commit: bb3bbbd
Release: 2026-08-17 (v0.3.3016)
New Features
#22325(first contribution) supportReborrowandCoerceSharedbuilt-in derives.
Fixes
#23109(first contribution) offerreplace_arith_opon 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.#23118avoid panic with mismatched associated type parameters.#23107fix off-by-one in lifetime binders when loweringdyn Trait<'a>.#23103don't consider locals of async functions as upvars of the returned coroutine.#23072replace unresolved type variables during impl selection.#23138return an error const to the solver when consteval fails.#23115lower range expressions during HIR lowering.#23127handle divergence correctly in cases likebreak return.#23120fix a panic inresolve_path.#23117add parentheses in some common cases oftype_mismatch.#23122handle functions defined by macros ininline_call.#22225check original type inreplace_arith_op.#23111ensure every workspace has a proc macro server.#23140fixrustc_privatesupport forrustc_proc_macro.
Internal Improvements
#23112avoid newlines in "overly long loop" message.#23123letpad16take an enum instead of a bool.#23121buildarmhfbinaries inside a container.#23108support multiple stable releases in one day.
See also the changelog post.
2026-08-10.1
Merge pull request #23108 from lnicola/release-suffix internal: Support multiple stable releases in one day
2026-08-10
Commit: 57411b3
Release: 2026-08-10 (v0.3.3005)
New Features
#23082(first contribution) addreplace_arith_with_strictassist.#23043remove broken and incomplete borrow checker.#23042support#[rustc_must_implement_one_of]in assists.
Performance Improvements
#23056optimize item tree memory usage (saves 29 MB onself).#23001save an allocation in lifetime handling.
Fixes
#23014(first contribution) accept trailingselfin paths.#23020(first contribution) parse inner attributes in loop bodies.#23070(first contribution) avoid adding some extra spaces to function signatures.#23055allow struct literals in match guards.#23077parse0 .. | _.#23016resolve assignment LHS in its expression scope.#23085merge the inference code forletexpressions and statements.#23008fixExprScopeshandling of expressions inside patterns.#23017allow diverging RHS in destructuring assignments.#23040fix upvars query for const blocks inside closures.#23096don't declare a value namespace constructor for struct and enum variants if it doesn't exist.#22899support macros in#[doc]attributes in IDE features.#23059fix a panic caused by bound variables.#22922don't panic onm!('a).#23019don't panic on[usize; ""].#22974,#23034propagate macro expansion depth across body and block boundaries.#23021always allocate anonymous consts for C strings and byte string literals.#23032account for trailing line continuations in byte strings.#23028preserve trailing text whenInsertReplaceEditis unsupported.#23036makepub macros available to reverse dependencies.#23054parse inline asm with keyword as operand name.#22994,#23015exclude unit, never and unknown types from term search.#21846pass-Zjson-target-specto Cargo when needed.
Internal Improvements
#23071(first contribution) support built-in derives inParam::parent_fn.#23010install a single-threadedrayonpool in non-parallelanalysis-stats.#23037support quiet mode inrust-analyzer diagnostics.#23041only show progress bars on TTYs.#23047userustc_type_ir::try_visit.#23013bumpsalsa.#23002bumpgen-lsp-types.
See also the changelog post.
2026-08-03
Commit: b54a82b
Release: 2026-08-03 (v0.3.2997)
New Features
Performance Improvements
#22966avoid 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 intype-mismatch.#22947(first contribution) fix error code formismatched-arg-count.#22977(first contribution) handle disallowed names inunlinked_file.#22996(first contribution) parse multi-line component arrays inrust-toolchain.toml#22743resolve path in all namespaces inresolve_path.#22943mark auto traits as coinductive.#22932fix a panic with large discriminant values.#22930fix a panic on<S as S>::S.#22933fix aSemanticspanic oninclude!.#22938fix a panic with HRTB closure arguments.#22957hide parameter inlay hints with matching raw identifiers.#22965don't allocate anonymous consts for bare paths in blocks.#22956double stack size to 16MB.#22948implementslice_get_uncheckedin MIR debug execution, to fixbitflags!.#22992don't panic on a self-referentialimpl Traitfunction.#22993handle backslash inr"\{foo}".#23004parse|| 1.. .field.#23003add reference when completing a parameter where coercion applies.#22940match virtual paths by components.#22660respectreferences.exclude{Tests,Imports}in references lens.#22903only try to parsediscoverConfigcommand stdout.
Internal Improvements
#22937(first contribution) disallow postix snippets with item scope.#22958(first contribution) temporarily re-add--lockfile-pathsupport.#22909(first contribution) makeanalysis-statsprogress bar Unicode-safe.#22945store "liberated" closure signatures inInferenceResult.#22864,#22997fully portExprScopesto take a visitor.#22808removeclone_for_updateand mutable rowan APIs.#22998bumprowanto the version without mutable APIs.#22969simplifySourceChange.#22939bumprustc_next_trait_solver.
See also the changelog post.
2026-07-27
Commit: 12c3381
Release: 2026-07-27 (v0.3.2989)
New Features
-
#22818implement lowering of HRTBs. -
#22851add diagnostic for struct patterns with missing fields. -
#22854record and show obligation chain for unimplemented trait diagnostics:
Performance Improvements
#22862shrinkhir::Exprfrom 56 to 48 bytes.#22860packExprOrPatIdwhen stored and shrinkScopeData.#22587reduce scope of cache priming.
Fixes
#22865(first contribution) respawn proc macro servers after stopping them.#22861record expressions in types inExprScope.#22852eagerly normalizeIntoFuture::Outputforawait.#22849fixsyntax-bridgepanic when splitting float.#22855fixInferenceContext:identity_argsusing the wrongDefId.#22857handle enum variants in next-solvergenerics.#22896useboolfor the guard type in expected type analysis.#22881don't interpret+#[rust_analyzer]+as#[rust_analyzer::rust_fixture].#22918preferallocoverstdpaths whenpreferNoStdis set.#22843fix panic when adding unknown fields to macro-defined structs.#22892fixmerge_importspanic with invalid paths.#22919don't offerreplace_qualified_name_with_useon unqualified paths.#22924fix a crash in generic parameter handling.#22923handle cycles inimpl_trait_with_diagnostics.#22905attach database to parallelanalysis-statsinference workers.#22898add parentheses when required ininvert_if.
Internal Improvements
#22548,#22611add a few more database lifetimes.#22831migrateHirDatabaseand remove#[query_group].#22867mergeWherePredicate::ForLifetimesandWherePredicate::TypeBound.#22883addModule::path_segments.#22914clean up support code for pre-1.94 toolchains.
See also the changelog post.
2026-07-20
Commit: cac0779
Release: 2026-07-20 (v0.3.2981)
New Features
#22283early late classification of lifetimes.#22791re-enable auto trait inference.#22777treat library files as truly immutable.#22464hide private fields on hover depending on context.#22811add capture hints to coroutines.#22813addreturn-outside-of-functiondiagnostic.
Performance Improvements
#22794avoid 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.#22784don't#[macro_use]the sysroot crates.#22773resolve non-plain paths in blocks correctly.#22747reimplement thecrate_supports_no_stdsyntactic heuristic.#22832correctly record binding owners in coroutines.#22825respecthover.documentation.enable.#22483don't assume array destructuring assignments with rest pattern are constant-sized.#22583updaterender_const_using_debug_implfor recent standard library changes.#22804don't update existing parent inference results for anonymous consts.#22810stop leaking bound variables from skipped binders.#22827fix panic on type bounds after macro calls caused by parser recovery.#22789fix invalidpattern_matching_variantlowering due to recovery.#22759,#22782usequote!to avoid someunwrappanics inSyntaxFactory.#22792preserve whitespace from macro inputs inextract_variable.#22819only update the status if the message is different when the client doesn't supportexperimental/serverStatus.
Internal Improvements
#22780remove#[salsa::cycle]support from#[query_group].#22814migrateHirDatabase::borrowckaway from#[query_group].#22534turnBlockLocinto a tracked struct, take 3.#22779remove theTreeMutatorfromSourceChangeBuilder.#22815remove manual lifetime extension.#22778split out a session construct.#22793useResultfor thelsp_server::Responsepayload.
See also the changelog post.
2026-07-13
Commit: ffcdbbd
Release: 2026-07-13 (v0.3.2971)
New Features
#22734add quick fix for array length mismatch.
Performance Improvements
#22766share same proc macro servers between workspaces and use two processes.
Fixes
#22770(first contribution) clampcttzconst eval result to type width.#22654improve#[doc = macro!()]expansion.#22744don't complete..Default::default()when implementingDefault.#22736fix panic inmerge_importson trailing path separator.#22707fix MIR lowering crash with error types.#22749fix crash ingenerate_functionwith unresolved module.#22751handle#[cfg]in tail expression macros even better.#22683support Cargo 1.97CARGO_RESOLVER_LOCKFILE_PATHsetting.#22735fix proc macrosTokenStream::from_strfor doc comments.#22741add parentheses when adding reference todyn 'a + B.#22535prettify associated consts of trait defined by a macro.#22726suggest code action fixes even if their range is elsewhere.#22405recurse into container expressions forunused-must-use.#22768handle$inonEnter.
Internal Improvements
#22728remove deadNavigationTarget::docsfield.#22719remove some moreExpandDatabasequeries.#22729migrateExpandDatabase::{expansion_,real_,}span_mapqueries.#22733makeexpand_speculativea method onMacroCallId.#22717simplifyfn_macro::register_builtin!.#22739removeExpandDatabase.#22746removecycle_{fn,initial}support from#[query_group].#22745removeDefDatabase.#22774removeIntern::DatabaseandLookup::Databaseassociated types.#22764useExpr::parseinstead ofSourceFile::parseinast::make.#22748remove unnecessaryclone_for_update.#22581log a message when cache priming completes.#22755support goards inmatch_ast!.#22753bringlsp_server::Responsecloser to the spec.#22635bumpgen-lsp-types.#22750fix new Clippy lints.
See also the changelog post.
