Changelog #338

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.