<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>rust-analyzer</title>
    <description>rust-analyzer: building a better Rust IDE</description>
    <link>https://rust-analyzer.github.io//</link>
    <atom:link href="https://rust-analyzer.github.io//feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sat, 26 Sep 2026 00:33:19 +0000</pubDate>
    <lastBuildDate>Sat, 26 Sep 2026 00:33:19 +0000</lastBuildDate>
    <generator>Jekyll v3.9.0</generator>
    
      <item>
        <title>Changelog #346</title>
        <pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/09/21/changelog-346.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/09/21/changelog-346.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/aaddfb73fd95f2c0bf001b474dca91ae28bcce3a&quot;&gt;&lt;code&gt;aaddfb7&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-09-21&quot;&gt;&lt;code&gt;2026-09-21&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.3057&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23384&quot;&gt;&lt;code&gt;#23384&lt;/code&gt;&lt;/a&gt; support completions inside &lt;code&gt;cfg!()&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;imageblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;img src=&quot;https://github.com/user-attachments/assets/fdad41ee-e2c3-41a8-ac94-b660f024b765&quot; alt=&quot;Screenshot showing if cfg!(any(target_)) completions&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23375&quot;&gt;&lt;code&gt;#23375&lt;/code&gt;&lt;/a&gt; (first contribution) watch include roots recursively only once, on directory.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23370&quot;&gt;&lt;code&gt;#23370&lt;/code&gt;&lt;/a&gt; (first contribution) fix broken server binary check.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23359&quot;&gt;&lt;code&gt;#23359&lt;/code&gt;&lt;/a&gt; (first contribution) cache macro-expanded roots when climbing ancestors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23367&quot;&gt;&lt;code&gt;#23367&lt;/code&gt;&lt;/a&gt; work around a panic when the trait solver re-enters itself.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23368&quot;&gt;&lt;code&gt;#23368&lt;/code&gt;&lt;/a&gt; return an early error on unsupported string binary operations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23360&quot;&gt;&lt;code&gt;#23360&lt;/code&gt;&lt;/a&gt; include working directory when discovery command fails.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23308&quot;&gt;&lt;code&gt;#23308&lt;/code&gt;&lt;/a&gt; refactor &lt;code&gt;SyntaxContext&lt;/code&gt; to not reimplement &lt;code&gt;salsa&lt;/code&gt; macros.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #345</title>
        <pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/09/14/changelog-345.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/09/14/changelog-345.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/682a84e95b5a52cf06e9822fcaa4f628738554bf&quot;&gt;&lt;code&gt;682a84e&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-09-14&quot;&gt;&lt;code&gt;2026-09-14&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.3049&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23300&quot;&gt;&lt;code&gt;#23300&lt;/code&gt;&lt;/a&gt; (first contribution) fix doc comment offset calculation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23307&quot;&gt;&lt;code&gt;#23307&lt;/code&gt;&lt;/a&gt; drop support for const blocks in patterns.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23333&quot;&gt;&lt;code&gt;#23333&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23340&quot;&gt;&lt;code&gt;#23340&lt;/code&gt;&lt;/a&gt; fix &lt;code&gt;incorrect_case&lt;/code&gt; false positives on raw identifiers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23330&quot;&gt;&lt;code&gt;#23330&lt;/code&gt;&lt;/a&gt; fix panic on &lt;code&gt;{&quot;$&quot;: &quot;&quot;}&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23295&quot;&gt;&lt;code&gt;#23295&lt;/code&gt;&lt;/a&gt; fix panic on doc comments attached to literal expressions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23315&quot;&gt;&lt;code&gt;#23315&lt;/code&gt;&lt;/a&gt; fix &lt;code&gt;Type&lt;/code&gt; owner mismatches between anonymous consts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23352&quot;&gt;&lt;code&gt;#23352&lt;/code&gt;&lt;/a&gt; fix an &lt;code&gt;Type::impls_trait&lt;/code&gt; panic with built-in derives of generic types.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23323&quot;&gt;&lt;code&gt;#23323&lt;/code&gt;&lt;/a&gt; fix stack overflow with recursive eager macros.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23317&quot;&gt;&lt;code&gt;#23317&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t fill the body of &lt;code&gt;Drop::drop&lt;/code&gt; and &lt;code&gt;#[rustc_must_implement_one_of]&lt;/code&gt; items.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23318&quot;&gt;&lt;code&gt;#23318&lt;/code&gt;&lt;/a&gt; skip unstable methods in &quot;Implement default members&quot;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23311&quot;&gt;&lt;code&gt;#23311&lt;/code&gt;&lt;/a&gt; clean up some &lt;code&gt;#[allow]&lt;/code&gt;s.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23325&quot;&gt;&lt;code&gt;#23325&lt;/code&gt;&lt;/a&gt; remove the &lt;code&gt;interner&lt;/code&gt; and &lt;code&gt;db&lt;/code&gt; arguments from &lt;code&gt;empty&lt;/code&gt; and &lt;code&gt;default_types&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #344</title>
        <pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/09/07/changelog-344.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/09/07/changelog-344.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/9074e9b4c6bc31d7986ccf4e22d18af70e5508da&quot;&gt;&lt;code&gt;9074e9b&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-09-07&quot;&gt;&lt;code&gt;2026-09-07&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.3041&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23266&quot;&gt;&lt;code&gt;#23266&lt;/code&gt;&lt;/a&gt; render const values in completion label details:&lt;/p&gt;
