New Features

Performance Improvements

  • #7947 Fix exception when expanding macros in parallel and enable it by default. This is the second attempt to make procedural macro expansion parallel. The previous one was reverted because of the bug.

Fixes

  • Procedural macro expansion fixes:

    • #8271 Fix expansion of procedural macros that use CARGO_TARGET_DIR environment variable (for example, macros from sqlx crate with offline feature)

    • #8233 Fix expansion of proc macros that weirdly mix token spans (e.g. yew::html!)

    • #8203 Fix expansion of proc macros with a float literal in a body

    • #8278 Fix procedural macro expansion with nightly toolchain

    Note, procedural macro expansion is still under development, and it’s disabled by default for now. To turn it on, enable org.rust.cargo.evaluate.build.scripts and org.rust.macros.proc experimental features

  • #8261 Fix type inference when the type in impl item is also used in associated type projection like impl Trait1<<S as Trait2>::Item> for S {}, In particular, it should fix type inference and code completion with sqlx macros

  • #8241 Fix handling $crate inside detached files

  • #8226 Don’t produce E0277 errors for non fully-known types

  • #8235 Fix false positive E0277 trait bound Sized is not satisfied

  • #8235 Take into account Sized/?Sized trait bounds during name resolution and code completion

  • #8217 Fix Extract function refactoring (Ctrl+Alt+M) for argument of some macro calls like println! or vec!

  • #8194 Fix Introduce variable intention inside match arm

  • #8164 Fix continuous “Preparing resolve data” process when memory is low

  • #8045 Fix auto-import in include!-ed files. Previously, use items were wrongly inserted into file contained include! macro call

Full set of changes can be found here