github rust-lang/rust-analyzer 2026-07-27

8 hours ago

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.

Don't miss a new rust-analyzer release

NewReleases is sending notifications on new releases.