&lt;div class=&quot;imageblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;img src=&quot;https://github.com/user-attachments/assets/baaef59e-5e32-4899-a3c9-0b3b4588f857&quot; alt=&quot;Screenshot showing core::f32::consts completions with a lot of decimals&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23262&quot;&gt;&lt;code&gt;#23262&lt;/code&gt;&lt;/a&gt; add &lt;code&gt;missing-body&lt;/code&gt; diagnostic.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;performance-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#performance-improvements&quot;&gt;&lt;/a&gt;Performance Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23190&quot;&gt;&lt;code&gt;#23190&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t lower the signature again in inference, fetch it from other queries instead.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23297&quot;&gt;&lt;code&gt;#23297&lt;/code&gt;&lt;/a&gt; (first contribution) follow symlinks when scanning the sysroot for proc macro dylibs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23279&quot;&gt;&lt;code&gt;#23279&lt;/code&gt;&lt;/a&gt; fix printing of float bit patterns on hover.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23249&quot;&gt;&lt;code&gt;#23249&lt;/code&gt;&lt;/a&gt; accept &lt;code&gt;Self&lt;/code&gt; as non-leading path segment in attribute paths.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23246&quot;&gt;&lt;code&gt;#23246&lt;/code&gt;&lt;/a&gt; allow inner attributes on blocks in tuple expressions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22662&quot;&gt;&lt;code&gt;#22662&lt;/code&gt;&lt;/a&gt; avoid type unification errors in term search.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23163&quot;&gt;&lt;code&gt;#23163&lt;/code&gt;&lt;/a&gt; fix parsing of &lt;code&gt;self::&lt;/code&gt; in function param list.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23270&quot;&gt;&lt;code&gt;#23270&lt;/code&gt;&lt;/a&gt; fix handling of &lt;code&gt;#[unsafe()]&lt;/code&gt; attributes without inner meta.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23248&quot;&gt;&lt;code&gt;#23248&lt;/code&gt;&lt;/a&gt; (first contribution) use &lt;code&gt;cargo install --locked&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23265&quot;&gt;&lt;code&gt;#23265&lt;/code&gt;&lt;/a&gt; (first contribution) reduce the scope of the marketplace tokens.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23218&quot;&gt;&lt;code&gt;#23218&lt;/code&gt;&lt;/a&gt; store doc comments as their own node and not as &lt;code&gt;COMMENT&lt;/code&gt; trivia.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23271&quot;&gt;&lt;code&gt;#23271&lt;/code&gt;&lt;/a&gt; merge &lt;code&gt;Expr::Unsafe&lt;/code&gt; into &lt;code&gt;Expr::Block&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23292&quot;&gt;&lt;code&gt;#23292&lt;/code&gt;&lt;/a&gt; make &lt;code&gt;NamedTempFile&lt;/code&gt; writable on creation.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #343</title>
        <pubDate>Mon, 31 Aug 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/08/31/changelog-343.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/08/31/changelog-343.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/f8996691e991a4dc3c6f135e0fc04fc5561e4e9a&quot;&gt;&lt;code&gt;f899669&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-08-31&quot;&gt;&lt;code&gt;2026-08-31&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.3033&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23213&quot;&gt;&lt;code&gt;#23213&lt;/code&gt;&lt;/a&gt; offer &quot;Extract variable&quot; on field names in record expressions.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23232&quot;&gt;&lt;code&gt;#23232&lt;/code&gt;&lt;/a&gt; (first contribution) fix inference of never type in array repeat expressions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23206&quot;&gt;&lt;code&gt;#23206&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23257&quot;&gt;&lt;code&gt;#23257&lt;/code&gt;&lt;/a&gt; switch from &lt;code&gt;temp-dir&lt;/code&gt; to a homemade &lt;code&gt;NamedTempFile&lt;/code&gt; implementation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23184&quot;&gt;&lt;code&gt;#23184&lt;/code&gt;&lt;/a&gt; fix unsafeck for e.g. &lt;code&gt;&amp;amp;raw const *&amp;amp;raw const *&amp;amp;raw const *&amp;amp;2&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23162&quot;&gt;&lt;code&gt;#23162&lt;/code&gt;&lt;/a&gt; fix HIR lowering of associated trait function parameters.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23176&quot;&gt;&lt;code&gt;#23176&lt;/code&gt;&lt;/a&gt; push a generic params scope for consts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23216&quot;&gt;&lt;code&gt;#23216&lt;/code&gt;&lt;/a&gt; fix &lt;code&gt;&amp;#8594;&lt;/code&gt; completions inside macro calls.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22901&quot;&gt;&lt;code&gt;#22901&lt;/code&gt;&lt;/a&gt; strip leading asterisk from block doc comments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23235&quot;&gt;&lt;code&gt;#23235&lt;/code&gt;&lt;/a&gt; fix some subtle bugs in docs rendering.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23245&quot;&gt;&lt;code&gt;#23245&lt;/code&gt;&lt;/a&gt; print the ABI of &lt;code&gt;fn&lt;/code&gt; pointers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23229&quot;&gt;&lt;code&gt;#23229&lt;/code&gt;&lt;/a&gt; fix panic in &lt;code&gt;unresolved_field&lt;/code&gt; when accessing numeric fields in unions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23212&quot;&gt;&lt;code&gt;#23212&lt;/code&gt;&lt;/a&gt; fix panic when dereferencing unresolved aliases.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23250&quot;&gt;&lt;code&gt;#23250&lt;/code&gt;&lt;/a&gt; fix a panic on hover with types like &lt;code&gt;impl for&amp;lt;'b&amp;gt; Fn(&amp;amp;dyn Fn() &amp;#8594; &amp;amp;'b u8)&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23256&quot;&gt;&lt;code&gt;#23256&lt;/code&gt;&lt;/a&gt; fix hover with &lt;code&gt;impl Trait&lt;/code&gt; and generics.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23242&quot;&gt;&lt;code&gt;#23242&lt;/code&gt;&lt;/a&gt; fix parsing of range patterns inside parentheses.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23238&quot;&gt;&lt;code&gt;#23238&lt;/code&gt;&lt;/a&gt; fix a panic on macro calls in &lt;code&gt;extract_variable&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23233&quot;&gt;&lt;code&gt;#23233&lt;/code&gt;&lt;/a&gt; require analysis changes made using AI to reference &lt;code&gt;rustc&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #342</title>
        <pubDate>Mon, 24 Aug 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/08/24/changelog-342.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/08/24/changelog-342.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/5c156cdfb047ea171ba255dcdcd86236d98a389e&quot;&gt;&lt;code&gt;5c156cd&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-08-24&quot;&gt;&lt;code&gt;2026-08-24&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.3025&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23147&quot;&gt;&lt;code&gt;#23147&lt;/code&gt;&lt;/a&gt; add &lt;code&gt;unary-operator-cannot-be-applied&lt;/code&gt; diagnostic.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;performance-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#performance-improvements&quot;&gt;&lt;/a&gt;Performance Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23079&quot;&gt;&lt;code&gt;#23079&lt;/code&gt;&lt;/a&gt; optimize the heck out of the storage of token trees (saves 32 MB on &lt;code&gt;self&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23186&quot;&gt;&lt;code&gt;#23186&lt;/code&gt;&lt;/a&gt; (first contribution) allow &lt;code&gt;asm!&lt;/code&gt; label blocks to diverge.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23202&quot;&gt;&lt;code&gt;#23202&lt;/code&gt;&lt;/a&gt; (first contribution) use owner expression store for anonymous consts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23134&quot;&gt;&lt;code&gt;#23134&lt;/code&gt;&lt;/a&gt; accept trailing comma on built-in macro calls.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23201&quot;&gt;&lt;code&gt;#23201&lt;/code&gt;&lt;/a&gt; prevent stack overflow with recursive ADT layouts.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23214&quot;&gt;&lt;code&gt;#23214&lt;/code&gt;&lt;/a&gt; (first contribution) use Cargo build directory for flycheck logs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23166&quot;&gt;&lt;code&gt;#23166&lt;/code&gt;&lt;/a&gt; download all build artifacts in a single step.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23168&quot;&gt;&lt;code&gt;#23168&lt;/code&gt;&lt;/a&gt; drop &lt;code&gt;zigbuild&lt;/code&gt; support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23172&quot;&gt;&lt;code&gt;#23172&lt;/code&gt;&lt;/a&gt; split VSIX publishing into different jobs and skip duplicates.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #341</title>
        <pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/08/17/changelog-341.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/08/17/changelog-341.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/bb3bbbd9e4529cbf1a6392d5953f03eb01af3792&quot;&gt;&lt;code&gt;bb3bbbd&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-08-17&quot;&gt;&lt;code&gt;2026-08-17&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.3016&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22325&quot;&gt;&lt;code&gt;#22325&lt;/code&gt;&lt;/a&gt; (first contribution) support &lt;code&gt;Reborrow&lt;/code&gt; and &lt;code&gt;CoerceShared&lt;/code&gt; built-in derives.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23109&quot;&gt;&lt;code&gt;#23109&lt;/code&gt;&lt;/a&gt; (first contribution) offer &lt;code&gt;replace_arith_op&lt;/code&gt; on references, too.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23159&quot;&gt;&lt;code&gt;#23159&lt;/code&gt;&lt;/a&gt; (first contribution) don&amp;#8217;t panic on non-ASCII character after a short frontmatter closing fence.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23078&quot;&gt;&lt;code&gt;#23078&lt;/code&gt;&lt;/a&gt; (first contribution) normalize associated types in orphan check.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23118&quot;&gt;&lt;code&gt;#23118&lt;/code&gt;&lt;/a&gt; avoid panic with mismatched associated type parameters.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23107&quot;&gt;&lt;code&gt;#23107&lt;/code&gt;&lt;/a&gt; fix off-by-one in lifetime binders when lowering &lt;code&gt;dyn Trait&amp;lt;'a&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23103&quot;&gt;&lt;code&gt;#23103&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t consider locals of async functions as upvars of the returned coroutine.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23072&quot;&gt;&lt;code&gt;#23072&lt;/code&gt;&lt;/a&gt; replace unresolved type variables during impl selection.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23138&quot;&gt;&lt;code&gt;#23138&lt;/code&gt;&lt;/a&gt; return an error const to the solver when consteval fails.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23115&quot;&gt;&lt;code&gt;#23115&lt;/code&gt;&lt;/a&gt; lower range expressions during HIR lowering.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23127&quot;&gt;&lt;code&gt;#23127&lt;/code&gt;&lt;/a&gt; handle divergence correctly in cases like &lt;code&gt;break return&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23120&quot;&gt;&lt;code&gt;#23120&lt;/code&gt;&lt;/a&gt; fix a panic in &lt;code&gt;resolve_path&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23117&quot;&gt;&lt;code&gt;#23117&lt;/code&gt;&lt;/a&gt; add parentheses in some common cases of &lt;code&gt;type_mismatch&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23122&quot;&gt;&lt;code&gt;#23122&lt;/code&gt;&lt;/a&gt; handle functions defined by macros in &lt;code&gt;inline_call&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22225&quot;&gt;&lt;code&gt;#22225&lt;/code&gt;&lt;/a&gt; check original type in &lt;code&gt;replace_arith_op&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23111&quot;&gt;&lt;code&gt;#23111&lt;/code&gt;&lt;/a&gt; ensure every workspace has a proc macro server.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23140&quot;&gt;&lt;code&gt;#23140&lt;/code&gt;&lt;/a&gt; fix &lt;code&gt;rustc_private&lt;/code&gt; support for &lt;code&gt;rustc_proc_macro&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23112&quot;&gt;&lt;code&gt;#23112&lt;/code&gt;&lt;/a&gt; avoid newlines in &quot;overly long loop&quot; message.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23123&quot;&gt;&lt;code&gt;#23123&lt;/code&gt;&lt;/a&gt; let &lt;code&gt;pad16&lt;/code&gt; take an enum instead of a bool.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23121&quot;&gt;&lt;code&gt;#23121&lt;/code&gt;&lt;/a&gt; build &lt;code&gt;armhf&lt;/code&gt; binaries inside a container.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23108&quot;&gt;&lt;code&gt;#23108&lt;/code&gt;&lt;/a&gt; support multiple stable releases in one day.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #340</title>
        <pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/08/10/changelog-340.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/08/10/changelog-340.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/57411b3a0fb0181ed5965f6541d5ed39a9d79d4c&quot;&gt;&lt;code&gt;57411b3&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-08-10&quot;&gt;&lt;code&gt;2026-08-10&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.3005&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23082&quot;&gt;&lt;code&gt;#23082&lt;/code&gt;&lt;/a&gt; (first contribution) add &lt;code&gt;replace_arith_with_strict&lt;/code&gt; assist.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23043&quot;&gt;&lt;code&gt;#23043&lt;/code&gt;&lt;/a&gt; remove broken and incomplete borrow checker.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23042&quot;&gt;&lt;code&gt;#23042&lt;/code&gt;&lt;/a&gt; support &lt;code&gt;#[rustc_must_implement_one_of]&lt;/code&gt; in assists.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;performance-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#performance-improvements&quot;&gt;&lt;/a&gt;Performance Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23056&quot;&gt;&lt;code&gt;#23056&lt;/code&gt;&lt;/a&gt; optimize item tree memory usage (saves 29 MB on &lt;code&gt;self&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23001&quot;&gt;&lt;code&gt;#23001&lt;/code&gt;&lt;/a&gt; save an allocation in lifetime handling.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23014&quot;&gt;&lt;code&gt;#23014&lt;/code&gt;&lt;/a&gt; (first contribution) accept trailing &lt;code&gt;self&lt;/code&gt; in paths.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23020&quot;&gt;&lt;code&gt;#23020&lt;/code&gt;&lt;/a&gt; (first contribution) parse inner attributes in loop bodies.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23070&quot;&gt;&lt;code&gt;#23070&lt;/code&gt;&lt;/a&gt; (first contribution) avoid adding some extra spaces to function signatures.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23055&quot;&gt;&lt;code&gt;#23055&lt;/code&gt;&lt;/a&gt; allow struct literals in match guards.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23077&quot;&gt;&lt;code&gt;#23077&lt;/code&gt;&lt;/a&gt; parse &lt;code&gt;0 .. | _&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23016&quot;&gt;&lt;code&gt;#23016&lt;/code&gt;&lt;/a&gt; resolve assignment LHS in its expression scope.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23085&quot;&gt;&lt;code&gt;#23085&lt;/code&gt;&lt;/a&gt; merge the inference code for &lt;code&gt;let&lt;/code&gt; expressions and statements.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23008&quot;&gt;&lt;code&gt;#23008&lt;/code&gt;&lt;/a&gt; fix &lt;code&gt;ExprScopes&lt;/code&gt; handling of expressions inside patterns.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23017&quot;&gt;&lt;code&gt;#23017&lt;/code&gt;&lt;/a&gt; allow diverging RHS in destructuring assignments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23040&quot;&gt;&lt;code&gt;#23040&lt;/code&gt;&lt;/a&gt; fix upvars query for const blocks inside closures.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23096&quot;&gt;&lt;code&gt;#23096&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t declare a value namespace constructor for struct and enum variants if it doesn&amp;#8217;t exist.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22899&quot;&gt;&lt;code&gt;#22899&lt;/code&gt;&lt;/a&gt; support macros in &lt;code&gt;#[doc]&lt;/code&gt; attributes in IDE features.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23059&quot;&gt;&lt;code&gt;#23059&lt;/code&gt;&lt;/a&gt; fix a panic caused by bound variables.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22922&quot;&gt;&lt;code&gt;#22922&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t panic on &lt;code&gt;m!('a)&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23019&quot;&gt;&lt;code&gt;#23019&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t panic on &lt;code&gt;[usize; &quot;&quot;]&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22974&quot;&gt;&lt;code&gt;#22974&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23034&quot;&gt;&lt;code&gt;#23034&lt;/code&gt;&lt;/a&gt; propagate macro expansion depth across body and block boundaries.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23021&quot;&gt;&lt;code&gt;#23021&lt;/code&gt;&lt;/a&gt; always allocate anonymous consts for C strings and byte string literals.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23032&quot;&gt;&lt;code&gt;#23032&lt;/code&gt;&lt;/a&gt; account for trailing line continuations in byte strings.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23028&quot;&gt;&lt;code&gt;#23028&lt;/code&gt;&lt;/a&gt; preserve trailing text when &lt;code&gt;InsertReplaceEdit&lt;/code&gt; is unsupported.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23036&quot;&gt;&lt;code&gt;#23036&lt;/code&gt;&lt;/a&gt; make &lt;code&gt;pub macro&lt;/code&gt;s available to reverse dependencies.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23054&quot;&gt;&lt;code&gt;#23054&lt;/code&gt;&lt;/a&gt; parse inline asm with keyword as operand name.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22994&quot;&gt;&lt;code&gt;#22994&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23015&quot;&gt;&lt;code&gt;#23015&lt;/code&gt;&lt;/a&gt; exclude unit, never and unknown types from term search.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21846&quot;&gt;&lt;code&gt;#21846&lt;/code&gt;&lt;/a&gt; pass &lt;code&gt;-Zjson-target-spec&lt;/code&gt; to Cargo when needed.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23071&quot;&gt;&lt;code&gt;#23071&lt;/code&gt;&lt;/a&gt; (first contribution) support built-in derives in &lt;code&gt;Param::parent_fn&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23010&quot;&gt;&lt;code&gt;#23010&lt;/code&gt;&lt;/a&gt; install a single-threaded &lt;code&gt;rayon&lt;/code&gt; pool in non-parallel &lt;code&gt;analysis-stats&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23037&quot;&gt;&lt;code&gt;#23037&lt;/code&gt;&lt;/a&gt; support quiet mode in &lt;code&gt;rust-analyzer diagnostics&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23041&quot;&gt;&lt;code&gt;#23041&lt;/code&gt;&lt;/a&gt; only show progress bars on TTYs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23047&quot;&gt;&lt;code&gt;#23047&lt;/code&gt;&lt;/a&gt; use &lt;code&gt;rustc_type_ir::try_visit&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23013&quot;&gt;&lt;code&gt;#23013&lt;/code&gt;&lt;/a&gt; bump &lt;code&gt;salsa&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23002&quot;&gt;&lt;code&gt;#23002&lt;/code&gt;&lt;/a&gt; bump &lt;code&gt;gen-lsp-types&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #339</title>
        <pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/08/03/changelog-339.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/08/03/changelog-339.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/b54a82b321c9617c5cf0b07ac0f12c08f7bc5902&quot;&gt;&lt;code&gt;b54a82b&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-08-03&quot;&gt;&lt;code&gt;2026-08-03&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.2997&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22306&quot;&gt;&lt;code&gt;#22306&lt;/code&gt;&lt;/a&gt; emit &lt;code&gt;inactive-code&lt;/code&gt; diagnostics in macros.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22959&quot;&gt;&lt;code&gt;#22959&lt;/code&gt;&lt;/a&gt; support &lt;code&gt;CovariantUnsafeCell&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;performance-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#performance-improvements&quot;&gt;&lt;/a&gt;Performance Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22966&quot;&gt;&lt;code&gt;#22966&lt;/code&gt;&lt;/a&gt; avoid having a separate query for defined opaques.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22886&quot;&gt;&lt;code&gt;#22886&lt;/code&gt;&lt;/a&gt; (first contribution) fix a glob import shadowing bug.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22964&quot;&gt;&lt;code&gt;#22964&lt;/code&gt;&lt;/a&gt; (first contribution) show qualified paths on collisions in &lt;code&gt;type-mismatch&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22947&quot;&gt;&lt;code&gt;#22947&lt;/code&gt;&lt;/a&gt; (first contribution) fix error code for &lt;code&gt;mismatched-arg-count&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22977&quot;&gt;&lt;code&gt;#22977&lt;/code&gt;&lt;/a&gt; (first contribution) handle disallowed names in &lt;code&gt;unlinked_file&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22996&quot;&gt;&lt;code&gt;#22996&lt;/code&gt;&lt;/a&gt; (first contribution) parse multi-line component arrays in &lt;code&gt;rust-toolchain.toml&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22743&quot;&gt;&lt;code&gt;#22743&lt;/code&gt;&lt;/a&gt; resolve path in all namespaces in &lt;code&gt;resolve_path&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22943&quot;&gt;&lt;code&gt;#22943&lt;/code&gt;&lt;/a&gt; mark auto traits as coinductive.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22932&quot;&gt;&lt;code&gt;#22932&lt;/code&gt;&lt;/a&gt; fix a panic with large discriminant values.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22930&quot;&gt;&lt;code&gt;#22930&lt;/code&gt;&lt;/a&gt; fix a panic on &lt;code&gt;&amp;lt;S as S&amp;gt;::S&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22933&quot;&gt;&lt;code&gt;#22933&lt;/code&gt;&lt;/a&gt; fix a &lt;code&gt;Semantics&lt;/code&gt; panic on &lt;code&gt;include!&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22938&quot;&gt;&lt;code&gt;#22938&lt;/code&gt;&lt;/a&gt; fix a panic with HRTB closure arguments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22957&quot;&gt;&lt;code&gt;#22957&lt;/code&gt;&lt;/a&gt; hide parameter inlay hints with matching raw identifiers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22965&quot;&gt;&lt;code&gt;#22965&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t allocate anonymous consts for bare paths in blocks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22956&quot;&gt;&lt;code&gt;#22956&lt;/code&gt;&lt;/a&gt; double stack size to 16MB.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22948&quot;&gt;&lt;code&gt;#22948&lt;/code&gt;&lt;/a&gt; implement &lt;code&gt;slice_get_unchecked&lt;/code&gt; in MIR debug execution, to fix &lt;code&gt;bitflags!&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22992&quot;&gt;&lt;code&gt;#22992&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t panic on a self-referential &lt;code&gt;impl Trait&lt;/code&gt; function.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22993&quot;&gt;&lt;code&gt;#22993&lt;/code&gt;&lt;/a&gt; handle backslash in &lt;code&gt;r&quot;{foo}&quot;&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23004&quot;&gt;&lt;code&gt;#23004&lt;/code&gt;&lt;/a&gt; parse &lt;code&gt;|| 1.. .field&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/23003&quot;&gt;&lt;code&gt;#23003&lt;/code&gt;&lt;/a&gt; add reference when completing a parameter where coercion applies.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22940&quot;&gt;&lt;code&gt;#22940&lt;/code&gt;&lt;/a&gt; match virtual paths by components.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22660&quot;&gt;&lt;code&gt;#22660&lt;/code&gt;&lt;/a&gt; respect &lt;code&gt;references.exclude{Tests,Imports}&lt;/code&gt; in references lens.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22903&quot;&gt;&lt;code&gt;#22903&lt;/code&gt;&lt;/a&gt; only try to parse &lt;code&gt;discoverConfig&lt;/code&gt; command stdout.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22937&quot;&gt;&lt;code&gt;#22937&lt;/code&gt;&lt;/a&gt; (first contribution) disallow postix snippets with item scope.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22958&quot;&gt;&lt;code&gt;#22958&lt;/code&gt;&lt;/a&gt; (first contribution) temporarily re-add &lt;code&gt;--lockfile-path&lt;/code&gt; support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22909&quot;&gt;&lt;code&gt;#22909&lt;/code&gt;&lt;/a&gt; (first contribution) make &lt;code&gt;analysis-stats&lt;/code&gt; progress bar Unicode-safe.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22945&quot;&gt;&lt;code&gt;#22945&lt;/code&gt;&lt;/a&gt; store &quot;liberated&quot; closure signatures in &lt;code&gt;InferenceResult&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22864&quot;&gt;&lt;code&gt;#22864&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22997&quot;&gt;&lt;code&gt;#22997&lt;/code&gt;&lt;/a&gt; fully port &lt;code&gt;ExprScopes&lt;/code&gt; to take a visitor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22808&quot;&gt;&lt;code&gt;#22808&lt;/code&gt;&lt;/a&gt; remove &lt;code&gt;clone_for_update&lt;/code&gt; and mutable rowan APIs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22998&quot;&gt;&lt;code&gt;#22998&lt;/code&gt;&lt;/a&gt; bump &lt;code&gt;rowan&lt;/code&gt; to the version without mutable APIs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22969&quot;&gt;&lt;code&gt;#22969&lt;/code&gt;&lt;/a&gt; simplify &lt;code&gt;SourceChange&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22939&quot;&gt;&lt;code&gt;#22939&lt;/code&gt;&lt;/a&gt; bump &lt;code&gt;rustc_next_trait_solver&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #338</title>
        <pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/07/27/changelog-338.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/07/27/changelog-338.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/12c3381f0b17b8eec21075d1c72fd010996a9bda&quot;&gt;&lt;code&gt;12c3381&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-07-27&quot;&gt;&lt;code&gt;2026-07-27&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.2989&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22818&quot;&gt;&lt;code&gt;#22818&lt;/code&gt;&lt;/a&gt; implement lowering of HRTBs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22851&quot;&gt;&lt;code&gt;#22851&lt;/code&gt;&lt;/a&gt; add diagnostic for struct patterns with missing fields.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22854&quot;&gt;&lt;code&gt;#22854&lt;/code&gt;&lt;/a&gt; record and show obligation chain for unimplemented trait diagnostics:&lt;/p&gt;
&lt;div class=&quot;imageblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;img src=&quot;https://github.com/user-attachments/assets/bcbce5d5-ff91-4747-a8d6-5c73b06f14f9&quot; alt=&quot;Screenshot showing the obligation chain for an unsatisfied trait bound&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;performance-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#performance-improvements&quot;&gt;&lt;/a&gt;Performance Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22862&quot;&gt;&lt;code&gt;#22862&lt;/code&gt;&lt;/a&gt; shrink &lt;code&gt;hir::Expr&lt;/code&gt; from 56 to 48 bytes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22860&quot;&gt;&lt;code&gt;#22860&lt;/code&gt;&lt;/a&gt; pack &lt;code&gt;ExprOrPatId&lt;/code&gt; when stored and shrink &lt;code&gt;ScopeData&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22587&quot;&gt;&lt;code&gt;#22587&lt;/code&gt;&lt;/a&gt; reduce scope of cache priming.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22865&quot;&gt;&lt;code&gt;#22865&lt;/code&gt;&lt;/a&gt; (first contribution) respawn proc macro servers after stopping them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22861&quot;&gt;&lt;code&gt;#22861&lt;/code&gt;&lt;/a&gt; record expressions in types in &lt;code&gt;ExprScope&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22852&quot;&gt;&lt;code&gt;#22852&lt;/code&gt;&lt;/a&gt; eagerly normalize &lt;code&gt;IntoFuture::Output&lt;/code&gt; for &lt;code&gt;await&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22849&quot;&gt;&lt;code&gt;#22849&lt;/code&gt;&lt;/a&gt; fix &lt;code&gt;syntax-bridge&lt;/code&gt; panic when splitting float.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22855&quot;&gt;&lt;code&gt;#22855&lt;/code&gt;&lt;/a&gt; fix &lt;code&gt;InferenceContext:identity_args&lt;/code&gt; using the wrong &lt;code&gt;DefId&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22857&quot;&gt;&lt;code&gt;#22857&lt;/code&gt;&lt;/a&gt; handle enum variants in next-solver &lt;code&gt;generics&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22896&quot;&gt;&lt;code&gt;#22896&lt;/code&gt;&lt;/a&gt; use &lt;code&gt;bool&lt;/code&gt; for the guard type in expected type analysis.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22881&quot;&gt;&lt;code&gt;#22881&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t interpret &lt;code&gt;#[rust_analyzer]&lt;/code&gt; as &lt;code&gt;#[rust_analyzer::rust_fixture]&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22918&quot;&gt;&lt;code&gt;#22918&lt;/code&gt;&lt;/a&gt; prefer &lt;code&gt;alloc&lt;/code&gt; over &lt;code&gt;std&lt;/code&gt; paths when &lt;code&gt;preferNoStd&lt;/code&gt; is set.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22843&quot;&gt;&lt;code&gt;#22843&lt;/code&gt;&lt;/a&gt; fix panic when adding unknown fields to macro-defined structs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22892&quot;&gt;&lt;code&gt;#22892&lt;/code&gt;&lt;/a&gt; fix &lt;code&gt;merge_imports&lt;/code&gt; panic with invalid paths.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22919&quot;&gt;&lt;code&gt;#22919&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t offer &lt;code&gt;replace_qualified_name_with_use&lt;/code&gt; on unqualified paths.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22924&quot;&gt;&lt;code&gt;#22924&lt;/code&gt;&lt;/a&gt; fix a crash in generic parameter handling.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22923&quot;&gt;&lt;code&gt;#22923&lt;/code&gt;&lt;/a&gt; handle cycles in &lt;code&gt;impl_trait_with_diagnostics&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22905&quot;&gt;&lt;code&gt;#22905&lt;/code&gt;&lt;/a&gt; attach database to parallel &lt;code&gt;analysis-stats&lt;/code&gt; inference workers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22898&quot;&gt;&lt;code&gt;#22898&lt;/code&gt;&lt;/a&gt; add parentheses when required in &lt;code&gt;invert_if&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22548&quot;&gt;&lt;code&gt;#22548&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22611&quot;&gt;&lt;code&gt;#22611&lt;/code&gt;&lt;/a&gt; add a few more database lifetimes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22831&quot;&gt;&lt;code&gt;#22831&lt;/code&gt;&lt;/a&gt; migrate &lt;code&gt;HirDatabase&lt;/code&gt; and remove &lt;code&gt;#[query_group]&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22867&quot;&gt;&lt;code&gt;#22867&lt;/code&gt;&lt;/a&gt; merge &lt;code&gt;WherePredicate::ForLifetimes&lt;/code&gt; and &lt;code&gt;WherePredicate::TypeBound&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22883&quot;&gt;&lt;code&gt;#22883&lt;/code&gt;&lt;/a&gt; add &lt;code&gt;Module::path_segments&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22914&quot;&gt;&lt;code&gt;#22914&lt;/code&gt;&lt;/a&gt; clean up support code for pre-1.94 toolchains.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #337</title>
        <pubDate>Mon, 20 Jul 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/07/20/changelog-337.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/07/20/changelog-337.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/cac0779549328e4bd4b808000c03307f1721f869&quot;&gt;&lt;code&gt;cac0779&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-07-20&quot;&gt;&lt;code&gt;2026-07-20&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.2981&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22283&quot;&gt;&lt;code&gt;#22283&lt;/code&gt;&lt;/a&gt; early late classification of lifetimes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22791&quot;&gt;&lt;code&gt;#22791&lt;/code&gt;&lt;/a&gt; re-enable auto trait inference.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22777&quot;&gt;&lt;code&gt;#22777&lt;/code&gt;&lt;/a&gt; treat library files as truly immutable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22464&quot;&gt;&lt;code&gt;#22464&lt;/code&gt;&lt;/a&gt; hide private fields on hover depending on context.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22811&quot;&gt;&lt;code&gt;#22811&lt;/code&gt;&lt;/a&gt; add capture hints to coroutines.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22813&quot;&gt;&lt;code&gt;#22813&lt;/code&gt;&lt;/a&gt; add &lt;code&gt;return-outside-of-function&lt;/code&gt; diagnostic.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;performance-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#performance-improvements&quot;&gt;&lt;/a&gt;Performance Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22794&quot;&gt;&lt;code&gt;#22794&lt;/code&gt;&lt;/a&gt; avoid an allocation when converting case in flyimport.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22634&quot;&gt;&lt;code&gt;#22634&lt;/code&gt;&lt;/a&gt; (first contribution) don&amp;#8217;t panic when restarting flycheck with an empty handle list.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22822&quot;&gt;&lt;code&gt;#22822&lt;/code&gt;&lt;/a&gt; (first contribution) fix panic on functions and proc macros with the same name.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22784&quot;&gt;&lt;code&gt;#22784&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t &lt;code&gt;#[macro_use]&lt;/code&gt; the sysroot crates.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22773&quot;&gt;&lt;code&gt;#22773&lt;/code&gt;&lt;/a&gt; resolve non-plain paths in blocks correctly.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22747&quot;&gt;&lt;code&gt;#22747&lt;/code&gt;&lt;/a&gt; reimplement the &lt;code&gt;crate_supports_no_std&lt;/code&gt; syntactic heuristic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22832&quot;&gt;&lt;code&gt;#22832&lt;/code&gt;&lt;/a&gt; correctly record binding owners in coroutines.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22825&quot;&gt;&lt;code&gt;#22825&lt;/code&gt;&lt;/a&gt; respect &lt;code&gt;hover.documentation.enable&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22483&quot;&gt;&lt;code&gt;#22483&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t assume array destructuring assignments with rest pattern are constant-sized.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22583&quot;&gt;&lt;code&gt;#22583&lt;/code&gt;&lt;/a&gt; update &lt;code&gt;render_const_using_debug_impl&lt;/code&gt; for recent standard library changes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22804&quot;&gt;&lt;code&gt;#22804&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t update existing parent inference results for anonymous consts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22810&quot;&gt;&lt;code&gt;#22810&lt;/code&gt;&lt;/a&gt; stop leaking bound variables from skipped binders.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22827&quot;&gt;&lt;code&gt;#22827&lt;/code&gt;&lt;/a&gt; fix panic on type bounds after macro calls caused by parser recovery.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22789&quot;&gt;&lt;code&gt;#22789&lt;/code&gt;&lt;/a&gt; fix invalid &lt;code&gt;pattern_matching_variant&lt;/code&gt; lowering due to recovery.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22759&quot;&gt;&lt;code&gt;#22759&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22782&quot;&gt;&lt;code&gt;#22782&lt;/code&gt;&lt;/a&gt; use &lt;code&gt;quote!&lt;/code&gt; to avoid some &lt;code&gt;unwrap&lt;/code&gt; panics in &lt;code&gt;SyntaxFactory&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22792&quot;&gt;&lt;code&gt;#22792&lt;/code&gt;&lt;/a&gt; preserve whitespace from macro inputs in &lt;code&gt;extract_variable&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22819&quot;&gt;&lt;code&gt;#22819&lt;/code&gt;&lt;/a&gt; only update the status if the message is different when the client doesn&amp;#8217;t support &lt;code&gt;experimental/serverStatus&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22780&quot;&gt;&lt;code&gt;#22780&lt;/code&gt;&lt;/a&gt; remove &lt;code&gt;&lt;mark&gt;[salsa::cycle]&lt;/code&gt; support from &lt;code&gt;&lt;/mark&gt;[query_group]&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22814&quot;&gt;&lt;code&gt;#22814&lt;/code&gt;&lt;/a&gt; migrate &lt;code&gt;HirDatabase::borrowck&lt;/code&gt; away from &lt;code&gt;#[query_group]&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22534&quot;&gt;&lt;code&gt;#22534&lt;/code&gt;&lt;/a&gt; turn &lt;code&gt;BlockLoc&lt;/code&gt; into a tracked struct, take 3.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22779&quot;&gt;&lt;code&gt;#22779&lt;/code&gt;&lt;/a&gt; remove the &lt;code&gt;TreeMutator&lt;/code&gt; from &lt;code&gt;SourceChangeBuilder&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22815&quot;&gt;&lt;code&gt;#22815&lt;/code&gt;&lt;/a&gt; remove manual lifetime extension.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22778&quot;&gt;&lt;code&gt;#22778&lt;/code&gt;&lt;/a&gt; split out a session construct.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22793&quot;&gt;&lt;code&gt;#22793&lt;/code&gt;&lt;/a&gt; use &lt;code&gt;Result&lt;/code&gt; for the &lt;code&gt;lsp_server::Response&lt;/code&gt; payload.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
  </channel>
</rss>
