<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://rust-gcc.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://rust-gcc.github.io/" rel="alternate" type="text/html" /><updated>2026-04-14T22:27:25+00:00</updated><id>https://rust-gcc.github.io/feed.xml</id><title type="html">GCC Front-End For Rust</title><subtitle>Alternative Rust Compiler for GCC</subtitle><entry><title type="html">March 2026 Monthly report</title><link href="https://rust-gcc.github.io/2026/04/13/2026-03-monthly-report.html" rel="alternate" type="text/html" title="March 2026 Monthly report" /><published>2026-04-13T00:00:00+00:00</published><updated>2026-04-13T00:00:00+00:00</updated><id>https://rust-gcc.github.io/2026/04/13/2026-03-monthly-report</id><content type="html" xml:base="https://rust-gcc.github.io/2026/04/13/2026-03-monthly-report.html"><![CDATA[<h2 id="overview">Overview</h2>

<p>Thanks again to <a href="https://opensrcsec.com/">Open Source Security, inc</a> and
<a href="https://www.embecosm.com/">Embecosm</a> for their ongoing support for this
project.</p>

<h3 id="project-update">Project update</h3>

<p>The first major news this month is the acceptance of our talk “Compiling
the Linux kernel with gccrs” for RustConf 2026! Pierre-Emmanuel and
Arthur will be going to Montreal, Canada, and look forward to meeting
many of you! We have also submitted the same talk to EuroRust.</p>

<p>In terms of project management, we have decided to organize our current
milestones into greater milestones to better reflect how useful the
compiler will be. These overarching milestones are, so far, “embedded
Rust compiler”, “Rust for Linux compiler” and “General purpose
compiler”. This aims to reflect the fact that gccrs will soon be usable
as a compiler for embedded Rust programs, which will only depend on
<code class="language-plaintext highlighter-rouge">core</code> and crates depending on <code class="language-plaintext highlighter-rouge">core</code>. Once this is achieved, we will be
iterating on top of this compiler to support the <code class="language-plaintext highlighter-rouge">alloc</code> crate as well
as all of the Rust-for-Linux crates, which will enable GCC to compile
the Linux kernel in its entirety. These can be further split in at least
two - <em>compiling</em> software and creating a proper <em>executable</em> - for
example, we may have a compiler able to handle embedded software, but
which does not insert the necessary <code class="language-plaintext highlighter-rouge">Drop</code> calls, hence resulting in
incorrect behavior. This is particularly important for the kernel, as
types such as mutexes often have complex side effects as part of their
<code class="language-plaintext highlighter-rouge">Drop</code> implementation. Not being able to release a mutex in programs
compiled with gccrs would have particularly bad consequences, but being
able to <em>mis</em>-compile the kernel is still an important milestone!</p>

<p>Indicating the target GCC version does not accurately reflect the state
in which the compiler will be for that version. Our goal is to focus on
these overarching milestones, rather than having a specific set of
features in time for a specific GCC version. If you would like to use
the latest gccrs features, you will need to build the compiler from
source or use one of the releases we will put out on our Github page.</p>

<p>In terms of technical news, the compiler is now able to handle more
kernel crates, with <code class="language-plaintext highlighter-rouge">compiler_builtins</code> being added to the list this
month, and Pierre-Emmanuel focusing on the kernel’s <code class="language-plaintext highlighter-rouge">ffi</code> crate with
only a few issues to resolve. We have also added an equivalent to
<code class="language-plaintext highlighter-rouge">rustc</code> ‘s <code class="language-plaintext highlighter-rouge">-Zcrate-attr</code> command line option, which enables passing
attributes when invoking <code class="language-plaintext highlighter-rouge">gccrs</code>. This is particularly helpful for our
friends fuzzing the compiler, as <code class="language-plaintext highlighter-rouge">gccrs</code> now properly handles - and
requires - the <code class="language-plaintext highlighter-rouge">#![no_core]</code> nightly attribute to compile code without
depending on <code class="language-plaintext highlighter-rouge">core</code>. For name resolution, we have once again had to
rework our internal data structures and handling of path resolution, as
we realized that path resolution must first be done in the types
namespace, regardless of which namespace we are trying to resolve a path
in. This is due to imports and modules always being inserted in the
types namespace. While the changes are simple, they have consequences to
much of the codebase and require multiple refactoring to many of our
visitors.</p>

<p>Finally, the deadline for GSoC proposals has passed - we have received 7
proposals this year and are currently reviewing them. They are once
again of really high quality, and we thank every applicant who has
submitted one :)</p>

<h3 id="community-call">Community call</h3>

<p>We will have our next monthly community call on the 27th of April at 9am
UTC. You can subscribe to our calendar to see when the next one will be
held. The call is open to everyone, even if you would just like to
sit-in and listen. You can also subscribe to our
<a href="https://gcc.gnu.org/mailman/listinfo/gcc-rust">mailing-list</a> or join
our <a href="https://gcc-rust.zulipchat.com">Zulip chat</a> to be notified of
upcoming events.</p>

<ul>
  <li><a href="https://meet.jit.si/gccrs-community-call-april">Jitsi link</a></li>
  <li>Calendar ID:
7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com</li>
  <li><a href="https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com">Google calendar
link</a></li>
  <li><a href="https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics">iCal
link</a></li>
</ul>

<h2 id="call-for-contribution">Call for contribution</h2>

<ul>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2500">https://github.com/Rust-GCC/gccrs/issues/2500</a></p>
  </li>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2376">https://github.com/Rust-GCC/gccrs/issues/2376</a></p>
  </li>
</ul>

<h2 id="completed-activities">Completed Activities</h2>

<ul>
  <li>Fix ICE in unused var when we hit unit const type
<a href="https://github.com/rust-gcc/gccrs/pull/4518">PR4518</a></li>
  <li>Add cttz and cttz<sub>nonzero</sub> support
<a href="https://github.com/rust-gcc/gccrs/pull/4511">PR4511</a></li>
  <li>Replace usages of `chainon`
<a href="https://github.com/rust-gcc/gccrs/pull/4508">PR4508</a></li>
  <li>Strip down 1.0 resolver
<a href="https://github.com/rust-gcc/gccrs/pull/4506">PR4506</a></li>
  <li>Delete macro attribute input
<a href="https://github.com/rust-gcc/gccrs/pull/4505">PR4505</a></li>
  <li>rust: Fix ICE in function<sub>setparameters</sub>
<a href="https://github.com/rust-gcc/gccrs/pull/4501">PR4501</a></li>
  <li>gccrs: Fix ICE caused by TypeCheckBase::parse<sub>reproptions</sub>
<a href="https://github.com/rust-gcc/gccrs/pull/4500">PR4500</a></li>
  <li>Improve unit struct matching
<a href="https://github.com/rust-gcc/gccrs/pull/4499">PR4499</a></li>
  <li>Fix glob import all ICE issue
<a href="https://github.com/rust-gcc/gccrs/pull/4498">PR4498</a></li>
  <li>Remove redundant expand visitor overloads
<a href="https://github.com/rust-gcc/gccrs/pull/4497">PR4497</a></li>
  <li>gccrs: Add new test cases for old issues
<a href="https://github.com/rust-gcc/gccrs/pull/4494">PR4494</a></li>
  <li>Sync with upstream (2026-03-18):
1c73a21caf2dc83ced30f10076a682ea26e1ba71
<a href="https://github.com/rust-gcc/gccrs/pull/4491">PR4491</a></li>
  <li>Deduplicate some functions within PointerVisitor
<a href="https://github.com/rust-gcc/gccrs/pull/4489">PR4489</a></li>
  <li>Accepts `compiler<sub>builtins</sub>` and
`no<sub>builtins</sub>` attribute.
<a href="https://github.com/rust-gcc/gccrs/pull/4488">PR4488</a></li>
  <li>Use pretty printer instead ofcall to open<sub>memstream</sub>
<a href="https://github.com/rust-gcc/gccrs/pull/4487">PR4487</a></li>
  <li>testsuite:Add a testcase for setup<sub>associatedtypes</sub>
<a href="https://github.com/rust-gcc/gccrs/pull/4485">PR4485</a></li>
  <li>Add ability to inject inner attributes from CLI
<a href="https://github.com/rust-gcc/gccrs/pull/4484">PR4484</a></li>
  <li>Add enum items to value namespace as well
<a href="https://github.com/rust-gcc/gccrs/pull/4480">PR4480</a></li>
  <li>Squashing local commits
<a href="https://github.com/rust-gcc/gccrs/pull/4468">PR4468</a></li>
  <li>Intrinsic: Add `ctlz` and `ctlz<sub>nonzero</sub>` intrinsics
<a href="https://github.com/rust-gcc/gccrs/pull/4467">PR4467</a></li>
  <li>Add no<sub>std</sub> to builtin attributes
<a href="https://github.com/rust-gcc/gccrs/pull/4466">PR4466</a></li>
  <li>Sync with upstream (2026-03-05):
0970bb8565616f61c6b7a7dd0edbc829b0064703
<a href="https://github.com/rust-gcc/gccrs/pull/4464">PR4464</a></li>
  <li>enforce function qualifier order
<a href="https://github.com/rust-gcc/gccrs/pull/4463">PR4463</a></li>
  <li>feat: Implement `no<sub>core</sub>` feature gate check
<a href="https://github.com/rust-gcc/gccrs/pull/4462">PR4462</a></li>
  <li>Fix match arm scope
<a href="https://github.com/rust-gcc/gccrs/pull/4460">PR4460</a></li>
  <li>Intrinsic refactor
<a href="https://github.com/rust-gcc/gccrs/pull/4459">PR4459</a></li>
  <li>Disambiguate identifier and path patterns
<a href="https://github.com/rust-gcc/gccrs/pull/4455">PR4455</a></li>
  <li>gccrs: Fix 128-bit non-decimal integer literal saturation
<a href="https://github.com/rust-gcc/gccrs/pull/4454">PR4454</a></li>
  <li>intrinsic: Add bswap intrinsic
<a href="https://github.com/rust-gcc/gccrs/pull/4452">PR4452</a></li>
  <li>resolve: Fix ICE on ambiguous glob re-exports
<a href="https://github.com/rust-gcc/gccrs/pull/4451">PR4451</a></li>
  <li>Prevent error emission with multiple wildcards
<a href="https://github.com/rust-gcc/gccrs/pull/4450">PR4450</a></li>
  <li>rust: Explicitly instantiate FFIVec&lt;Piece&gt; template
<a href="https://github.com/rust-gcc/gccrs/pull/4446">PR4446</a></li>
  <li>lint: Fix ICE on error<sub>marknode</sub> in unused variable linter
<a href="https://github.com/rust-gcc/gccrs/pull/4438">PR4438</a></li>
  <li>Improve path resolution
<a href="https://github.com/rust-gcc/gccrs/pull/4428">PR4428</a></li>
  <li>expand: Add error check if derive has wrong item
<a href="https://github.com/rust-gcc/gccrs/pull/4359">PR4359</a></li>
  <li>nr1.0: Remove support in checking phases
<a href="https://github.com/rust-gcc/gccrs/pull/4108">PR4108</a></li>
</ul>

<h3 id="contributors-this-month">Contributors this month</h3>

<ul>
  <li><a href="https://github.com/moabo3li">Mohamed Ali</a> (new contributor!)</li>
  <li><a href="https://github.com/riogu">Egas Ribeiro</a> (new contributor!)</li>
  <li><a href="https://github.com/AhmedSaid3617">Ahmed Said</a> (new contributor!)</li>
  <li><a href="https://github.com/phi-gamma">Philipp Gesang</a> (new contributor!)</li>
  <li><a href="https://github.com/hriztam">Hritam Shrivastava</a> (new contributor!)</li>
  <li><a href="https://github.com/nsvke">Enes Çevik</a> (new contributor!)</li>
  <li><a href="https://github.com/Islam-Imad">Islam Imad</a></li>
  <li><a href="https://github.com/Pasta-coder">Jayant Chauhan</a></li>
  <li><a href="https://github.com/Harishankar14">Harishankar</a></li>
  <li><a href="https://github.com/dkm">Marc Poulhiès</a></li>
  <li><a href="https://github.com/powerboat9">Owen Avery</a></li>
  <li><a href="https://github.com/P-E-P">Pierre-Emmanuel Patry</a></li>
  <li><a href="https://github.com/CohenArthur">Arthur Cohen</a></li>
</ul>

<h3 id="overall-task-status">Overall Task Status</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>401</td>
      <td>406</td>
      <td>+5</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>117</td>
      <td>118</td>
      <td>+1</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>1225</td>
      <td>1245</td>
      <td>+20</td>
    </tr>
  </tbody>
</table>

<h3 id="bugs">Bugs</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>190</td>
      <td>192</td>
      <td>+2</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>52</td>
      <td>52</td>
      <td>-</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>605</td>
      <td>619</td>
      <td>+14</td>
    </tr>
  </tbody>
</table>

<h3 id="test-cases">Test Cases</h3>

<table>
  <thead>
    <tr>
      <th>TestCases</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Passing</td>
      <td>10598</td>
      <td>10945</td>
      <td>+347</td>
    </tr>
    <tr>
      <td>Failed</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XFAIL</td>
      <td>73</td>
      <td>73</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XPASS</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
  </tbody>
</table>

<h3 id="milestones-progress">Milestones Progress</h3>

<p>Here is the list of overarching milestones gccrs is currently targeting.
We’ll use the acronym in the following milestone tables, in the column
named “OA Milest.”.</p>

<table>
  <thead>
    <tr>
      <th>Milestone</th>
      <th>Description</th>
      <th>Acronym</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Embedded Rust 1.49 compiler 0.1</td>
      <td>The compiler is able to compile embedded Rust code</td>
      <td>EC 0.1</td>
    </tr>
    <tr>
      <td>Embedded Rust 1.49 compiler 1.0</td>
      <td>The compiler is able to compile embedded Rust code and produce valid executables</td>
      <td>EC 1.0</td>
    </tr>
    <tr>
      <td>Rust-for-Linux compiler 0.1</td>
      <td>The compiler is able to compile the Linux kernel</td>
      <td>LC 0.1</td>
    </tr>
    <tr>
      <td>Rust-for-Linux compiler 1.0</td>
      <td>The compiler is able to compile the Linux kernel and produce a runnable kernel</td>
      <td>LC 1.0</td>
    </tr>
    <tr>
      <td>General purpose Rust 1.49 compiler</td>
      <td>The compiler passes the Rust 1.49 testsuite, and handles general purpose code</td>
      <td>GC</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>OA Milest.</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Rust-for-Linux</td>
      <td>16%</td>
      <td>25%</td>
      <td>+9%</td>
      <td>1st Nov 2025</td>
      <td>-</td>
      <td>-</td>
      <td>LC 0.1</td>
    </tr>
    <tr>
      <td>Full core Late nameres issues</td>
      <td>24%</td>
      <td>24%</td>
      <td>-</td>
      <td>1st Dec 2025</td>
      <td>-</td>
      <td>-</td>
      <td>EC 0.1</td>
    </tr>
    <tr>
      <td>Full core Early nameres issues</td>
      <td>95%</td>
      <td>95%</td>
      <td>-</td>
      <td>1st Dec 2025</td>
      <td>-</td>
      <td>-</td>
      <td>EC 0.1</td>
    </tr>
    <tr>
      <td>Full core Typecheck issues</td>
      <td>12%</td>
      <td>12%</td>
      <td>-</td>
      <td>21st Jan 2026</td>
      <td>-</td>
      <td>-</td>
      <td>EC 0.1</td>
    </tr>
    <tr>
      <td>RfL build<sub>error</sub></td>
      <td>0%</td>
      <td>100%</td>
      <td>+100%</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
      <td>LC 0.1</td>
    </tr>
    <tr>
      <td>RfL compiler<sub>builtins</sub></td>
      <td>0%</td>
      <td>100%</td>
      <td>+100%</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
      <td>LC 0.1</td>
    </tr>
    <tr>
      <td>RfL ffi</td>
      <td>0%</td>
      <td>40%</td>
      <td>+40%</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
      <td>LC 0.1</td>
    </tr>
    <tr>
      <td>RfL macros</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
      <td>LC 0.1</td>
    </tr>
    <tr>
      <td>RfL uapi</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
      <td>LC 0.1</td>
    </tr>
    <tr>
      <td>RfL main kernel files</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
      <td>LC 0.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Upcoming Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>OA Milest.</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Unstable RfL features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>-</td>
      <td>1st Aug 2025</td>
      <td>LC 0.1</td>
    </tr>
    <tr>
      <td>Generic Associated Types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>LC 0.1</td>
    </tr>
    <tr>
      <td>RfL const generics</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>1st May 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>LC 0.1</td>
    </tr>
    <tr>
      <td>frontend plugin hooks</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th May 2025</td>
      <td>-</td>
      <td>7th Jul 2025</td>
      <td>GC</td>
    </tr>
    <tr>
      <td>Handling the testsuite issues</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GC</td>
    </tr>
    <tr>
      <td>main shim</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>28th Jul 2025</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GC</td>
    </tr>
    <tr>
      <td>Final core attributes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>EC 0.1</td>
    </tr>
    <tr>
      <td>Core nightly features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>EC 0.1</td>
    </tr>
    <tr>
      <td>Defered inference</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>EC 0.1</td>
    </tr>
    <tr>
      <td>Fn traits fixes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>EC 0.1</td>
    </tr>
    <tr>
      <td>Recursive types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>EC 0.1</td>
    </tr>
    <tr>
      <td>Drop</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>EC 1.0</td>
    </tr>
    <tr>
      <td>Pin, PinInit</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>EC 1.0</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Past Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Data Structures 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th Nov 2020</td>
      <td>27th Jan 2021</td>
      <td>29th Jan 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2021</td>
      <td>10th Feb 2021</td>
      <td>26th Feb 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 2 - Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>11th Feb 2021</td>
      <td>14th May 2021</td>
      <td>28th May 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 3 - Traits</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th May 2021</td>
      <td>17th Sep 2021</td>
      <td>27th Aug 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 2 - Pattern Matching</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th Sep 2021</td>
      <td>9th Dec 2021</td>
      <td>29th Nov 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Macros and cfg expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2021</td>
      <td>31st Mar 2022</td>
      <td>28th Mar 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Imports and Visibility</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>29th Mar 2022</td>
      <td>13th Jul 2022</td>
      <td>27th May 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Const Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th May 2022</td>
      <td>10th Oct 2022</td>
      <td>17th Oct 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Initial upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>10th Oct 2022</td>
      <td>13th Nov 2022</td>
      <td>13th Nov 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Upstream initial patchset</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Nov 2022</td>
      <td>13th Dec 2022</td>
      <td>19th Dec 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Update GCC’s master branch</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2023</td>
      <td>21st Feb 2023</td>
      <td>3rd Mar 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Final set of upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>16th Nov 2022</td>
      <td>1st May 2023</td>
      <td>30th Apr 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Borrow Checking 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>TBD</td>
      <td>8th Jan 2024</td>
      <td>15th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Procedural Macros 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>6th Aug 2023</td>
      <td>6th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 13.2 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>22nd Jul 2023</td>
      <td>15th Jul 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14 Stage 3</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Sep 2023</td>
      <td>20th Sep 2023</td>
      <td>1st Nov 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.1 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>2nd Jan 2024</td>
      <td>2nd Jun 2024</td>
      <td>15th Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>format<sub>args</sub>!() support</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Feb 2024</td>
      <td>-</td>
      <td>1st Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.2</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>GCC 14.2</td>
    </tr>
    <tr>
      <td>GCC 15.1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jun 2024</td>
      <td>31st Jun 2024</td>
      <td>1st Jul 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Unhandled attributes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>15th Aug 2024</td>
      <td>15th Aug 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Inline assembly</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Rustc Testsuite Adaptor</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Borrow checker improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Deref and DerefMut improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Sep 2024</td>
      <td>25th Oct 2024</td>
      <td>28th Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Indexing fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Iterator fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Auto traits improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>20th Jan 2025</td>
      <td>21st Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Lang items</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>10th Jan 2025</td>
      <td>21st Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>alloc parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>std parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Question mark operator</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Dec 2024</td>
      <td>21st Feb 2025</td>
      <td>21st Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Name resolution 2.0 rework</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Macro expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Remaining typecheck issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Oct 2024</td>
      <td>-</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2024</td>
      <td>24th Mar 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Codegen fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Oct 2024</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>black<sub>box</sub> intrinsic</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Oct 2024</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>let-else</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Specialization</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-rfl</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>19th Mar 2025</td>
      <td>15th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Downgrade to Rust 1.49</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>14th Mar 2025</td>
      <td>26th Mar 2025</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>try blocks</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>while-let loops</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>offset<sub>of</sub>!() builtin macro</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>4th Aug 2025</td>
      <td>15th Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Explicit generics with impl Trait</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>21st Jul 2025</td>
      <td>28th Mar 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final Inline assembly fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>]]></content><author><name>Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen</name></author><category term="monthly-report" /><summary type="html"><![CDATA[Overview Thanks again to Open Source Security, inc and Embecosm for their ongoing support for this project. Project update The first major news this month is the acceptance of our talk “Compiling the Linux kernel with gccrs” for RustConf 2026! Pierre-Emmanuel and Arthur will be going to Montreal, Canada, and look forward to meeting many of you! We have also submitted the same talk to EuroRust. In terms of project management, we have decided to organize our current milestones into greater milestones to better reflect how useful the compiler will be. These overarching milestones are, so far, “embedded Rust compiler”, “Rust for Linux compiler” and “General purpose compiler”. This aims to reflect the fact that gccrs will soon be usable as a compiler for embedded Rust programs, which will only depend on core and crates depending on core. Once this is achieved, we will be iterating on top of this compiler to support the alloc crate as well as all of the Rust-for-Linux crates, which will enable GCC to compile the Linux kernel in its entirety. These can be further split in at least two - compiling software and creating a proper executable - for example, we may have a compiler able to handle embedded software, but which does not insert the necessary Drop calls, hence resulting in incorrect behavior. This is particularly important for the kernel, as types such as mutexes often have complex side effects as part of their Drop implementation. Not being able to release a mutex in programs compiled with gccrs would have particularly bad consequences, but being able to mis-compile the kernel is still an important milestone! Indicating the target GCC version does not accurately reflect the state in which the compiler will be for that version. Our goal is to focus on these overarching milestones, rather than having a specific set of features in time for a specific GCC version. If you would like to use the latest gccrs features, you will need to build the compiler from source or use one of the releases we will put out on our Github page. In terms of technical news, the compiler is now able to handle more kernel crates, with compiler_builtins being added to the list this month, and Pierre-Emmanuel focusing on the kernel’s ffi crate with only a few issues to resolve. We have also added an equivalent to rustc ‘s -Zcrate-attr command line option, which enables passing attributes when invoking gccrs. This is particularly helpful for our friends fuzzing the compiler, as gccrs now properly handles - and requires - the #![no_core] nightly attribute to compile code without depending on core. For name resolution, we have once again had to rework our internal data structures and handling of path resolution, as we realized that path resolution must first be done in the types namespace, regardless of which namespace we are trying to resolve a path in. This is due to imports and modules always being inserted in the types namespace. While the changes are simple, they have consequences to much of the codebase and require multiple refactoring to many of our visitors. Finally, the deadline for GSoC proposals has passed - we have received 7 proposals this year and are currently reviewing them. They are once again of really high quality, and we thank every applicant who has submitted one :) Community call We will have our next monthly community call on the 27th of April at 9am UTC. You can subscribe to our calendar to see when the next one will be held. The call is open to everyone, even if you would just like to sit-in and listen. You can also subscribe to our mailing-list or join our Zulip chat to be notified of upcoming events. Jitsi link Calendar ID: 7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com Google calendar link iCal link Call for contribution https://github.com/Rust-GCC/gccrs/issues/2500 https://github.com/Rust-GCC/gccrs/issues/2376 Completed Activities Fix ICE in unused var when we hit unit const type PR4518 Add cttz and cttznonzero support PR4511 Replace usages of `chainon` PR4508 Strip down 1.0 resolver PR4506 Delete macro attribute input PR4505 rust: Fix ICE in functionsetparameters PR4501 gccrs: Fix ICE caused by TypeCheckBase::parsereproptions PR4500 Improve unit struct matching PR4499 Fix glob import all ICE issue PR4498 Remove redundant expand visitor overloads PR4497 gccrs: Add new test cases for old issues PR4494 Sync with upstream (2026-03-18): 1c73a21caf2dc83ced30f10076a682ea26e1ba71 PR4491 Deduplicate some functions within PointerVisitor PR4489 Accepts `compilerbuiltins` and `nobuiltins` attribute. PR4488 Use pretty printer instead ofcall to openmemstream PR4487 testsuite:Add a testcase for setupassociatedtypes PR4485 Add ability to inject inner attributes from CLI PR4484 Add enum items to value namespace as well PR4480 Squashing local commits PR4468 Intrinsic: Add `ctlz` and `ctlznonzero` intrinsics PR4467 Add nostd to builtin attributes PR4466 Sync with upstream (2026-03-05): 0970bb8565616f61c6b7a7dd0edbc829b0064703 PR4464 enforce function qualifier order PR4463 feat: Implement `nocore` feature gate check PR4462 Fix match arm scope PR4460 Intrinsic refactor PR4459 Disambiguate identifier and path patterns PR4455 gccrs: Fix 128-bit non-decimal integer literal saturation PR4454 intrinsic: Add bswap intrinsic PR4452 resolve: Fix ICE on ambiguous glob re-exports PR4451 Prevent error emission with multiple wildcards PR4450 rust: Explicitly instantiate FFIVec&lt;Piece&gt; template PR4446 lint: Fix ICE on errormarknode in unused variable linter PR4438 Improve path resolution PR4428 expand: Add error check if derive has wrong item PR4359 nr1.0: Remove support in checking phases PR4108 Contributors this month Mohamed Ali (new contributor!) Egas Ribeiro (new contributor!) Ahmed Said (new contributor!) Philipp Gesang (new contributor!) Hritam Shrivastava (new contributor!) Enes Çevik (new contributor!) Islam Imad Jayant Chauhan Harishankar Marc Poulhiès Owen Avery Pierre-Emmanuel Patry Arthur Cohen Overall Task Status Category Last Month This Month Delta TODO 401 406 +5 In Progress 117 118 +1 Completed 1225 1245 +20 Bugs Category Last Month This Month Delta TODO 190 192 +2 In Progress 52 52 - Completed 605 619 +14 Test Cases TestCases Last Month This Month Delta Passing 10598 10945 +347 Failed - - - XFAIL 73 73 - XPASS - - - Milestones Progress Here is the list of overarching milestones gccrs is currently targeting. We’ll use the acronym in the following milestone tables, in the column named “OA Milest.”. Milestone Description Acronym Embedded Rust 1.49 compiler 0.1 The compiler is able to compile embedded Rust code EC 0.1 Embedded Rust 1.49 compiler 1.0 The compiler is able to compile embedded Rust code and produce valid executables EC 1.0 Rust-for-Linux compiler 0.1 The compiler is able to compile the Linux kernel LC 0.1 Rust-for-Linux compiler 1.0 The compiler is able to compile the Linux kernel and produce a runnable kernel LC 1.0 General purpose Rust 1.49 compiler The compiler passes the Rust 1.49 testsuite, and handles general purpose code GC Milestone Last Month This Month Delta Start Date Completion Date Target OA Milest. Rust-for-Linux 16% 25% +9% 1st Nov 2025 - - LC 0.1 Full core Late nameres issues 24% 24% - 1st Dec 2025 - - EC 0.1 Full core Early nameres issues 95% 95% - 1st Dec 2025 - - EC 0.1 Full core Typecheck issues 12% 12% - 21st Jan 2026 - - EC 0.1 RfL builderror 0% 100% +100% - - - LC 0.1 RfL compilerbuiltins 0% 100% +100% - - - LC 0.1 RfL ffi 0% 40% +40% - - - LC 0.1 RfL macros 0% 0% - - - - LC 0.1 RfL uapi 0% 0% - - - - LC 0.1 RfL main kernel files 0% 0% - - - - LC 0.1 Upcoming Milestone Last Month This Month Delta Start Date Completion Date Target OA Milest. Unstable RfL features 0% 0% - 7th Jan 2025 - 1st Aug 2025 LC 0.1 Generic Associated Types 0% 0% - 15th Mar 2025 - 15th Jun 2025 LC 0.1 RfL const generics 0% 0% - 1st May 2025 - 15th Jun 2025 LC 0.1 frontend plugin hooks 0% 0% - 15th May 2025 - 7th Jul 2025 GC Handling the testsuite issues 0% 0% - 15th Sep 2024 - 15th Sep 2025 GC main shim 0% 0% - 28th Jul 2025 - 15th Sep 2025 GC Final core attributes 0% 0% -   -   EC 0.1 Core nightly features 0% 0% -   -   EC 0.1 Defered inference 0% 0% -   -   EC 0.1 Fn traits fixes 0% 0% -   -   EC 0.1 Recursive types 0% 0% -   -   EC 0.1 Drop 0% 0% -   -   EC 1.0 Pin, PinInit 0% 0% -   -   EC 1.0 Past Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Data Structures 1 - Core 100% 100% - 30th Nov 2020 27th Jan 2021 29th Jan 2021 GCC 14.1 Control Flow 1 - Core 100% 100% - 28th Jan 2021 10th Feb 2021 26th Feb 2021 GCC 14.1 Data Structures 2 - Generics 100% 100% - 11th Feb 2021 14th May 2021 28th May 2021 GCC 14.1 Data Structures 3 - Traits 100% 100% - 20th May 2021 17th Sep 2021 27th Aug 2021 GCC 14.1 Control Flow 2 - Pattern Matching 100% 100% - 20th Sep 2021 9th Dec 2021 29th Nov 2021 GCC 14.1 Macros and cfg expansion 100% 100% - 1st Dec 2021 31st Mar 2022 28th Mar 2022 GCC 14.1 Imports and Visibility 100% 100% - 29th Mar 2022 13th Jul 2022 27th May 2022 GCC 14.1 Const Generics 100% 100% - 30th May 2022 10th Oct 2022 17th Oct 2022 GCC 14.1 Initial upstream patches 100% 100% - 10th Oct 2022 13th Nov 2022 13th Nov 2022 GCC 14.1 Upstream initial patchset 100% 100% - 13th Nov 2022 13th Dec 2022 19th Dec 2022 GCC 14.1 Update GCC’s master branch 100% 100% - 1st Jan 2023 21st Feb 2023 3rd Mar 2023 GCC 14.1 Final set of upstream patches 100% 100% - 16th Nov 2022 1st May 2023 30th Apr 2023 GCC 14.1 Borrow Checking 1 100% 100% - TBD 8th Jan 2024 15th Aug 2023 GCC 14.1 Procedural Macros 1 100% 100% - 13th Apr 2023 6th Aug 2023 6th Aug 2023 GCC 14.1 GCC 13.2 Release 100% 100% - 13th Apr 2023 22nd Jul 2023 15th Jul 2023 GCC 14.1 GCC 14 Stage 3 100% 100% - 1st Sep 2023 20th Sep 2023 1st Nov 2023 GCC 14.1 GCC 14.1 Release 100% 100% - 2nd Jan 2024 2nd Jun 2024 15th Apr 2024 GCC 14.1 formatargs!() support 100% 100% - 15th Feb 2024 - 1st Apr 2024 GCC 14.1 GCC 14.2 100% 100% - 7th Jun 2024 15th Jun 2024 15th Jun 2024 GCC 14.2 GCC 15.1 100% 100% - 21st Jun 2024 31st Jun 2024 1st Jul 2024 GCC 15.1 Unhandled attributes 100% 100% - 1st Jul 2024 15th Aug 2024 15th Aug 2024 GCC 15.1 Inline assembly 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Rustc Testsuite Adaptor 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Borrow checker improvements 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Deref and DerefMut improvements 100% 100% - 28th Sep 2024 25th Oct 2024 28th Dec 2024 GCC 15.1 Indexing fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Iterator fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Auto traits improvements 100% 100% - 15th Sep 2024 20th Jan 2025 21st Dec 2024 GCC 15.1 Lang items 100% 100% - 1st Jul 2024 10th Jan 2025 21st Nov 2024 GCC 15.1 alloc parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 15.1 std parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 16.1 Question mark operator 100% 100% - 15th Dec 2024 21st Feb 2025 21st Feb 2025 GCC 15.1 Name resolution 2.0 rework 100% 100% - 1st Jun 2024 - 1st Apr 2025 GCC 15.1 Macro expansion 100% 100% - 1st Jun 2024 - 1st Jan 2025 GCC 15.1 Remaining typecheck issues 100% 100% - 21st Oct 2024 - 1st Mar 2025 GCC 15.1 cfg-core 100% 100% - 1st Dec 2024 24th Mar 2025 1st Mar 2025 GCC 15.1 Codegen fixes 100% 100% - 7th Oct 2024 1st Apr 2025 1st Mar 2025 GCC 15.1 blackbox intrinsic 100% 100% - 28th Oct 2024 - 28th Jan 2025 GCC 15.1 let-else 100% 100% - 28th Jan 2025 - 28th Feb 2025 GCC 15.1 Specialization 100% 100% - 1st Jan 2025 1st Apr 2025 1st Mar 2025 GCC 15.1 cfg-rfl 100% 100% - 7th Jan 2025 19th Mar 2025 15th Feb 2025 GCC 15.1 Downgrade to Rust 1.49 100% 100% - 14th Mar 2025 26th Mar 2025 1st Apr 2025 GCC 15.1 try blocks 100% 100% -   30th Jul 2025   GCC 16.1 while-let loops 100% 100% -   30th Jul 2025   GCC 16.1 offsetof!() builtin macro 100% 100% - 15th Mar 2025 4th Aug 2025 15th Aug 2025 GCC 16.1 Explicit generics with impl Trait 100% 100% - 28th Feb 2025 21st Jul 2025 28th Mar 2025 GCC 16.1 Final Inline assembly fixes 100% 100% -   -   GCC 16.1]]></summary></entry><entry><title type="html">February 2026 Monthly report</title><link href="https://rust-gcc.github.io/2026/03/10/2026-02-monthly-report.html" rel="alternate" type="text/html" title="February 2026 Monthly report" /><published>2026-03-10T00:00:00+00:00</published><updated>2026-03-10T00:00:00+00:00</updated><id>https://rust-gcc.github.io/2026/03/10/2026-02-monthly-report</id><content type="html" xml:base="https://rust-gcc.github.io/2026/03/10/2026-02-monthly-report.html"><![CDATA[<h2 id="overview">Overview</h2>

<p>Thanks again to <a href="https://opensrcsec.com/">Open Source Security, inc</a> and
<a href="https://www.embecosm.com/">Embecosm</a> for their ongoing support for this
project.</p>

<h3 id="project-update">Project update</h3>

<p>We have submitted an abstract to the RustConf call-for-papers, where we
hope to present various interesting compiler stories about our journey
towards <code class="language-plaintext highlighter-rouge">core</code> and compiling the Linux kernel. If accepted,
Pierre-Emmanuel and Arthur will be looking forward to meeting everyone
in Montreal in September. <code class="language-plaintext highlighter-rouge">gccrs</code> will also be at Embedded World in
Nuremberg, so feel free to drop by and talk about the project!</p>

<p>Work during the month of February has been a bit slower, between
professional travel and holidays. Nevertheless, Pierre-Emmanuel kept
chipping away at getting certain Rust-for-Linux crates to compile,
namely by reworking our attribute handling to allow more unstable
features to be processed by <code class="language-plaintext highlighter-rouge">gccrs</code>. This meant reworking our pipeline
once again, in order to split the cfg-stripping into two passes, much
like we split name resolution into multiple passes last year.</p>

<p>For the work on <code class="language-plaintext highlighter-rouge">core</code>, we are now one import resolution issue away from
getting to typechecking. We hope to fix this particular import in the
coming weeks, and to keep progressing on other middle-end <code class="language-plaintext highlighter-rouge">core</code> issues.</p>

<p>We have started receiving interest from potential Google Summer of Code
students, which is always heartwarming - we look forward to your
contributions and proposals as the application date grows closer.</p>

<h3 id="community-call">Community call</h3>

<p>We will have our next monthly community call on the 17th of March at
10am UTC. You can subscribe to our calendar to see when the next one
will be held. The call is open to everyone, even if you would just like
to sit-in and listen. You can also subscribe to our
<a href="https://gcc.gnu.org/mailman/listinfo/gcc-rust">mailing-list</a> or join
our <a href="https://gcc-rust.zulipchat.com">Zulip chat</a> to be notified of
upcoming events.</p>

<ul>
  <li><a href="https://meet.jit.si/gccrs-community-call-march">Jitsi link</a></li>
  <li>Calendar ID:
7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com</li>
  <li><a href="https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com">Google calendar
link</a></li>
  <li><a href="https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics">iCal
link</a></li>
</ul>

<h2 id="call-for-contribution">Call for contribution</h2>

<ul>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2500">https://github.com/Rust-GCC/gccrs/issues/2500</a></p>
  </li>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2376">https://github.com/Rust-GCC/gccrs/issues/2376</a></p>
  </li>
</ul>

<h2 id="completed-activities">Completed Activities</h2>

<ul>
  <li>testsuite: Add test case for macro invocation missing body
<a href="https://github.com/rust-gcc/gccrs/pull/4449">PR4449</a></li>
  <li>Add no<sub>std</sub> attribute
<a href="https://github.com/rust-gcc/gccrs/pull/4447">PR4447</a></li>
  <li>Sync with upstream (2026-02-14):
3a1bb1b70d017e4816650ed42d316accf2d93944
<a href="https://github.com/rust-gcc/gccrs/pull/4439">PR4439</a></li>
  <li>expand: Fix ICE on unimplemented RustcEncodable/Decodable derives
<a href="https://github.com/rust-gcc/gccrs/pull/4437">PR4437</a></li>
  <li>ast: Fix missing location info in derive macros
<a href="https://github.com/rust-gcc/gccrs/pull/4435">PR4435</a></li>
  <li>Remove `ProcMacroInvocLexer`
<a href="https://github.com/rust-gcc/gccrs/pull/4430">PR4430</a></li>
  <li>gccrs : TypeCheck : Enhance missing fields error message
<a href="https://github.com/rust-gcc/gccrs/pull/4429">PR4429</a></li>
  <li>parser: Fix rogue null pointer in null<sub>denotationpath</sub>
<a href="https://github.com/rust-gcc/gccrs/pull/4427">PR4427</a></li>
  <li>Improve feature collection and permit macro attribute input
<a href="https://github.com/rust-gcc/gccrs/pull/4425">PR4425</a></li>
  <li>refactor: cleanup macro invoc
<a href="https://github.com/rust-gcc/gccrs/pull/4423">PR4423</a></li>
  <li>parse: Fix ICE when using ‘dyn’ without trait bound
<a href="https://github.com/rust-gcc/gccrs/pull/4421">PR4421</a></li>
  <li>parser: Fix ICE in AnonConst when expression parsing fails
<a href="https://github.com/rust-gcc/gccrs/pull/4420">PR4420</a></li>
  <li>util/attributes: Fix ICE on bare #[deprecated] attribute
<a href="https://github.com/rust-gcc/gccrs/pull/4419">PR4419</a></li>
  <li>Make `AST::Crate` final
<a href="https://github.com/rust-gcc/gccrs/pull/4418">PR4418</a></li>
  <li>parser: Fix segfault in parse<sub>arithmeticorlogicalexpr</sub>
<a href="https://github.com/rust-gcc/gccrs/pull/4417">PR4417</a></li>
  <li>ci: fix send email workflow in case of large commit log
<a href="https://github.com/rust-gcc/gccrs/pull/4416">PR4416</a></li>
  <li>derive: Implement reconstruct<sub>path</sub> helper for cmp
<a href="https://github.com/rust-gcc/gccrs/pull/4395">PR4395</a></li>
  <li>derive: Implement make<sub>qualifiedcall</sub> helper
<a href="https://github.com/rust-gcc/gccrs/pull/4394">PR4394</a></li>
  <li>Add wrapper class for automatic node cloning
<a href="https://github.com/rust-gcc/gccrs/pull/4350">PR4350</a></li>
</ul>

<h3 id="contributors-this-month">Contributors this month</h3>

<ul>
  <li><a href="https://github.com/v1bh475u">Maulik Barot</a> (new contributor!)</li>
  <li><a href="https://github.com/Islam-Imad">Islam Imad</a> (new contributor!)</li>
  <li><a href="https://github.com/Pasta-coder">Jayant Chauhan</a></li>
  <li><a href="https://github.com/dkm">Marc Poulhiès</a></li>
  <li><a href="https://github.com/Harishankar14">Harishankar</a></li>
  <li><a href="https://github.com/powerboat9">Owen Avery</a></li>
  <li><a href="https://github.com/P-E-P">Pierre-Emmanuel Patry</a></li>
  <li><a href="https://github.com/CohenArthur">Arthur Cohen</a></li>
</ul>

<h3 id="overall-task-status">Overall Task Status</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>407</td>
      <td>401</td>
      <td>-6</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>114</td>
      <td>117</td>
      <td>+3</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>1217</td>
      <td>1225</td>
      <td>+8</td>
    </tr>
  </tbody>
</table>

<h3 id="bugs">Bugs</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>195</td>
      <td>190</td>
      <td>-5</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>52</td>
      <td>52</td>
      <td>-</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>600</td>
      <td>605</td>
      <td>+5</td>
    </tr>
  </tbody>
</table>

<h3 id="test-cases">Test Cases</h3>

<table>
  <thead>
    <tr>
      <th>TestCases</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Passing</td>
      <td>10563</td>
      <td>10598</td>
      <td>+35</td>
    </tr>
    <tr>
      <td>Failed</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XFAIL</td>
      <td>73</td>
      <td>73</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XPASS</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
  </tbody>
</table>

<h3 id="milestones-progress">Milestones Progress</h3>

<table>
  <thead>
    <tr>
      <th>Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Rust-for-Linux</td>
      <td>12%</td>
      <td>16%</td>
      <td>+4%</td>
      <td>1st Nov 2025</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Full core Late nameres issues</td>
      <td>20%</td>
      <td>24%</td>
      <td>+4%</td>
      <td>1st Dec 2025</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Full core Early nameres issues</td>
      <td>95%</td>
      <td>95%</td>
      <td>-</td>
      <td>1st Dec 2025</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Full core Typecheck issues</td>
      <td>7%</td>
      <td>12%</td>
      <td>+5%</td>
      <td>21st Jan 2026</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Upcoming Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Unstable RfL features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>-</td>
      <td>1st Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Generic Associated Types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>RfL const generics</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>1st May 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>frontend plugin hooks</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th May 2025</td>
      <td>-</td>
      <td>7th Jul 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Handling the testsuite issues</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>main shim</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>28th Jul 2025</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final core attributes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Core nightly features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Defered inference</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Fn traits fixes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Recursive types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Drop</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Pin, PinInit</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Past Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Data Structures 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th Nov 2020</td>
      <td>27th Jan 2021</td>
      <td>29th Jan 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2021</td>
      <td>10th Feb 2021</td>
      <td>26th Feb 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 2 - Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>11th Feb 2021</td>
      <td>14th May 2021</td>
      <td>28th May 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 3 - Traits</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th May 2021</td>
      <td>17th Sep 2021</td>
      <td>27th Aug 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 2 - Pattern Matching</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th Sep 2021</td>
      <td>9th Dec 2021</td>
      <td>29th Nov 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Macros and cfg expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2021</td>
      <td>31st Mar 2022</td>
      <td>28th Mar 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Imports and Visibility</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>29th Mar 2022</td>
      <td>13th Jul 2022</td>
      <td>27th May 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Const Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th May 2022</td>
      <td>10th Oct 2022</td>
      <td>17th Oct 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Initial upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>10th Oct 2022</td>
      <td>13th Nov 2022</td>
      <td>13th Nov 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Upstream initial patchset</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Nov 2022</td>
      <td>13th Dec 2022</td>
      <td>19th Dec 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Update GCC’s master branch</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2023</td>
      <td>21st Feb 2023</td>
      <td>3rd Mar 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Final set of upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>16th Nov 2022</td>
      <td>1st May 2023</td>
      <td>30th Apr 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Borrow Checking 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>TBD</td>
      <td>8th Jan 2024</td>
      <td>15th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Procedural Macros 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>6th Aug 2023</td>
      <td>6th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 13.2 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>22nd Jul 2023</td>
      <td>15th Jul 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14 Stage 3</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Sep 2023</td>
      <td>20th Sep 2023</td>
      <td>1st Nov 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.1 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>2nd Jan 2024</td>
      <td>2nd Jun 2024</td>
      <td>15th Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>format<sub>args</sub>!() support</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Feb 2024</td>
      <td>-</td>
      <td>1st Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.2</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>GCC 14.2</td>
    </tr>
    <tr>
      <td>GCC 15.1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jun 2024</td>
      <td>31st Jun 2024</td>
      <td>1st Jul 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Unhandled attributes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>15th Aug 2024</td>
      <td>15th Aug 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Inline assembly</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Rustc Testsuite Adaptor</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Borrow checker improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Deref and DerefMut improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Sep 2024</td>
      <td>25th Oct 2024</td>
      <td>28th Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Indexing fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Iterator fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Auto traits improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>20th Jan 2025</td>
      <td>21st Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Lang items</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>10th Jan 2025</td>
      <td>21st Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>alloc parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>std parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Question mark operator</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Dec 2024</td>
      <td>21st Feb 2025</td>
      <td>21st Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Name resolution 2.0 rework</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Macro expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Remaining typecheck issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Oct 2024</td>
      <td>-</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2024</td>
      <td>24th Mar 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Codegen fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Oct 2024</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>black<sub>box</sub> intrinsic</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Oct 2024</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>let-else</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Specialization</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-rfl</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>19th Mar 2025</td>
      <td>15th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Downgrade to Rust 1.49</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>14th Mar 2025</td>
      <td>26th Mar 2025</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>try blocks</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>while-let loops</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>offset<sub>of</sub>!() builtin macro</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>4th Aug 2025</td>
      <td>15th Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Explicit generics with impl Trait</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>21st Jul 2025</td>
      <td>28th Mar 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final Inline assembly fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<h2 id="planned-activities">Planned Activities</h2>

<ul>
  <li>Finish bug fixing on last complex core import</li>
  <li>Continue investigating Rust-for-Linux crate issues</li>
</ul>]]></content><author><name>Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen</name></author><category term="monthly-report" /><summary type="html"><![CDATA[Overview Thanks again to Open Source Security, inc and Embecosm for their ongoing support for this project. Project update We have submitted an abstract to the RustConf call-for-papers, where we hope to present various interesting compiler stories about our journey towards core and compiling the Linux kernel. If accepted, Pierre-Emmanuel and Arthur will be looking forward to meeting everyone in Montreal in September. gccrs will also be at Embedded World in Nuremberg, so feel free to drop by and talk about the project! Work during the month of February has been a bit slower, between professional travel and holidays. Nevertheless, Pierre-Emmanuel kept chipping away at getting certain Rust-for-Linux crates to compile, namely by reworking our attribute handling to allow more unstable features to be processed by gccrs. This meant reworking our pipeline once again, in order to split the cfg-stripping into two passes, much like we split name resolution into multiple passes last year. For the work on core, we are now one import resolution issue away from getting to typechecking. We hope to fix this particular import in the coming weeks, and to keep progressing on other middle-end core issues. We have started receiving interest from potential Google Summer of Code students, which is always heartwarming - we look forward to your contributions and proposals as the application date grows closer. Community call We will have our next monthly community call on the 17th of March at 10am UTC. You can subscribe to our calendar to see when the next one will be held. The call is open to everyone, even if you would just like to sit-in and listen. You can also subscribe to our mailing-list or join our Zulip chat to be notified of upcoming events. Jitsi link Calendar ID: 7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com Google calendar link iCal link Call for contribution https://github.com/Rust-GCC/gccrs/issues/2500 https://github.com/Rust-GCC/gccrs/issues/2376 Completed Activities testsuite: Add test case for macro invocation missing body PR4449 Add nostd attribute PR4447 Sync with upstream (2026-02-14): 3a1bb1b70d017e4816650ed42d316accf2d93944 PR4439 expand: Fix ICE on unimplemented RustcEncodable/Decodable derives PR4437 ast: Fix missing location info in derive macros PR4435 Remove `ProcMacroInvocLexer` PR4430 gccrs : TypeCheck : Enhance missing fields error message PR4429 parser: Fix rogue null pointer in nulldenotationpath PR4427 Improve feature collection and permit macro attribute input PR4425 refactor: cleanup macro invoc PR4423 parse: Fix ICE when using ‘dyn’ without trait bound PR4421 parser: Fix ICE in AnonConst when expression parsing fails PR4420 util/attributes: Fix ICE on bare #[deprecated] attribute PR4419 Make `AST::Crate` final PR4418 parser: Fix segfault in parsearithmeticorlogicalexpr PR4417 ci: fix send email workflow in case of large commit log PR4416 derive: Implement reconstructpath helper for cmp PR4395 derive: Implement makequalifiedcall helper PR4394 Add wrapper class for automatic node cloning PR4350 Contributors this month Maulik Barot (new contributor!) Islam Imad (new contributor!) Jayant Chauhan Marc Poulhiès Harishankar Owen Avery Pierre-Emmanuel Patry Arthur Cohen Overall Task Status Category Last Month This Month Delta TODO 407 401 -6 In Progress 114 117 +3 Completed 1217 1225 +8 Bugs Category Last Month This Month Delta TODO 195 190 -5 In Progress 52 52 - Completed 600 605 +5 Test Cases TestCases Last Month This Month Delta Passing 10563 10598 +35 Failed - - - XFAIL 73 73 - XPASS - - - Milestones Progress Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Rust-for-Linux 12% 16% +4% 1st Nov 2025 - - GCC 16.1 Full core Late nameres issues 20% 24% +4% 1st Dec 2025 - - GCC 16.1 Full core Early nameres issues 95% 95% - 1st Dec 2025 - - GCC 16.1 Full core Typecheck issues 7% 12% +5% 21st Jan 2026 - - GCC 16.1 Upcoming Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Unstable RfL features 0% 0% - 7th Jan 2025 - 1st Aug 2025 GCC 16.1 Generic Associated Types 0% 0% - 15th Mar 2025 - 15th Jun 2025 GCC 16.1 RfL const generics 0% 0% - 1st May 2025 - 15th Jun 2025 GCC 16.1 frontend plugin hooks 0% 0% - 15th May 2025 - 7th Jul 2025 GCC 16.1 Handling the testsuite issues 0% 0% - 15th Sep 2024 - 15th Sep 2025 GCC 16.1 main shim 0% 0% - 28th Jul 2025 - 15th Sep 2025 GCC 16.1 Final core attributes 0% 0% -   -   GCC 16.1 Core nightly features 0% 0% -   -   GCC 16.1 Defered inference 0% 0% -   -   GCC 16.1 Fn traits fixes 0% 0% -   -   GCC 16.1 Recursive types 0% 0% -   -   GCC 16.1 Drop 0% 0% -   -   GCC 16.1 Pin, PinInit 0% 0% -   -   GCC 16.1 Past Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Data Structures 1 - Core 100% 100% - 30th Nov 2020 27th Jan 2021 29th Jan 2021 GCC 14.1 Control Flow 1 - Core 100% 100% - 28th Jan 2021 10th Feb 2021 26th Feb 2021 GCC 14.1 Data Structures 2 - Generics 100% 100% - 11th Feb 2021 14th May 2021 28th May 2021 GCC 14.1 Data Structures 3 - Traits 100% 100% - 20th May 2021 17th Sep 2021 27th Aug 2021 GCC 14.1 Control Flow 2 - Pattern Matching 100% 100% - 20th Sep 2021 9th Dec 2021 29th Nov 2021 GCC 14.1 Macros and cfg expansion 100% 100% - 1st Dec 2021 31st Mar 2022 28th Mar 2022 GCC 14.1 Imports and Visibility 100% 100% - 29th Mar 2022 13th Jul 2022 27th May 2022 GCC 14.1 Const Generics 100% 100% - 30th May 2022 10th Oct 2022 17th Oct 2022 GCC 14.1 Initial upstream patches 100% 100% - 10th Oct 2022 13th Nov 2022 13th Nov 2022 GCC 14.1 Upstream initial patchset 100% 100% - 13th Nov 2022 13th Dec 2022 19th Dec 2022 GCC 14.1 Update GCC’s master branch 100% 100% - 1st Jan 2023 21st Feb 2023 3rd Mar 2023 GCC 14.1 Final set of upstream patches 100% 100% - 16th Nov 2022 1st May 2023 30th Apr 2023 GCC 14.1 Borrow Checking 1 100% 100% - TBD 8th Jan 2024 15th Aug 2023 GCC 14.1 Procedural Macros 1 100% 100% - 13th Apr 2023 6th Aug 2023 6th Aug 2023 GCC 14.1 GCC 13.2 Release 100% 100% - 13th Apr 2023 22nd Jul 2023 15th Jul 2023 GCC 14.1 GCC 14 Stage 3 100% 100% - 1st Sep 2023 20th Sep 2023 1st Nov 2023 GCC 14.1 GCC 14.1 Release 100% 100% - 2nd Jan 2024 2nd Jun 2024 15th Apr 2024 GCC 14.1 formatargs!() support 100% 100% - 15th Feb 2024 - 1st Apr 2024 GCC 14.1 GCC 14.2 100% 100% - 7th Jun 2024 15th Jun 2024 15th Jun 2024 GCC 14.2 GCC 15.1 100% 100% - 21st Jun 2024 31st Jun 2024 1st Jul 2024 GCC 15.1 Unhandled attributes 100% 100% - 1st Jul 2024 15th Aug 2024 15th Aug 2024 GCC 15.1 Inline assembly 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Rustc Testsuite Adaptor 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Borrow checker improvements 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Deref and DerefMut improvements 100% 100% - 28th Sep 2024 25th Oct 2024 28th Dec 2024 GCC 15.1 Indexing fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Iterator fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Auto traits improvements 100% 100% - 15th Sep 2024 20th Jan 2025 21st Dec 2024 GCC 15.1 Lang items 100% 100% - 1st Jul 2024 10th Jan 2025 21st Nov 2024 GCC 15.1 alloc parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 15.1 std parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 16.1 Question mark operator 100% 100% - 15th Dec 2024 21st Feb 2025 21st Feb 2025 GCC 15.1 Name resolution 2.0 rework 100% 100% - 1st Jun 2024 - 1st Apr 2025 GCC 15.1 Macro expansion 100% 100% - 1st Jun 2024 - 1st Jan 2025 GCC 15.1 Remaining typecheck issues 100% 100% - 21st Oct 2024 - 1st Mar 2025 GCC 15.1 cfg-core 100% 100% - 1st Dec 2024 24th Mar 2025 1st Mar 2025 GCC 15.1 Codegen fixes 100% 100% - 7th Oct 2024 1st Apr 2025 1st Mar 2025 GCC 15.1 blackbox intrinsic 100% 100% - 28th Oct 2024 - 28th Jan 2025 GCC 15.1 let-else 100% 100% - 28th Jan 2025 - 28th Feb 2025 GCC 15.1 Specialization 100% 100% - 1st Jan 2025 1st Apr 2025 1st Mar 2025 GCC 15.1 cfg-rfl 100% 100% - 7th Jan 2025 19th Mar 2025 15th Feb 2025 GCC 15.1 Downgrade to Rust 1.49 100% 100% - 14th Mar 2025 26th Mar 2025 1st Apr 2025 GCC 15.1 try blocks 100% 100% -   30th Jul 2025   GCC 16.1 while-let loops 100% 100% -   30th Jul 2025   GCC 16.1 offsetof!() builtin macro 100% 100% - 15th Mar 2025 4th Aug 2025 15th Aug 2025 GCC 16.1 Explicit generics with impl Trait 100% 100% - 28th Feb 2025 21st Jul 2025 28th Mar 2025 GCC 16.1 Final Inline assembly fixes 100% 100% -   -   GCC 16.1 Planned Activities Finish bug fixing on last complex core import Continue investigating Rust-for-Linux crate issues]]></summary></entry><entry><title type="html">January 2026 Monthly report</title><link href="https://rust-gcc.github.io/2026/02/10/2026-01-monthly-report.html" rel="alternate" type="text/html" title="January 2026 Monthly report" /><published>2026-02-10T00:00:00+00:00</published><updated>2026-02-10T00:00:00+00:00</updated><id>https://rust-gcc.github.io/2026/02/10/2026-01-monthly-report</id><content type="html" xml:base="https://rust-gcc.github.io/2026/02/10/2026-01-monthly-report.html"><![CDATA[<h2 id="overview">Overview</h2>

<p>Thanks again to <a href="https://opensrcsec.com/">Open Source Security, inc</a> and
<a href="https://www.embecosm.com/">Embecosm</a> for their ongoing support for this
project.</p>

<h3 id="project-update">Project update</h3>

<p>This beginning of the year was quite productive, with 41 pull-requests
merged and numerous <code class="language-plaintext highlighter-rouge">core</code> problems discovered and addressed.</p>

<p>Our work on getting the kernel to compile is focused on the crates
surrounding the main kernel crate. Pierre-Emmanuel has also been
focusing on the numerous nightly unstable features used by the kernel,
as <code class="language-plaintext highlighter-rouge">gccrs</code> will need to support them rather quickly. On a related note,
one nightly feature we have implemented this month - but which is not
essential to the kernel - is <code class="language-plaintext highlighter-rouge">#![no_core]</code>. <code class="language-plaintext highlighter-rouge">gccrs</code> now properly tries
to link your Rust program with <code class="language-plaintext highlighter-rouge">core</code>, which since we cannot compile
<code class="language-plaintext highlighter-rouge">core</code> yet, means all of our testsuite has to opt out of that linkage
using the <code class="language-plaintext highlighter-rouge">#![no_core]</code> attribute. Unfortunately, this commit was so big
that the changelog for it was rejected by the mailing list’s spam
filter. Heh.</p>

<p>In other news, Pierre-Emmanuel updated the GCC wiki with project ideas
for this year’s Google Summer of Code:
<a href="https://gcc.gnu.org/wiki/SummerOfCode%C2%A0">https://gcc.gnu.org/wiki/SummerOfCode%C2%A0</a></p>

<p>Feel free to propose any project you’d be interested in working on!
Please join our Zulip group chat in order to start discussing with the
team if you plan on applying for GSoC.</p>

<p>On a final technical note, one of the issues discovered with <code class="language-plaintext highlighter-rouge">core</code> this
month was an interesting edge-case in our import resolution algorithm we
had failed to consider:</p>

<p>Our naive approach to import definitions was to directly insert the ID
of the node that the import would resolve to. For example, in the
following example,</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">mod</span> <span class="n">foo</span> <span class="p">{</span> <span class="c1">// Definition ID 1</span>
    <span class="k">fn</span> <span class="nf">bar</span><span class="p">()</span> <span class="p">{}</span> <span class="c1">// Definition ID 2</span>
<span class="p">}</span>

<span class="k">use</span> <span class="nn">foo</span><span class="p">::</span><span class="n">bar</span><span class="p">;</span>

<span class="k">fn</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="c1">// Definition ID 3</span>
    <span class="nf">bar</span><span class="p">();</span>
<span class="p">}</span>
</code></pre></div></div>

<p>We’d “replace” the import by a direct insert of Definition ID 2, and
have the call to <code class="language-plaintext highlighter-rouge">bar</code> directly resolve to the <em>function</em> instead of
resolving to the <em>import</em>. This is fine in most cases, and went
unnoticed for a long period of time.</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">mod</span> <span class="n">foo</span> <span class="p">{</span> <span class="c1">// Definition ID 1</span>
    <span class="k">fn</span> <span class="nf">bar</span><span class="p">()</span> <span class="p">{}</span> <span class="c1">// Definition ID 2</span>
<span class="p">}</span>

<span class="k">use</span> <span class="nn">foo</span><span class="p">::</span><span class="n">bar</span><span class="p">;</span> <span class="c1">// Resolved to Definition ID 2, insert Definition ID 2</span>

<span class="k">fn</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="c1">// Definition ID 3</span>
    <span class="nf">bar</span><span class="p">();</span> <span class="c1">// Resolved to Definition ID 2</span>
<span class="p">}</span>
</code></pre></div></div>

<p>For the most part, resolving to a reference to a definition or to the
definition itself does not make a difference - the proper function gets
called, typechecked, and everyone is happy. However, imports <em>must</em> act
as a proper definition point, just like functions or modules. The
correct way to resolve the above example is as follows:</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">mod</span> <span class="n">foo</span> <span class="p">{</span> <span class="c1">// Definition ID 1</span>
    <span class="k">fn</span> <span class="nf">bar</span><span class="p">()</span> <span class="p">{}</span> <span class="c1">// Definition ID 2</span>
<span class="p">}</span>

<span class="k">use</span> <span class="nn">foo</span><span class="p">::</span><span class="n">bar</span><span class="p">;</span> <span class="c1">// Resolved to ID 2, Definition ID 3</span>

<span class="k">fn</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="c1">// Definition ID 4</span>
    <span class="nf">bar</span><span class="p">();</span> <span class="c1">// Resolved to ID 3</span>
<span class="p">}</span>
</code></pre></div></div>

<p>Consider this example:</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">use</span> <span class="k">crate</span><span class="p">::</span><span class="nn">intrinsics</span><span class="p">::{</span><span class="k">self</span><span class="p">,</span> <span class="n">abort</span><span class="p">,</span> <span class="n">is_aligned_and_not_null</span><span class="p">,</span> <span class="n">is_nonoverlapping</span><span class="p">};</span>

<span class="cm">/* snip */</span>

<span class="nd">#[lang</span> <span class="nd">=</span> <span class="s">"align_offset"</span><span class="nd">]</span>
<span class="k">pub</span><span class="p">(</span><span class="k">crate</span><span class="p">)</span> <span class="k">unsafe</span> <span class="k">fn</span> <span class="n">align_offset</span><span class="o">&lt;</span><span class="n">T</span><span class="p">:</span> <span class="nb">Sized</span><span class="o">&gt;</span><span class="p">(</span><span class="n">p</span><span class="p">:</span> <span class="o">*</span><span class="k">const</span> <span class="n">T</span><span class="p">,</span> <span class="n">a</span><span class="p">:</span> <span class="nb">usize</span><span class="p">)</span> <span class="k">-&gt;</span> <span class="nb">usize</span> <span class="p">{</span>
    <span class="k">use</span> <span class="nn">intrinsics</span><span class="p">::{</span>
        <span class="n">unchecked_shl</span><span class="p">,</span> <span class="n">unchecked_shr</span><span class="p">,</span> <span class="n">unchecked_sub</span><span class="p">,</span> <span class="n">wrapping_add</span><span class="p">,</span> <span class="n">wrapping_mul</span><span class="p">,</span> <span class="n">wrapping_sub</span><span class="p">,</span>
    <span class="p">};</span>

    <span class="cm">/* snip */</span>
<span class="p">}</span>

</code></pre></div></div>

<p>Here, the second import within the <code class="language-plaintext highlighter-rouge">align_offset</code> function directly
points to <code class="language-plaintext highlighter-rouge">crate::intrinsics::self</code> as a definition, and must be
understood this way. But the <em>import</em> does not contain any function
definitions, it merely points to the module which contains them. This
means that we must rework how our name resolution algorithm works for
itself, and for the output it produces for the rest of the compiler, as
later passes do not care about whether something is a definition or a
reference to a definition - they only want to work on the actual
modules, types and functions.</p>

<p>Up until this point, our name resolution worked with an internal
structure that was also its output for later passes - a simple hashmap
linking each usage-point to its definition-point:</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">HashMap</span><span class="o">&lt;</span><span class="n">Usage</span><span class="p">,</span> <span class="n">Definition</span><span class="o">&gt;</span> <span class="n">usage_map</span><span class="p">;</span>
</code></pre></div></div>

<p>With <code class="language-plaintext highlighter-rouge">Usage</code> and <code class="language-plaintext highlighter-rouge">Definition</code> simply being newtype-patterns for a
<code class="language-plaintext highlighter-rouge">NodeID</code>, our internal ID structure for our AST nodes.</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">struct</span> <span class="nf">Usage</span><span class="p">(</span><span class="n">NodeId</span><span class="p">);</span>
<span class="k">struct</span> <span class="nf">Definition</span><span class="p">(</span><span class="n">NodeId</span><span class="p">);</span>
</code></pre></div></div>

<p>One possible modification is to modify the <code class="language-plaintext highlighter-rouge">Definition</code> type to allow
them to become references to other ~Definition~s:</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">struct</span> <span class="nf">Usage</span><span class="p">(</span><span class="n">NodeId</span><span class="p">);</span>
<span class="k">enum</span> <span class="n">Definition</span> <span class="p">{</span>
  <span class="nf">ImportOf</span><span class="p">(</span><span class="n">NodeId</span><span class="p">),</span> <span class="c1">// A use import</span>
  <span class="nf">Actual</span><span class="p">(</span><span class="n">NodeId</span><span class="p">),</span> <span class="c1">// Literally anything else that is a definition</span>
<span class="p">}</span>
</code></pre></div></div>

<p>This transforms our simple map into a graph, which we can then traverse
at the end of name resolution to turn it back into a regular map -
essentially flat-mapping it for later passes. This approach also allows
us to do import loop detection, something we had not given much thought
about previously as it is not essential for code-gen.</p>

<p>An issue with this implementation is that when inserting usage-points in
our <code class="language-plaintext highlighter-rouge">usage_map</code>, we must know whether or not the <code class="language-plaintext highlighter-rouge">NodeId</code> that we
resolved to in our <code class="language-plaintext highlighter-rouge">NameResolutionCtx</code> ribs is an import, or an actual
definition. This has multiple ramifications and requires multiple
changes to our internal name resolution structures, while also
increasing their memory usage. Thankfully, we can easily avoid much of
these changes thanks to one trick - if a <code class="language-plaintext highlighter-rouge">Definition</code> is also present in
the map as a key, then it must mean that it is an import!</p>

<p>By traversing the map recursively as a graph and checking if each
definition is also present as a key, we can easily avoid a lot of code
churn and still produce the output expected by later compiler passes.</p>

<h3 id="community-call">Community call</h3>

<p>We will not have a community call this month as most of the team will be
traveling. You can subscribe to our calendar to see when the next one
will be held. The call is open to everyone, even if you would just like
to sit-in and listen. You can also subscribe to our
<a href="https://gcc.gnu.org/mailman/listinfo/gcc-rust">mailing-list</a> or join
our <a href="https://gcc-rust.zulipchat.com">Zulip chat</a> to be notified of
upcoming events.</p>

<ul>
  <li>Calendar ID:
7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com</li>
  <li><a href="https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com">Google calendar
link</a></li>
  <li><a href="https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics">iCal
link</a></li>
</ul>

<h2 id="call-for-contribution">Call for contribution</h2>

<ul>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2500">https://github.com/Rust-GCC/gccrs/issues/2500</a></p>
  </li>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2376">https://github.com/Rust-GCC/gccrs/issues/2376</a></p>
  </li>
</ul>

<h2 id="completed-activities">Completed Activities</h2>

<ul>
  <li>util/attributes: Fix ICE on bare #[deprecated] attribute
<a href="https://github.com/rust-gcc/gccrs/pull/4419">PR4419</a></li>
  <li>ci: fix send email workflow in case of large commit log
<a href="https://github.com/rust-gcc/gccrs/pull/4416">PR4416</a></li>
  <li>Reduce node id sharing
<a href="https://github.com/rust-gcc/gccrs/pull/4408">PR4408</a></li>
  <li>Implicitely inject `extern crate core`
<a href="https://github.com/rust-gcc/gccrs/pull/4407">PR4407</a></li>
  <li>ast: Fix module path resolution for sibling modules in root
<a href="https://github.com/rust-gcc/gccrs/pull/4406">PR4406</a></li>
  <li>Detect macros with duplicate metavariable bindings
<a href="https://github.com/rust-gcc/gccrs/pull/4405">PR4405</a></li>
  <li>name resolution: fixes resolution through modules
<a href="https://github.com/rust-gcc/gccrs/pull/4401">PR4401</a></li>
  <li>Implement type check &amp; codegen for HIR::StructPatternFieldTuplePat
<a href="https://github.com/rust-gcc/gccrs/pull/4400">PR4400</a></li>
  <li>expand: Refactor field expansion and add documentation
<a href="https://github.com/rust-gcc/gccrs/pull/4398">PR4398</a></li>
  <li>backend: Factor out asm operand chaining
<a href="https://github.com/rust-gcc/gccrs/pull/4397">PR4397</a></li>
  <li>derive: Factor out Eq trait path generation
<a href="https://github.com/rust-gcc/gccrs/pull/4396">PR4396</a></li>
  <li>gccrs: replace unreachable with sorry_at
<a href="https://github.com/rust-gcc/gccrs/pull/4391">PR4391</a></li>
  <li>util/attributes: handle #[export_name] on static items
<a href="https://github.com/rust-gcc/gccrs/pull/4390">PR4390</a></li>
  <li>util/attributes: error on malformed #[export_name]
input <a href="https://github.com/rust-gcc/gccrs/pull/4389">PR4389</a></li>
  <li>Handle `export_name` attribute on functions
<a href="https://github.com/rust-gcc/gccrs/pull/4385">PR4385</a></li>
  <li>gccrs: add non upper case globals lint
<a href="https://github.com/rust-gcc/gccrs/pull/4382">PR4382</a></li>
  <li>gccrs: add non snake case lint
<a href="https://github.com/rust-gcc/gccrs/pull/4381">PR4381</a></li>
  <li>gccrs: fix ice on let else expession
<a href="https://github.com/rust-gcc/gccrs/pull/4378">PR4378</a></li>
  <li>Sync with upstream (2026-01-10):
00b6346d5374efab8dabbf99d2647ad69b1df706
<a href="https://github.com/rust-gcc/gccrs/pull/4371">PR4371</a></li>
  <li>testsuite: Adds test from issue 1245
<a href="https://github.com/rust-gcc/gccrs/pull/4369">PR4369</a></li>
  <li>testsuite: Adds test from issue
<a href="https://github.com/rust-gcc/gccrs/pull/4366">PR4366</a></li>
  <li>Unused label lint
<a href="https://github.com/rust-gcc/gccrs/pull/4365">PR4365</a></li>
  <li>Adds test from issue 1210 and correct error thrown
<a href="https://github.com/rust-gcc/gccrs/pull/4363">PR4363</a></li>
  <li>ICE in get_dereferencedexpr, at rust/ast/rust-expr.h:435
<a href="https://github.com/rust-gcc/gccrs/pull/4362">PR4362</a></li>
  <li>gccrs: Fix ICE in insert_associatedtraitimpl due to
recursion <a href="https://github.com/rust-gcc/gccrs/pull/4361">PR4361</a></li>
  <li>gccrs: add redundant semicolon lint
<a href="https://github.com/rust-gcc/gccrs/pull/4360">PR4360</a></li>
  <li>util/attributes: Error on malformed lint attributes
<a href="https://github.com/rust-gcc/gccrs/pull/4358">PR4358</a></li>
  <li>util/attributes: error on malformed #[link_section]
input <a href="https://github.com/rust-gcc/gccrs/pull/4357">PR4357</a></li>
  <li>util/attributes: Check that #[target_feature] is only
used on unsafe …
<a href="https://github.com/rust-gcc/gccrs/pull/4356">PR4356</a></li>
  <li>util/attributes: Error on #[repr] applied to functions
<a href="https://github.com/rust-gcc/gccrs/pull/4355">PR4355</a></li>
  <li>util/attributes: error on malformed #[no_mangle] input
<a href="https://github.com/rust-gcc/gccrs/pull/4354">PR4354</a></li>
  <li>util/attributes: error on malformed #[link_name] input
<a href="https://github.com/rust-gcc/gccrs/pull/4353">PR4353</a></li>
  <li>util/attributes: Fix/target feature malformed 4233
<a href="https://github.com/rust-gcc/gccrs/pull/4349">PR4349</a></li>
  <li>gccrs: Fix rogue macro error during lowering on expansion failure
<a href="https://github.com/rust-gcc/gccrs/pull/4347">PR4347</a></li>
  <li>Add proper prelude imports
<a href="https://github.com/rust-gcc/gccrs/pull/4346">PR4346</a></li>
  <li>forever-stack: Display depth in debug string
<a href="https://github.com/rust-gcc/gccrs/pull/4343">PR4343</a></li>
  <li>gccrs: Fix empty struct constructors causing ICE during type
checking <a href="https://github.com/rust-gcc/gccrs/pull/4342">PR4342</a></li>
  <li>Improve attribute validation Rust-GCC/gccrs#4235
<a href="https://github.com/rust-gcc/gccrs/pull/4339">PR4339</a></li>
  <li>ast: Add new GlobContainer class and use it
<a href="https://github.com/rust-gcc/gccrs/pull/4337">PR4337</a></li>
  <li>Improved Expr parser errors
<a href="https://github.com/rust-gcc/gccrs/pull/4330">PR4330</a></li>
  <li>name-resolution: Add std/core prelude resolution
<a href="https://github.com/rust-gcc/gccrs/pull/4149">PR4149</a></li>
</ul>

<h3 id="contributors-this-month">Contributors this month</h3>

<ul>
  <li><a href="https://github.com/Pasta-coder">Jayant Chauhan</a> (new contributor!)</li>
  <li><a href="https://github.com/sqrtM">Mason</a> (new contributor!)</li>
  <li><a href="https://github.com/dkm">Marc Poulhiès</a></li>
  <li><a href="https://github.com/Harishankar14">Harishankar</a></li>
  <li><a href="https://github.com/Polygonalr">Zhi Heng</a></li>
  <li><a href="https://github.com/Villosse">Lenny Chiadmi-Delage</a></li>
  <li><a href="https://github.com/lucasly-ba">Lucas Ly Ba</a></li>
  <li><a href="https://github.com/powerboat9">Owen Avery</a></li>
  <li><a href="https://github.com/P-E-P">Pierre-Emmanuel Patry</a></li>
  <li><a href="https://github.com/CohenArthur">Arthur Cohen</a></li>
</ul>

<h3 id="overall-task-status">Overall Task Status</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>409</td>
      <td>407</td>
      <td>-2</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>118</td>
      <td>114</td>
      <td>-4</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>1194</td>
      <td>1217</td>
      <td>+23</td>
    </tr>
  </tbody>
</table>

<h3 id="bugs">Bugs</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>194</td>
      <td>195</td>
      <td>+1</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>56</td>
      <td>52</td>
      <td>-4</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>591</td>
      <td>600</td>
      <td>+9</td>
    </tr>
  </tbody>
</table>

<h3 id="test-cases">Test Cases</h3>

<table>
  <thead>
    <tr>
      <th>TestCases</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Passing</td>
      <td>10470</td>
      <td>10563</td>
      <td>+93</td>
    </tr>
    <tr>
      <td>Failed</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XFAIL</td>
      <td>73</td>
      <td>73</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XPASS</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
  </tbody>
</table>

<h3 id="milestones-progress">Milestones Progress</h3>

<table>
  <thead>
    <tr>
      <th>Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Rust-for-Linux</td>
      <td>12%</td>
      <td>12%</td>
      <td>-</td>
      <td>1st Nov 2025</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Full core Late nameres issues</td>
      <td>15%</td>
      <td>20%</td>
      <td>+5%</td>
      <td>1st Dec 2025</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Full core Early nameres issues</td>
      <td>90%</td>
      <td>95%</td>
      <td>+5%</td>
      <td>1st Dec 2025</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Full core Typecheck issues</td>
      <td>0%</td>
      <td>7%</td>
      <td>+7%</td>
      <td>21st Jan 2026</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Upcoming Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Unstable RfL features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>-</td>
      <td>1st Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Generic Associated Types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>RfL const generics</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>1st May 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>frontend plugin hooks</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th May 2025</td>
      <td>-</td>
      <td>7th Jul 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Handling the testsuite issues</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>main shim</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>28th Jul 2025</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final core attributes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Core nightly features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Defered inference</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Fn traits fixes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Recursive types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Drop</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Pin, PinInit</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Past Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Data Structures 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th Nov 2020</td>
      <td>27th Jan 2021</td>
      <td>29th Jan 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2021</td>
      <td>10th Feb 2021</td>
      <td>26th Feb 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 2 - Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>11th Feb 2021</td>
      <td>14th May 2021</td>
      <td>28th May 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 3 - Traits</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th May 2021</td>
      <td>17th Sep 2021</td>
      <td>27th Aug 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 2 - Pattern Matching</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th Sep 2021</td>
      <td>9th Dec 2021</td>
      <td>29th Nov 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Macros and cfg expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2021</td>
      <td>31st Mar 2022</td>
      <td>28th Mar 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Imports and Visibility</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>29th Mar 2022</td>
      <td>13th Jul 2022</td>
      <td>27th May 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Const Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th May 2022</td>
      <td>10th Oct 2022</td>
      <td>17th Oct 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Initial upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>10th Oct 2022</td>
      <td>13th Nov 2022</td>
      <td>13th Nov 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Upstream initial patchset</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Nov 2022</td>
      <td>13th Dec 2022</td>
      <td>19th Dec 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Update GCC’s master branch</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2023</td>
      <td>21st Feb 2023</td>
      <td>3rd Mar 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Final set of upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>16th Nov 2022</td>
      <td>1st May 2023</td>
      <td>30th Apr 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Borrow Checking 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>TBD</td>
      <td>8th Jan 2024</td>
      <td>15th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Procedural Macros 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>6th Aug 2023</td>
      <td>6th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 13.2 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>22nd Jul 2023</td>
      <td>15th Jul 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14 Stage 3</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Sep 2023</td>
      <td>20th Sep 2023</td>
      <td>1st Nov 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.1 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>2nd Jan 2024</td>
      <td>2nd Jun 2024</td>
      <td>15th Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>format_args!() support</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Feb 2024</td>
      <td>-</td>
      <td>1st Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.2</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>GCC 14.2</td>
    </tr>
    <tr>
      <td>GCC 15.1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jun 2024</td>
      <td>31st Jun 2024</td>
      <td>1st Jul 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Unhandled attributes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>15th Aug 2024</td>
      <td>15th Aug 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Inline assembly</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Rustc Testsuite Adaptor</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Borrow checker improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Deref and DerefMut improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Sep 2024</td>
      <td>25th Oct 2024</td>
      <td>28th Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Indexing fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Iterator fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Auto traits improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>20th Jan 2025</td>
      <td>21st Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Lang items</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>10th Jan 2025</td>
      <td>21st Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>alloc parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>std parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Question mark operator</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Dec 2024</td>
      <td>21st Feb 2025</td>
      <td>21st Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Name resolution 2.0 rework</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Macro expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Remaining typecheck issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Oct 2024</td>
      <td>-</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2024</td>
      <td>24th Mar 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Codegen fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Oct 2024</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>black_box intrinsic</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Oct 2024</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>let-else</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Specialization</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-rfl</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>19th Mar 2025</td>
      <td>15th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Downgrade to Rust 1.49</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>14th Mar 2025</td>
      <td>26th Mar 2025</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>try blocks</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>while-let loops</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>offset_of!() builtin macro</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>4th Aug 2025</td>
      <td>15th Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Explicit generics with impl Trait</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>21st Jul 2025</td>
      <td>28th Mar 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final Inline assembly fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<h2 id="planned-activities">Planned Activities</h2>]]></content><author><name>Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen</name></author><category term="monthly-report" /><summary type="html"><![CDATA[Overview Thanks again to Open Source Security, inc and Embecosm for their ongoing support for this project. Project update This beginning of the year was quite productive, with 41 pull-requests merged and numerous core problems discovered and addressed. Our work on getting the kernel to compile is focused on the crates surrounding the main kernel crate. Pierre-Emmanuel has also been focusing on the numerous nightly unstable features used by the kernel, as gccrs will need to support them rather quickly. On a related note, one nightly feature we have implemented this month - but which is not essential to the kernel - is #![no_core]. gccrs now properly tries to link your Rust program with core, which since we cannot compile core yet, means all of our testsuite has to opt out of that linkage using the #![no_core] attribute. Unfortunately, this commit was so big that the changelog for it was rejected by the mailing list’s spam filter. Heh. In other news, Pierre-Emmanuel updated the GCC wiki with project ideas for this year’s Google Summer of Code: https://gcc.gnu.org/wiki/SummerOfCode%C2%A0 Feel free to propose any project you’d be interested in working on! Please join our Zulip group chat in order to start discussing with the team if you plan on applying for GSoC. On a final technical note, one of the issues discovered with core this month was an interesting edge-case in our import resolution algorithm we had failed to consider: Our naive approach to import definitions was to directly insert the ID of the node that the import would resolve to. For example, in the following example, mod foo { // Definition ID 1 fn bar() {} // Definition ID 2 } use foo::bar; fn main() { // Definition ID 3 bar(); } We’d “replace” the import by a direct insert of Definition ID 2, and have the call to bar directly resolve to the function instead of resolving to the import. This is fine in most cases, and went unnoticed for a long period of time. mod foo { // Definition ID 1 fn bar() {} // Definition ID 2 } use foo::bar; // Resolved to Definition ID 2, insert Definition ID 2 fn main() { // Definition ID 3 bar(); // Resolved to Definition ID 2 } For the most part, resolving to a reference to a definition or to the definition itself does not make a difference - the proper function gets called, typechecked, and everyone is happy. However, imports must act as a proper definition point, just like functions or modules. The correct way to resolve the above example is as follows: mod foo { // Definition ID 1 fn bar() {} // Definition ID 2 } use foo::bar; // Resolved to ID 2, Definition ID 3 fn main() { // Definition ID 4 bar(); // Resolved to ID 3 } Consider this example: use crate::intrinsics::{self, abort, is_aligned_and_not_null, is_nonoverlapping}; /* snip */ #[lang = "align_offset"] pub(crate) unsafe fn align_offset&lt;T: Sized&gt;(p: *const T, a: usize) -&gt; usize { use intrinsics::{ unchecked_shl, unchecked_shr, unchecked_sub, wrapping_add, wrapping_mul, wrapping_sub, }; /* snip */ } Here, the second import within the align_offset function directly points to crate::intrinsics::self as a definition, and must be understood this way. But the import does not contain any function definitions, it merely points to the module which contains them. This means that we must rework how our name resolution algorithm works for itself, and for the output it produces for the rest of the compiler, as later passes do not care about whether something is a definition or a reference to a definition - they only want to work on the actual modules, types and functions. Up until this point, our name resolution worked with an internal structure that was also its output for later passes - a simple hashmap linking each usage-point to its definition-point: HashMap&lt;Usage, Definition&gt; usage_map; With Usage and Definition simply being newtype-patterns for a NodeID, our internal ID structure for our AST nodes. struct Usage(NodeId); struct Definition(NodeId); One possible modification is to modify the Definition type to allow them to become references to other ~Definition~s: struct Usage(NodeId); enum Definition { ImportOf(NodeId), // A use import Actual(NodeId), // Literally anything else that is a definition } This transforms our simple map into a graph, which we can then traverse at the end of name resolution to turn it back into a regular map - essentially flat-mapping it for later passes. This approach also allows us to do import loop detection, something we had not given much thought about previously as it is not essential for code-gen. An issue with this implementation is that when inserting usage-points in our usage_map, we must know whether or not the NodeId that we resolved to in our NameResolutionCtx ribs is an import, or an actual definition. This has multiple ramifications and requires multiple changes to our internal name resolution structures, while also increasing their memory usage. Thankfully, we can easily avoid much of these changes thanks to one trick - if a Definition is also present in the map as a key, then it must mean that it is an import! By traversing the map recursively as a graph and checking if each definition is also present as a key, we can easily avoid a lot of code churn and still produce the output expected by later compiler passes. Community call We will not have a community call this month as most of the team will be traveling. You can subscribe to our calendar to see when the next one will be held. The call is open to everyone, even if you would just like to sit-in and listen. You can also subscribe to our mailing-list or join our Zulip chat to be notified of upcoming events. Calendar ID: 7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com Google calendar link iCal link Call for contribution https://github.com/Rust-GCC/gccrs/issues/2500 https://github.com/Rust-GCC/gccrs/issues/2376 Completed Activities util/attributes: Fix ICE on bare #[deprecated] attribute PR4419 ci: fix send email workflow in case of large commit log PR4416 Reduce node id sharing PR4408 Implicitely inject `extern crate core` PR4407 ast: Fix module path resolution for sibling modules in root PR4406 Detect macros with duplicate metavariable bindings PR4405 name resolution: fixes resolution through modules PR4401 Implement type check &amp; codegen for HIR::StructPatternFieldTuplePat PR4400 expand: Refactor field expansion and add documentation PR4398 backend: Factor out asm operand chaining PR4397 derive: Factor out Eq trait path generation PR4396 gccrs: replace unreachable with sorry_at PR4391 util/attributes: handle #[export_name] on static items PR4390 util/attributes: error on malformed #[export_name] input PR4389 Handle `export_name` attribute on functions PR4385 gccrs: add non upper case globals lint PR4382 gccrs: add non snake case lint PR4381 gccrs: fix ice on let else expession PR4378 Sync with upstream (2026-01-10): 00b6346d5374efab8dabbf99d2647ad69b1df706 PR4371 testsuite: Adds test from issue 1245 PR4369 testsuite: Adds test from issue PR4366 Unused label lint PR4365 Adds test from issue 1210 and correct error thrown PR4363 ICE in get_dereferencedexpr, at rust/ast/rust-expr.h:435 PR4362 gccrs: Fix ICE in insert_associatedtraitimpl due to recursion PR4361 gccrs: add redundant semicolon lint PR4360 util/attributes: Error on malformed lint attributes PR4358 util/attributes: error on malformed #[link_section] input PR4357 util/attributes: Check that #[target_feature] is only used on unsafe … PR4356 util/attributes: Error on #[repr] applied to functions PR4355 util/attributes: error on malformed #[no_mangle] input PR4354 util/attributes: error on malformed #[link_name] input PR4353 util/attributes: Fix/target feature malformed 4233 PR4349 gccrs: Fix rogue macro error during lowering on expansion failure PR4347 Add proper prelude imports PR4346 forever-stack: Display depth in debug string PR4343 gccrs: Fix empty struct constructors causing ICE during type checking PR4342 Improve attribute validation Rust-GCC/gccrs#4235 PR4339 ast: Add new GlobContainer class and use it PR4337 Improved Expr parser errors PR4330 name-resolution: Add std/core prelude resolution PR4149 Contributors this month Jayant Chauhan (new contributor!) Mason (new contributor!) Marc Poulhiès Harishankar Zhi Heng Lenny Chiadmi-Delage Lucas Ly Ba Owen Avery Pierre-Emmanuel Patry Arthur Cohen Overall Task Status Category Last Month This Month Delta TODO 409 407 -2 In Progress 118 114 -4 Completed 1194 1217 +23 Bugs Category Last Month This Month Delta TODO 194 195 +1 In Progress 56 52 -4 Completed 591 600 +9 Test Cases TestCases Last Month This Month Delta Passing 10470 10563 +93 Failed - - - XFAIL 73 73 - XPASS - - - Milestones Progress Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Rust-for-Linux 12% 12% - 1st Nov 2025 - - GCC 16.1 Full core Late nameres issues 15% 20% +5% 1st Dec 2025 - - GCC 16.1 Full core Early nameres issues 90% 95% +5% 1st Dec 2025 - - GCC 16.1 Full core Typecheck issues 0% 7% +7% 21st Jan 2026 - - GCC 16.1 Upcoming Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Unstable RfL features 0% 0% - 7th Jan 2025 - 1st Aug 2025 GCC 16.1 Generic Associated Types 0% 0% - 15th Mar 2025 - 15th Jun 2025 GCC 16.1 RfL const generics 0% 0% - 1st May 2025 - 15th Jun 2025 GCC 16.1 frontend plugin hooks 0% 0% - 15th May 2025 - 7th Jul 2025 GCC 16.1 Handling the testsuite issues 0% 0% - 15th Sep 2024 - 15th Sep 2025 GCC 16.1 main shim 0% 0% - 28th Jul 2025 - 15th Sep 2025 GCC 16.1 Final core attributes 0% 0% -   -   GCC 16.1 Core nightly features 0% 0% -   -   GCC 16.1 Defered inference 0% 0% -   -   GCC 16.1 Fn traits fixes 0% 0% -   -   GCC 16.1 Recursive types 0% 0% -   -   GCC 16.1 Drop 0% 0% -   -   GCC 16.1 Pin, PinInit 0% 0% -   -   GCC 16.1 Past Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Data Structures 1 - Core 100% 100% - 30th Nov 2020 27th Jan 2021 29th Jan 2021 GCC 14.1 Control Flow 1 - Core 100% 100% - 28th Jan 2021 10th Feb 2021 26th Feb 2021 GCC 14.1 Data Structures 2 - Generics 100% 100% - 11th Feb 2021 14th May 2021 28th May 2021 GCC 14.1 Data Structures 3 - Traits 100% 100% - 20th May 2021 17th Sep 2021 27th Aug 2021 GCC 14.1 Control Flow 2 - Pattern Matching 100% 100% - 20th Sep 2021 9th Dec 2021 29th Nov 2021 GCC 14.1 Macros and cfg expansion 100% 100% - 1st Dec 2021 31st Mar 2022 28th Mar 2022 GCC 14.1 Imports and Visibility 100% 100% - 29th Mar 2022 13th Jul 2022 27th May 2022 GCC 14.1 Const Generics 100% 100% - 30th May 2022 10th Oct 2022 17th Oct 2022 GCC 14.1 Initial upstream patches 100% 100% - 10th Oct 2022 13th Nov 2022 13th Nov 2022 GCC 14.1 Upstream initial patchset 100% 100% - 13th Nov 2022 13th Dec 2022 19th Dec 2022 GCC 14.1 Update GCC’s master branch 100% 100% - 1st Jan 2023 21st Feb 2023 3rd Mar 2023 GCC 14.1 Final set of upstream patches 100% 100% - 16th Nov 2022 1st May 2023 30th Apr 2023 GCC 14.1 Borrow Checking 1 100% 100% - TBD 8th Jan 2024 15th Aug 2023 GCC 14.1 Procedural Macros 1 100% 100% - 13th Apr 2023 6th Aug 2023 6th Aug 2023 GCC 14.1 GCC 13.2 Release 100% 100% - 13th Apr 2023 22nd Jul 2023 15th Jul 2023 GCC 14.1 GCC 14 Stage 3 100% 100% - 1st Sep 2023 20th Sep 2023 1st Nov 2023 GCC 14.1 GCC 14.1 Release 100% 100% - 2nd Jan 2024 2nd Jun 2024 15th Apr 2024 GCC 14.1 format_args!() support 100% 100% - 15th Feb 2024 - 1st Apr 2024 GCC 14.1 GCC 14.2 100% 100% - 7th Jun 2024 15th Jun 2024 15th Jun 2024 GCC 14.2 GCC 15.1 100% 100% - 21st Jun 2024 31st Jun 2024 1st Jul 2024 GCC 15.1 Unhandled attributes 100% 100% - 1st Jul 2024 15th Aug 2024 15th Aug 2024 GCC 15.1 Inline assembly 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Rustc Testsuite Adaptor 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Borrow checker improvements 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Deref and DerefMut improvements 100% 100% - 28th Sep 2024 25th Oct 2024 28th Dec 2024 GCC 15.1 Indexing fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Iterator fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Auto traits improvements 100% 100% - 15th Sep 2024 20th Jan 2025 21st Dec 2024 GCC 15.1 Lang items 100% 100% - 1st Jul 2024 10th Jan 2025 21st Nov 2024 GCC 15.1 alloc parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 15.1 std parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 16.1 Question mark operator 100% 100% - 15th Dec 2024 21st Feb 2025 21st Feb 2025 GCC 15.1 Name resolution 2.0 rework 100% 100% - 1st Jun 2024 - 1st Apr 2025 GCC 15.1 Macro expansion 100% 100% - 1st Jun 2024 - 1st Jan 2025 GCC 15.1 Remaining typecheck issues 100% 100% - 21st Oct 2024 - 1st Mar 2025 GCC 15.1 cfg-core 100% 100% - 1st Dec 2024 24th Mar 2025 1st Mar 2025 GCC 15.1 Codegen fixes 100% 100% - 7th Oct 2024 1st Apr 2025 1st Mar 2025 GCC 15.1 black_box intrinsic 100% 100% - 28th Oct 2024 - 28th Jan 2025 GCC 15.1 let-else 100% 100% - 28th Jan 2025 - 28th Feb 2025 GCC 15.1 Specialization 100% 100% - 1st Jan 2025 1st Apr 2025 1st Mar 2025 GCC 15.1 cfg-rfl 100% 100% - 7th Jan 2025 19th Mar 2025 15th Feb 2025 GCC 15.1 Downgrade to Rust 1.49 100% 100% - 14th Mar 2025 26th Mar 2025 1st Apr 2025 GCC 15.1 try blocks 100% 100% -   30th Jul 2025   GCC 16.1 while-let loops 100% 100% -   30th Jul 2025   GCC 16.1 offset_of!() builtin macro 100% 100% - 15th Mar 2025 4th Aug 2025 15th Aug 2025 GCC 16.1 Explicit generics with impl Trait 100% 100% - 28th Feb 2025 21st Jul 2025 28th Mar 2025 GCC 16.1 Final Inline assembly fixes 100% 100% -   -   GCC 16.1 Planned Activities]]></summary></entry><entry><title type="html">December 2025 Monthly report</title><link href="https://rust-gcc.github.io/2026/01/08/2025-12-monthly-report.html" rel="alternate" type="text/html" title="December 2025 Monthly report" /><published>2026-01-08T00:00:00+00:00</published><updated>2026-01-08T00:00:00+00:00</updated><id>https://rust-gcc.github.io/2026/01/08/2025-12-monthly-report</id><content type="html" xml:base="https://rust-gcc.github.io/2026/01/08/2025-12-monthly-report.html"><![CDATA[<h2 id="overview">Overview</h2>

<p>Thanks again to <a href="https://opensrcsec.com/">Open Source Security, inc</a> and
<a href="https://www.embecosm.com/">Embecosm</a> for their ongoing support for this
project.</p>

<h3 id="2026-introduction">2026 Introduction</h3>

<p>Hi everyone! Welcome to our first monthly report of the year 2026! As
our work starts again after the winter holidays, we wanted to take some
time to outline what is shaping up to be a pretty significant year for
<code class="language-plaintext highlighter-rouge">gccrs</code>, in a more candid way than the usual tone of these reports. The
goal of this is for people interested in our project to know what to
expect, how to support us, and what the project will focus on moving
forward.</p>

<p>We have recently been mentioned in LWN’s “Predictions for the new year”
article, which sparked some encouraging and supportive comments that we
really enjoyed reading. The specific quote of the article is as follows:</p>

<p>“The gccrs project will deliver a working Rust compiler”</p>

<p>Wow! That’s not a lot of pressure at all!</p>

<p>But Jonathan is right - the goal is for <code class="language-plaintext highlighter-rouge">gccrs</code> to be able to compile
the Rust parts of the Linux kernel in 2026. Preferably, before RustConf
and EuroRust, so that we can make some noise about it. Now, that does
not mean that you will be able to use a Linux kernel with the Rust parts
compiled by <code class="language-plaintext highlighter-rouge">gccrs</code> (we do hope you try and report all of the
interesting issues though). <code class="language-plaintext highlighter-rouge">gccrs</code> will still be experimental, and even
though it should be able to compile the kernel, that does not mean the
executable produced will be able to run correctly. For 2026, our goal is
for gccrs to be able to <em>mis</em>-compile the kernel. There are things that
we do not plan for <code class="language-plaintext highlighter-rouge">gccrs</code> to handle just yet, which may incur incorrect
behavior in the produced binaries - which is to be expected from an
experimental compiler.</p>

<p>Thus begins a nine months long marathon to get the kernel compiling :)</p>

<p>This time will also be a great opportunity to get in touch with more
people on the kernel and Rust side to make sure that <code class="language-plaintext highlighter-rouge">gccrs</code> fits in in
all the ways that is expected of the project.</p>

<p>Regarding the upcoming GCC 16.1 release: while we are working towards
getting the kernel working by the time it comes out, this might not
happen. For people willing to experiment with compiling their kernel
using <code class="language-plaintext highlighter-rouge">gccrs</code>, you will have to compile the project from scratch. We
hope to get enough in GCC 16.1 so that <code class="language-plaintext highlighter-rouge">gccrs</code> is able to compile
<code class="language-plaintext highlighter-rouge">core</code>, and can thus be used in embedded environments for <code class="language-plaintext highlighter-rouge">#![no_std]</code>
Rust code.</p>

<p>We hope you understand that playing catch up like this takes a long
time, and that some problems only show up when compiling actual
projects - not simple test cases. While we do have the advantage of
knowing what is supposed to work, we run into different problems than if
we were just trying to design our own programming language from scratch.
Knowing how <code class="language-plaintext highlighter-rouge">core</code> works, what compiler tricks are required, how the
crate is implemented, is not innate, and while the team is getting
pretty good at it, we still have some work to do.</p>

<p>Thank you once again for your continued support and involvment. 2025 was
a very fun year for the project, and 2026 seems to be headed in the same
direction, with even more interesting problems to fix.</p>

<h3 id="project-update">Project update</h3>

<p>For the last month of 2025, we have once again made good progress on our
name resolution algorithm in the hopes of getting <code class="language-plaintext highlighter-rouge">core</code> further along
our compilation pipeline. We have not necessarily focused on the kernel
itself this month, as most of the team was away on vacation for half of
the month. The entire early name resolution and macro expansion
fixed-point is now complete for <code class="language-plaintext highlighter-rouge">core</code>, which is a massive milestone for
the project - it is actually the reason why we decided to rewrite name
resolution from scratch a couple of years ago. We are now able to handle
all of the complex imports and exports in <code class="language-plaintext highlighter-rouge">core</code>, coupled with the
extensive amount of macros used for various primitive implementations.
This leads us to the second half of the problem, late name resolution,
which is currently still not finished for <code class="language-plaintext highlighter-rouge">core</code>. This holiday season,
we have fixed four massive bugs which impacted <code class="language-plaintext highlighter-rouge">core</code> as well as complex
Rust crates. There are still a few issues with our late name resolution,
namely around certain vectorized types and methods not being found, but
nothing too drastic or hard to fix.</p>

<p>Other technical improvements include the work done by our two interns,
<a href="https://github.com/Villosse">Lenny Chiadmi Delage</a> and <a href="https://github.com/lucasly-ba">Lucas Ly
Ba</a>, who have greatly improved various
lints in the compiler focused on correctness and safety. January marks
our last month with them, and we will greatly miss them and their
contributions!</p>

<p>We will continue working on these late name resolution issues for the
first few weeks of 2026, and will hopefully be able to quickly switch to
our middle-end and backend issues for <code class="language-plaintext highlighter-rouge">core</code> - which there shouldn’t be
much of. Once name resolution passes, we will be able to split our focus
between <code class="language-plaintext highlighter-rouge">core</code> and the kernel, figuring out what issues show up once the
kernel correctly depends on <code class="language-plaintext highlighter-rouge">core</code>. As explained before, the goal is for
gccrs to be able to compile <code class="language-plaintext highlighter-rouge">core</code> and the kernel before RustConf and
EuroRust in September, two conferences where we hope to present the work
done on the compiler these last two years.</p>

<p>The CFPs for these conferences is almost open, which means we are also
spending some of our time working on our abstracts. We want to maximize
our chances of the talks getting accepted, as these two conferences
could be the most important talks we’ve ever given for the project!</p>

<p>Finally, our upstreaming is still going strong, as we are sticking to
our schedule and uploading commits weekly. We are up to date with the
latest GCC, which is also up to date with our development branch.</p>

<h3 id="community-call">Community call</h3>

<p>We will have our next monthly community call on the 12th of January at
10am UTC. You can subscribe to our calendar to see when the next one
will be held. The call is open to everyone, even if you would just like
to sit-in and listen. You can also subscribe to our
<a href="https://gcc.gnu.org/mailman/listinfo/gcc-rust">mailing-list</a> or join
our <a href="https://gcc-rust.zulipchat.com">Zulip chat</a> to be notified of
upcoming events.</p>

<ul>
  <li><a href="https://meet.jit.si/gccrs-community-call-january">Jitsi link</a></li>
  <li>Calendar ID:
7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com</li>
  <li><a href="https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com">Google calendar
link</a></li>
  <li><a href="https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics">iCal
link</a></li>
</ul>

<h2 id="call-for-contribution">Call for contribution</h2>

<ul>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2500">https://github.com/Rust-GCC/gccrs/issues/2500</a></p>
  </li>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2376">https://github.com/Rust-GCC/gccrs/issues/2376</a></p>
  </li>
</ul>

<h2 id="completed-activities">Completed Activities</h2>

<ul>
  <li>Sync with upstream (2026-01-03):
d5743234731ecc62d889e297a7576561600da41d
<a href="https://github.com/rust-gcc/gccrs/pull/4351">PR4351</a></li>
  <li>gccrs: Fix rogue macro error during lowering on expansion failure
<a href="https://github.com/rust-gcc/gccrs/pull/4347">PR4347</a></li>
  <li>nr: Add better error to unresolved attribute macro
<a href="https://github.com/rust-gcc/gccrs/pull/4345">PR4345</a></li>
  <li>Sync with upstream (2025-12-21):
c65fdb6b03d9146ee9a1ffcfcbc689b004b2b463
<a href="https://github.com/rust-gcc/gccrs/pull/4335">PR4335</a></li>
  <li>Fix: #![cfg<sub>attr</sub>(…, feature)]` not respected
<a href="https://github.com/rust-gcc/gccrs/pull/4334">PR4334</a></li>
  <li>Make some general improvements
<a href="https://github.com/rust-gcc/gccrs/pull/4332">PR4332</a></li>
  <li>gccrs: refactor string methods in HIR
<a href="https://github.com/rust-gcc/gccrs/pull/4331">PR4331</a></li>
  <li>Sync with upstream (2025-12-10):
203d4dd09ba83121e447ce93ba98175b68d955f6
<a href="https://github.com/rust-gcc/gccrs/pull/4328">PR4328</a></li>
  <li>Check for deprecated attributes
<a href="https://github.com/rust-gcc/gccrs/pull/4327">PR4327</a></li>
  <li>Follow up to #3212
<a href="https://github.com/rust-gcc/gccrs/pull/4326">PR4326</a></li>
  <li>Use the path location for MetaItemPathExpr
<a href="https://github.com/rust-gcc/gccrs/pull/4324">PR4324</a></li>
  <li>Split the parser implementation into multiple files
<a href="https://github.com/rust-gcc/gccrs/pull/4322">PR4322</a></li>
  <li>Sync with upstream (2025-12-01):
4d1bfc66f84de6b37b175a191cba8cdd552c4383
<a href="https://github.com/rust-gcc/gccrs/pull/4320">PR4320</a></li>
  <li>Improve feature handling
<a href="https://github.com/rust-gcc/gccrs/pull/4319">PR4319</a></li>
  <li>Add missing test for lang item feature gate
<a href="https://github.com/rust-gcc/gccrs/pull/4318">PR4318</a></li>
  <li>Remove match arm pattern vector to single pattern
<a href="https://github.com/rust-gcc/gccrs/pull/4297">PR4297</a></li>
  <li>Implement unused mut lint
<a href="https://github.com/rust-gcc/gccrs/pull/4290">PR4290</a></li>
  <li>Use tl::expected in the parser to avoid error state
<a href="https://github.com/rust-gcc/gccrs/pull/4288">PR4288</a></li>
  <li>Implement unused assignments lints on HIR
<a href="https://github.com/rust-gcc/gccrs/pull/4285">PR4285</a></li>
  <li>Implement unused variable checker on HIR
<a href="https://github.com/rust-gcc/gccrs/pull/4283">PR4283</a></li>
  <li>gccrs:fix ICE with continue/break/return in while condition
<a href="https://github.com/rust-gcc/gccrs/pull/4270">PR4270</a></li>
  <li>gccrs: fix parser error on parenthesised types
<a href="https://github.com/rust-gcc/gccrs/pull/4214">PR4214</a></li>
</ul>

<h3 id="contributors-this-month">Contributors this month</h3>

<ul>
  <li><a href="https://github.com/Harishankar14">Harishankar</a> (new contributor!)</li>
  <li><a href="https://github.com/sneaky-potato">Ashwani Kumar Kamal</a> (new
contributor!)</li>
  <li><a href="https://github.com/powerboat9">Owen Avery</a></li>
  <li><a href="https://github.com/Villosse">Lenny Chiadmi Delage</a></li>
  <li><a href="https://github.com/lucasly-ba">Lucas Ly Ba</a></li>
  <li><a href="https://github.com/dkm">Marc Poulhiès</a></li>
  <li><a href="https://github.com/P-E-P">Pierre-Emmanuel Patry</a></li>
  <li><a href="https://github.com/CohenArthur">Arthur Cohen</a></li>
</ul>

<h3 id="overall-task-status">Overall Task Status</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>419</td>
      <td>409</td>
      <td>-10</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>116</td>
      <td>118</td>
      <td>+2</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>1184</td>
      <td>1194</td>
      <td>+10</td>
    </tr>
  </tbody>
</table>

<h3 id="bugs">Bugs</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>198</td>
      <td>194</td>
      <td>-4</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>55</td>
      <td>56</td>
      <td>+1</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>588</td>
      <td>591</td>
      <td>+3</td>
    </tr>
  </tbody>
</table>

<h3 id="test-cases">Test Cases</h3>

<table>
  <thead>
    <tr>
      <th>TestCases</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Passing</td>
      <td>10444</td>
      <td>10470</td>
      <td>+26</td>
    </tr>
    <tr>
      <td>Failed</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XFAIL</td>
      <td>74</td>
      <td>73</td>
      <td>-1</td>
    </tr>
    <tr>
      <td>XPASS</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
  </tbody>
</table>

<h3 id="milestones-progress">Milestones Progress</h3>

<table>
  <thead>
    <tr>
      <th>Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Rust-for-Linux</td>
      <td>12%</td>
      <td>12%</td>
      <td>-</td>
      <td>1st Nov 2025</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Full core Late nameres issues</td>
      <td>0%</td>
      <td>15%</td>
      <td>+15%</td>
      <td>1st Dec 2025</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Full core Early nameres issues</td>
      <td>60%</td>
      <td>100%</td>
      <td>+40%</td>
      <td>1st Dec 2025</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Full core Typecheck issues</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>21st Jan 2026</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Upcoming Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Unstable RfL features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>-</td>
      <td>1st Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Generic Associated Types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>RfL const generics</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>1st May 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>frontend plugin hooks</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th May 2025</td>
      <td>-</td>
      <td>7th Jul 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Handling the testsuite issues</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>main shim</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>28th Jul 2025</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final core attributes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Core nightly features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Defered inference</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Fn traits fixes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Recursive types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Drop</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Pin, PinInit</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Past Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Data Structures 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th Nov 2020</td>
      <td>27th Jan 2021</td>
      <td>29th Jan 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2021</td>
      <td>10th Feb 2021</td>
      <td>26th Feb 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 2 - Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>11th Feb 2021</td>
      <td>14th May 2021</td>
      <td>28th May 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 3 - Traits</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th May 2021</td>
      <td>17th Sep 2021</td>
      <td>27th Aug 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 2 - Pattern Matching</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th Sep 2021</td>
      <td>9th Dec 2021</td>
      <td>29th Nov 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Macros and cfg expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2021</td>
      <td>31st Mar 2022</td>
      <td>28th Mar 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Imports and Visibility</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>29th Mar 2022</td>
      <td>13th Jul 2022</td>
      <td>27th May 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Const Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th May 2022</td>
      <td>10th Oct 2022</td>
      <td>17th Oct 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Initial upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>10th Oct 2022</td>
      <td>13th Nov 2022</td>
      <td>13th Nov 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Upstream initial patchset</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Nov 2022</td>
      <td>13th Dec 2022</td>
      <td>19th Dec 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Update GCC’s master branch</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2023</td>
      <td>21st Feb 2023</td>
      <td>3rd Mar 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Final set of upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>16th Nov 2022</td>
      <td>1st May 2023</td>
      <td>30th Apr 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Borrow Checking 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>TBD</td>
      <td>8th Jan 2024</td>
      <td>15th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Procedural Macros 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>6th Aug 2023</td>
      <td>6th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 13.2 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>22nd Jul 2023</td>
      <td>15th Jul 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14 Stage 3</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Sep 2023</td>
      <td>20th Sep 2023</td>
      <td>1st Nov 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.1 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>2nd Jan 2024</td>
      <td>2nd Jun 2024</td>
      <td>15th Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>format<sub>args</sub>!() support</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Feb 2024</td>
      <td>-</td>
      <td>1st Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.2</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>GCC 14.2</td>
    </tr>
    <tr>
      <td>GCC 15.1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jun 2024</td>
      <td>31st Jun 2024</td>
      <td>1st Jul 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Unhandled attributes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>15th Aug 2024</td>
      <td>15th Aug 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Inline assembly</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Rustc Testsuite Adaptor</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Borrow checker improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Deref and DerefMut improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Sep 2024</td>
      <td>25th Oct 2024</td>
      <td>28th Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Indexing fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Iterator fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Auto traits improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>20th Jan 2025</td>
      <td>21st Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Lang items</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>10th Jan 2025</td>
      <td>21st Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>alloc parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>std parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Question mark operator</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Dec 2024</td>
      <td>21st Feb 2025</td>
      <td>21st Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Name resolution 2.0 rework</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Macro expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Remaining typecheck issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Oct 2024</td>
      <td>-</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2024</td>
      <td>24th Mar 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Codegen fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Oct 2024</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>black<sub>box</sub> intrinsic</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Oct 2024</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>let-else</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Specialization</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-rfl</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>19th Mar 2025</td>
      <td>15th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Downgrade to Rust 1.49</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>14th Mar 2025</td>
      <td>26th Mar 2025</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>try blocks</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>while-let loops</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>offset<sub>of</sub>!() builtin macro</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>4th Aug 2025</td>
      <td>15th Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Explicit generics with impl Trait</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>21st Jul 2025</td>
      <td>28th Mar 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final Inline assembly fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<h2 id="planned-activities">Planned Activities</h2>]]></content><author><name>Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen</name></author><category term="monthly-report" /><summary type="html"><![CDATA[Overview Thanks again to Open Source Security, inc and Embecosm for their ongoing support for this project. 2026 Introduction Hi everyone! Welcome to our first monthly report of the year 2026! As our work starts again after the winter holidays, we wanted to take some time to outline what is shaping up to be a pretty significant year for gccrs, in a more candid way than the usual tone of these reports. The goal of this is for people interested in our project to know what to expect, how to support us, and what the project will focus on moving forward. We have recently been mentioned in LWN’s “Predictions for the new year” article, which sparked some encouraging and supportive comments that we really enjoyed reading. The specific quote of the article is as follows: “The gccrs project will deliver a working Rust compiler” Wow! That’s not a lot of pressure at all! But Jonathan is right - the goal is for gccrs to be able to compile the Rust parts of the Linux kernel in 2026. Preferably, before RustConf and EuroRust, so that we can make some noise about it. Now, that does not mean that you will be able to use a Linux kernel with the Rust parts compiled by gccrs (we do hope you try and report all of the interesting issues though). gccrs will still be experimental, and even though it should be able to compile the kernel, that does not mean the executable produced will be able to run correctly. For 2026, our goal is for gccrs to be able to mis-compile the kernel. There are things that we do not plan for gccrs to handle just yet, which may incur incorrect behavior in the produced binaries - which is to be expected from an experimental compiler. Thus begins a nine months long marathon to get the kernel compiling :) This time will also be a great opportunity to get in touch with more people on the kernel and Rust side to make sure that gccrs fits in in all the ways that is expected of the project. Regarding the upcoming GCC 16.1 release: while we are working towards getting the kernel working by the time it comes out, this might not happen. For people willing to experiment with compiling their kernel using gccrs, you will have to compile the project from scratch. We hope to get enough in GCC 16.1 so that gccrs is able to compile core, and can thus be used in embedded environments for #![no_std] Rust code. We hope you understand that playing catch up like this takes a long time, and that some problems only show up when compiling actual projects - not simple test cases. While we do have the advantage of knowing what is supposed to work, we run into different problems than if we were just trying to design our own programming language from scratch. Knowing how core works, what compiler tricks are required, how the crate is implemented, is not innate, and while the team is getting pretty good at it, we still have some work to do. Thank you once again for your continued support and involvment. 2025 was a very fun year for the project, and 2026 seems to be headed in the same direction, with even more interesting problems to fix. Project update For the last month of 2025, we have once again made good progress on our name resolution algorithm in the hopes of getting core further along our compilation pipeline. We have not necessarily focused on the kernel itself this month, as most of the team was away on vacation for half of the month. The entire early name resolution and macro expansion fixed-point is now complete for core, which is a massive milestone for the project - it is actually the reason why we decided to rewrite name resolution from scratch a couple of years ago. We are now able to handle all of the complex imports and exports in core, coupled with the extensive amount of macros used for various primitive implementations. This leads us to the second half of the problem, late name resolution, which is currently still not finished for core. This holiday season, we have fixed four massive bugs which impacted core as well as complex Rust crates. There are still a few issues with our late name resolution, namely around certain vectorized types and methods not being found, but nothing too drastic or hard to fix. Other technical improvements include the work done by our two interns, Lenny Chiadmi Delage and Lucas Ly Ba, who have greatly improved various lints in the compiler focused on correctness and safety. January marks our last month with them, and we will greatly miss them and their contributions! We will continue working on these late name resolution issues for the first few weeks of 2026, and will hopefully be able to quickly switch to our middle-end and backend issues for core - which there shouldn’t be much of. Once name resolution passes, we will be able to split our focus between core and the kernel, figuring out what issues show up once the kernel correctly depends on core. As explained before, the goal is for gccrs to be able to compile core and the kernel before RustConf and EuroRust in September, two conferences where we hope to present the work done on the compiler these last two years. The CFPs for these conferences is almost open, which means we are also spending some of our time working on our abstracts. We want to maximize our chances of the talks getting accepted, as these two conferences could be the most important talks we’ve ever given for the project! Finally, our upstreaming is still going strong, as we are sticking to our schedule and uploading commits weekly. We are up to date with the latest GCC, which is also up to date with our development branch. Community call We will have our next monthly community call on the 12th of January at 10am UTC. You can subscribe to our calendar to see when the next one will be held. The call is open to everyone, even if you would just like to sit-in and listen. You can also subscribe to our mailing-list or join our Zulip chat to be notified of upcoming events. Jitsi link Calendar ID: 7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com Google calendar link iCal link Call for contribution https://github.com/Rust-GCC/gccrs/issues/2500 https://github.com/Rust-GCC/gccrs/issues/2376 Completed Activities Sync with upstream (2026-01-03): d5743234731ecc62d889e297a7576561600da41d PR4351 gccrs: Fix rogue macro error during lowering on expansion failure PR4347 nr: Add better error to unresolved attribute macro PR4345 Sync with upstream (2025-12-21): c65fdb6b03d9146ee9a1ffcfcbc689b004b2b463 PR4335 Fix: #![cfgattr(…, feature)]` not respected PR4334 Make some general improvements PR4332 gccrs: refactor string methods in HIR PR4331 Sync with upstream (2025-12-10): 203d4dd09ba83121e447ce93ba98175b68d955f6 PR4328 Check for deprecated attributes PR4327 Follow up to #3212 PR4326 Use the path location for MetaItemPathExpr PR4324 Split the parser implementation into multiple files PR4322 Sync with upstream (2025-12-01): 4d1bfc66f84de6b37b175a191cba8cdd552c4383 PR4320 Improve feature handling PR4319 Add missing test for lang item feature gate PR4318 Remove match arm pattern vector to single pattern PR4297 Implement unused mut lint PR4290 Use tl::expected in the parser to avoid error state PR4288 Implement unused assignments lints on HIR PR4285 Implement unused variable checker on HIR PR4283 gccrs:fix ICE with continue/break/return in while condition PR4270 gccrs: fix parser error on parenthesised types PR4214 Contributors this month Harishankar (new contributor!) Ashwani Kumar Kamal (new contributor!) Owen Avery Lenny Chiadmi Delage Lucas Ly Ba Marc Poulhiès Pierre-Emmanuel Patry Arthur Cohen Overall Task Status Category Last Month This Month Delta TODO 419 409 -10 In Progress 116 118 +2 Completed 1184 1194 +10 Bugs Category Last Month This Month Delta TODO 198 194 -4 In Progress 55 56 +1 Completed 588 591 +3 Test Cases TestCases Last Month This Month Delta Passing 10444 10470 +26 Failed - - - XFAIL 74 73 -1 XPASS - - - Milestones Progress Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Rust-for-Linux 12% 12% - 1st Nov 2025 - - GCC 16.1 Full core Late nameres issues 0% 15% +15% 1st Dec 2025 - - GCC 16.1 Full core Early nameres issues 60% 100% +40% 1st Dec 2025 - - GCC 16.1 Full core Typecheck issues 0% 0% - 21st Jan 2026 - - GCC 16.1 Upcoming Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Unstable RfL features 0% 0% - 7th Jan 2025 - 1st Aug 2025 GCC 16.1 Generic Associated Types 0% 0% - 15th Mar 2025 - 15th Jun 2025 GCC 16.1 RfL const generics 0% 0% - 1st May 2025 - 15th Jun 2025 GCC 16.1 frontend plugin hooks 0% 0% - 15th May 2025 - 7th Jul 2025 GCC 16.1 Handling the testsuite issues 0% 0% - 15th Sep 2024 - 15th Sep 2025 GCC 16.1 main shim 0% 0% - 28th Jul 2025 - 15th Sep 2025 GCC 16.1 Final core attributes 0% 0% -   -   GCC 16.1 Core nightly features 0% 0% -   -   GCC 16.1 Defered inference 0% 0% -   -   GCC 16.1 Fn traits fixes 0% 0% -   -   GCC 16.1 Recursive types 0% 0% -   -   GCC 16.1 Drop 0% 0% -   -   GCC 16.1 Pin, PinInit 0% 0% -   -   GCC 16.1 Past Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Data Structures 1 - Core 100% 100% - 30th Nov 2020 27th Jan 2021 29th Jan 2021 GCC 14.1 Control Flow 1 - Core 100% 100% - 28th Jan 2021 10th Feb 2021 26th Feb 2021 GCC 14.1 Data Structures 2 - Generics 100% 100% - 11th Feb 2021 14th May 2021 28th May 2021 GCC 14.1 Data Structures 3 - Traits 100% 100% - 20th May 2021 17th Sep 2021 27th Aug 2021 GCC 14.1 Control Flow 2 - Pattern Matching 100% 100% - 20th Sep 2021 9th Dec 2021 29th Nov 2021 GCC 14.1 Macros and cfg expansion 100% 100% - 1st Dec 2021 31st Mar 2022 28th Mar 2022 GCC 14.1 Imports and Visibility 100% 100% - 29th Mar 2022 13th Jul 2022 27th May 2022 GCC 14.1 Const Generics 100% 100% - 30th May 2022 10th Oct 2022 17th Oct 2022 GCC 14.1 Initial upstream patches 100% 100% - 10th Oct 2022 13th Nov 2022 13th Nov 2022 GCC 14.1 Upstream initial patchset 100% 100% - 13th Nov 2022 13th Dec 2022 19th Dec 2022 GCC 14.1 Update GCC’s master branch 100% 100% - 1st Jan 2023 21st Feb 2023 3rd Mar 2023 GCC 14.1 Final set of upstream patches 100% 100% - 16th Nov 2022 1st May 2023 30th Apr 2023 GCC 14.1 Borrow Checking 1 100% 100% - TBD 8th Jan 2024 15th Aug 2023 GCC 14.1 Procedural Macros 1 100% 100% - 13th Apr 2023 6th Aug 2023 6th Aug 2023 GCC 14.1 GCC 13.2 Release 100% 100% - 13th Apr 2023 22nd Jul 2023 15th Jul 2023 GCC 14.1 GCC 14 Stage 3 100% 100% - 1st Sep 2023 20th Sep 2023 1st Nov 2023 GCC 14.1 GCC 14.1 Release 100% 100% - 2nd Jan 2024 2nd Jun 2024 15th Apr 2024 GCC 14.1 formatargs!() support 100% 100% - 15th Feb 2024 - 1st Apr 2024 GCC 14.1 GCC 14.2 100% 100% - 7th Jun 2024 15th Jun 2024 15th Jun 2024 GCC 14.2 GCC 15.1 100% 100% - 21st Jun 2024 31st Jun 2024 1st Jul 2024 GCC 15.1 Unhandled attributes 100% 100% - 1st Jul 2024 15th Aug 2024 15th Aug 2024 GCC 15.1 Inline assembly 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Rustc Testsuite Adaptor 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Borrow checker improvements 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Deref and DerefMut improvements 100% 100% - 28th Sep 2024 25th Oct 2024 28th Dec 2024 GCC 15.1 Indexing fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Iterator fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Auto traits improvements 100% 100% - 15th Sep 2024 20th Jan 2025 21st Dec 2024 GCC 15.1 Lang items 100% 100% - 1st Jul 2024 10th Jan 2025 21st Nov 2024 GCC 15.1 alloc parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 15.1 std parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 16.1 Question mark operator 100% 100% - 15th Dec 2024 21st Feb 2025 21st Feb 2025 GCC 15.1 Name resolution 2.0 rework 100% 100% - 1st Jun 2024 - 1st Apr 2025 GCC 15.1 Macro expansion 100% 100% - 1st Jun 2024 - 1st Jan 2025 GCC 15.1 Remaining typecheck issues 100% 100% - 21st Oct 2024 - 1st Mar 2025 GCC 15.1 cfg-core 100% 100% - 1st Dec 2024 24th Mar 2025 1st Mar 2025 GCC 15.1 Codegen fixes 100% 100% - 7th Oct 2024 1st Apr 2025 1st Mar 2025 GCC 15.1 blackbox intrinsic 100% 100% - 28th Oct 2024 - 28th Jan 2025 GCC 15.1 let-else 100% 100% - 28th Jan 2025 - 28th Feb 2025 GCC 15.1 Specialization 100% 100% - 1st Jan 2025 1st Apr 2025 1st Mar 2025 GCC 15.1 cfg-rfl 100% 100% - 7th Jan 2025 19th Mar 2025 15th Feb 2025 GCC 15.1 Downgrade to Rust 1.49 100% 100% - 14th Mar 2025 26th Mar 2025 1st Apr 2025 GCC 15.1 try blocks 100% 100% -   30th Jul 2025   GCC 16.1 while-let loops 100% 100% -   30th Jul 2025   GCC 16.1 offsetof!() builtin macro 100% 100% - 15th Mar 2025 4th Aug 2025 15th Aug 2025 GCC 16.1 Explicit generics with impl Trait 100% 100% - 28th Feb 2025 21st Jul 2025 28th Mar 2025 GCC 16.1 Final Inline assembly fixes 100% 100% -   -   GCC 16.1 Planned Activities]]></summary></entry><entry><title type="html">November 2025 Monthly report</title><link href="https://rust-gcc.github.io/2025/12/06/2025-11-monthly-report.html" rel="alternate" type="text/html" title="November 2025 Monthly report" /><published>2025-12-06T00:00:00+00:00</published><updated>2025-12-06T00:00:00+00:00</updated><id>https://rust-gcc.github.io/2025/12/06/2025-11-monthly-report</id><content type="html" xml:base="https://rust-gcc.github.io/2025/12/06/2025-11-monthly-report.html"><![CDATA[<h2 id="overview">Overview</h2>

<p>Thanks again to <a href="https://opensrcsec.com/">Open Source Security, inc</a> and
<a href="https://www.embecosm.com/">Embecosm</a> for their ongoing support for this
project.</p>

<h3 id="project-update">Project update</h3>

<p>We have made good progress on compiling Rust-for-Linux with a first few
PRs aimed at compiling Generic Associated Types. These types are
unstable in Rust 1.49, and not present in <code class="language-plaintext highlighter-rouge">core</code>, but required for
compiling the kernel crates. Regarding <code class="language-plaintext highlighter-rouge">core</code>, we have made progress on
multiple name resolution issues and are now going much further in the
pipeline. Only a few late name resolution issues remain, which we intend
to fix shortly.</p>

<p>Our upstreaming process is now well ironed out, with weekly upstreams to
GCC. This has led to an increase in reviews and interactions from the
GCC side of the community which is very welcome! Having a more regular
upstream schedule also helped with fixing some bootstrapping issues more
quickly, which were introduced due to changes in the C++ frontend.</p>

<p>We are busy working away at the issues for Rust-for-Linux, and hope to
be able to compile the kernel soon. We will try to present this work at
multiple conferences in 2026, and we hope to have some good news! The
goal is for the Rust front-end of GCC 16.1 to be able to compile the
kernel and most 1.49 Rust code, and we are on track to complete this
objective.</p>

<h3 id="community-call">Community call</h3>

<p>We will have our next monthly community call on the 8th of December at
10am UTC. You can subscribe to our calendar to see when the next one
will be held. The call is open to everyone, even if you would just like
to sit-in and listen. You can also subscribe to our
<a href="https://gcc.gnu.org/mailman/listinfo/gcc-rust">mailing-list</a> or join
our <a href="https://gcc-rust.zulipchat.com">Zulip chat</a> to be notified of
upcoming events.</p>

<ul>
  <li><a href="https://meet.jit.si/gccrs-community-call-december">Jitsi link</a></li>
  <li>Calendar ID:
7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com</li>
  <li><a href="https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com">Google calendar
link</a></li>
  <li><a href="https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics">iCal
link</a></li>
</ul>

<h2 id="call-for-contribution">Call for contribution</h2>

<ul>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2500">https://github.com/Rust-GCC/gccrs/issues/2500</a></p>
  </li>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2376">https://github.com/Rust-GCC/gccrs/issues/2376</a></p>
  </li>
</ul>

<h2 id="completed-activities">Completed Activities</h2>

<ul>
  <li>Improve feature handling
<a href="https://github.com/rust-gcc/gccrs/pull/4319">PR4319</a></li>
  <li>Add missing test for lang item feature gate
<a href="https://github.com/rust-gcc/gccrs/pull/4318">PR4318</a></li>
  <li>Remove non leaf errors
<a href="https://github.com/rust-gcc/gccrs/pull/4317">PR4317</a></li>
  <li>Remove non-leaf error message in delimited tt
<a href="https://github.com/rust-gcc/gccrs/pull/4315">PR4315</a></li>
  <li>gccrs: Fix comment typos in rust-macro-expand.h
<a href="https://github.com/rust-gcc/gccrs/pull/4314">PR4314</a></li>
  <li>Correct spelling of ‘mentionned’
<a href="https://github.com/rust-gcc/gccrs/pull/4313">PR4313</a></li>
  <li>Fixes PR 122886: Initialize uninit boolean
<a href="https://github.com/rust-gcc/gccrs/pull/4312">PR4312</a></li>
  <li>Remove non-leaf parsing failure error
<a href="https://github.com/rust-gcc/gccrs/pull/4310">PR4310</a></li>
  <li>Sync with upstream (2025-11-25):
fb9b614c675f66a7979a5f37ef60f32fab73abdd
<a href="https://github.com/rust-gcc/gccrs/pull/4307">PR4307</a></li>
  <li>ci: add pull-request URL in commit emails
<a href="https://github.com/rust-gcc/gccrs/pull/4306">PR4306</a></li>
  <li>#[lang] not feature gated
<a href="https://github.com/rust-gcc/gccrs/pull/4304">PR4304</a></li>
  <li>Stop an infinite loop at EOF
<a href="https://github.com/rust-gcc/gccrs/pull/4303">PR4303</a></li>
  <li>ci: refactor ccpp workflow
<a href="https://github.com/rust-gcc/gccrs/pull/4299">PR4299</a></li>
  <li>Sync with upstream (2025-11-18):
c48c6c0a50e45735783fc3a626a54e4a9c6bd36f
<a href="https://github.com/rust-gcc/gccrs/pull/4295">PR4295</a></li>
  <li>gccrs: Add support for initial generic associated types
<a href="https://github.com/rust-gcc/gccrs/pull/4292">PR4292</a></li>
  <li>gccrs: Fix `compile<sub>floatliteral</sub>` not compiling
negatives properly
<a href="https://github.com/rust-gcc/gccrs/pull/4287">PR4287</a></li>
  <li>ci: fix reference check
<a href="https://github.com/rust-gcc/gccrs/pull/4286">PR4286</a></li>
  <li>ci: use variable instead of secrets for regular settings
<a href="https://github.com/rust-gcc/gccrs/pull/4284">PR4284</a></li>
  <li>Sync with upstream (2025-11-12):
6947098a34ccc2f64ff52de88a136bc438091c10
<a href="https://github.com/rust-gcc/gccrs/pull/4281">PR4281</a></li>
  <li>ci: drop macos build
<a href="https://github.com/rust-gcc/gccrs/pull/4280">PR4280</a></li>
  <li>gccrs: fix segfault on empty doc attribute
<a href="https://github.com/rust-gcc/gccrs/pull/4271">PR4271</a></li>
  <li>gccrs: fix cfg attribute without parentheses error
<a href="https://github.com/rust-gcc/gccrs/pull/4264">PR4264</a></li>
  <li>README: Fedora: Add `gcc`, `gcc-c++`, `cargo`, and `awk`
<a href="https://github.com/rust-gcc/gccrs/pull/4255">PR4255</a></li>
  <li>gccrs: fix segfault in clone<sub>pattern</sub> w macro
<a href="https://github.com/rust-gcc/gccrs/pull/4217">PR4217</a></li>
  <li>gccrs: add error check if derive has wrong item
<a href="https://github.com/rust-gcc/gccrs/pull/4211">PR4211</a></li>
  <li>Improve feature handling
<a href="https://github.com/rust-gcc/gccrs/pull/4082">PR4082</a></li>
  <li>Add derived set to collect derived nodes.
<a href="https://github.com/rust-gcc/gccrs/pull/4047">PR4047</a></li>
  <li>Create `LocalVariable`
<a href="https://github.com/rust-gcc/gccrs/pull/3862">PR3862</a></li>
</ul>

<h3 id="contributors-this-month">Contributors this month</h3>

<ul>
  <li><a href="https://github.com/jwakely">Jonathan Wakely</a> (new contributor!)</li>
  <li><a href="https://github.com/aytey">Andrew V. Teylu</a> (new contributor!)</li>
  <li><a href="https://github.com/osalbahr">Osama Albahrani</a> (new contributor!)</li>
  <li><a href="https://github.com/lucbf">Lúcio Boari Fleury</a> (new contributor!)</li>
  <li><a href="https://github.com/powerboat9">Owen Avery</a></li>
  <li><a href="https://github.com/P-E-P">Pierre-Emmanuel Patry</a></li>
  <li><a href="https://github.com/dkm">Marc Poulhiès</a></li>
  <li><a href="https://github.com/tamaroning">Raiki Tamura</a></li>
  <li><a href="https://github.com/Polygonalr">Zhi Heng</a></li>
  <li><a href="https://github.com/lucasly-ba">Lucas Ly Ba</a></li>
  <li><a href="https://github.com/Villosse">Lenny Chiadmi-Delage</a></li>
  <li><a href="https://github.com/sakupan102">Ryutaro Okada</a></li>
</ul>

<h3 id="overall-task-status">Overall Task Status</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>418</td>
      <td>419</td>
      <td>+1</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>115</td>
      <td>116</td>
      <td>+1</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>1177</td>
      <td>1184</td>
      <td>+7</td>
    </tr>
  </tbody>
</table>

<h3 id="bugs">Bugs</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>197</td>
      <td>198</td>
      <td>+1</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>55</td>
      <td>55</td>
      <td>-</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>586</td>
      <td>588</td>
      <td>+2</td>
    </tr>
  </tbody>
</table>

<h3 id="test-cases">Test Cases</h3>

<table>
  <thead>
    <tr>
      <th>TestCases</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Passing</td>
      <td>10458</td>
      <td>10444</td>
      <td>-14</td>
    </tr>
    <tr>
      <td>Failed</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XFAIL</td>
      <td>74</td>
      <td>74</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XPASS</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
  </tbody>
</table>

<h3 id="milestones-progress">Milestones Progress</h3>

<table>
  <thead>
    <tr>
      <th>Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Rust-for-Linux</td>
      <td>0%</td>
      <td>12%</td>
      <td>+12%</td>
      <td>1st Nov 2025</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Upcoming Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Unstable RfL features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>-</td>
      <td>1st Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Generic Associated Types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>RfL const generics</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>1st May 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>frontend plugin hooks</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th May 2025</td>
      <td>-</td>
      <td>7th Jul 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Handling the testsuite issues</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>main shim</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>28th Jul 2025</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final core attributes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Core nightly features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Defered inference</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Fn traits fixes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Recursive types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Drop</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Pin, PinInit</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Past Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Data Structures 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th Nov 2020</td>
      <td>27th Jan 2021</td>
      <td>29th Jan 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2021</td>
      <td>10th Feb 2021</td>
      <td>26th Feb 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 2 - Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>11th Feb 2021</td>
      <td>14th May 2021</td>
      <td>28th May 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 3 - Traits</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th May 2021</td>
      <td>17th Sep 2021</td>
      <td>27th Aug 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 2 - Pattern Matching</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th Sep 2021</td>
      <td>9th Dec 2021</td>
      <td>29th Nov 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Macros and cfg expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2021</td>
      <td>31st Mar 2022</td>
      <td>28th Mar 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Imports and Visibility</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>29th Mar 2022</td>
      <td>13th Jul 2022</td>
      <td>27th May 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Const Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th May 2022</td>
      <td>10th Oct 2022</td>
      <td>17th Oct 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Initial upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>10th Oct 2022</td>
      <td>13th Nov 2022</td>
      <td>13th Nov 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Upstream initial patchset</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Nov 2022</td>
      <td>13th Dec 2022</td>
      <td>19th Dec 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Update GCC’s master branch</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2023</td>
      <td>21st Feb 2023</td>
      <td>3rd Mar 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Final set of upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>16th Nov 2022</td>
      <td>1st May 2023</td>
      <td>30th Apr 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Borrow Checking 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>TBD</td>
      <td>8th Jan 2024</td>
      <td>15th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Procedural Macros 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>6th Aug 2023</td>
      <td>6th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 13.2 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>22nd Jul 2023</td>
      <td>15th Jul 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14 Stage 3</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Sep 2023</td>
      <td>20th Sep 2023</td>
      <td>1st Nov 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.1 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>2nd Jan 2024</td>
      <td>2nd Jun 2024</td>
      <td>15th Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>format<sub>args</sub>!() support</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Feb 2024</td>
      <td>-</td>
      <td>1st Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.2</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>GCC 14.2</td>
    </tr>
    <tr>
      <td>GCC 15.1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jun 2024</td>
      <td>31st Jun 2024</td>
      <td>1st Jul 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Unhandled attributes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>15th Aug 2024</td>
      <td>15th Aug 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Inline assembly</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Rustc Testsuite Adaptor</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Borrow checker improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Deref and DerefMut improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Sep 2024</td>
      <td>25th Oct 2024</td>
      <td>28th Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Indexing fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Iterator fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Auto traits improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>20th Jan 2025</td>
      <td>21st Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Lang items</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>10th Jan 2025</td>
      <td>21st Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>alloc parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>std parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Question mark operator</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Dec 2024</td>
      <td>21st Feb 2025</td>
      <td>21st Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Name resolution 2.0 rework</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Macro expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Remaining typecheck issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Oct 2024</td>
      <td>-</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2024</td>
      <td>24th Mar 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Codegen fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Oct 2024</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>black<sub>box</sub> intrinsic</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Oct 2024</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>let-else</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Specialization</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-rfl</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>19th Mar 2025</td>
      <td>15th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Downgrade to Rust 1.49</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>14th Mar 2025</td>
      <td>26th Mar 2025</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>try blocks</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>while-let loops</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>offset<sub>of</sub>!() builtin macro</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>4th Aug 2025</td>
      <td>15th Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Explicit generics with impl Trait</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>21st Jul 2025</td>
      <td>28th Mar 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final Inline assembly fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<h2 id="planned-activities">Planned Activities</h2>

<ul>
  <li>Finish debugging <code class="language-plaintext highlighter-rouge">core</code></li>
  <li>Continue collecting issues for Rust-for-Linux milestones</li>
  <li>Work on RfL issues</li>
</ul>]]></content><author><name>Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen</name></author><category term="monthly-report" /><summary type="html"><![CDATA[Overview Thanks again to Open Source Security, inc and Embecosm for their ongoing support for this project. Project update We have made good progress on compiling Rust-for-Linux with a first few PRs aimed at compiling Generic Associated Types. These types are unstable in Rust 1.49, and not present in core, but required for compiling the kernel crates. Regarding core, we have made progress on multiple name resolution issues and are now going much further in the pipeline. Only a few late name resolution issues remain, which we intend to fix shortly. Our upstreaming process is now well ironed out, with weekly upstreams to GCC. This has led to an increase in reviews and interactions from the GCC side of the community which is very welcome! Having a more regular upstream schedule also helped with fixing some bootstrapping issues more quickly, which were introduced due to changes in the C++ frontend. We are busy working away at the issues for Rust-for-Linux, and hope to be able to compile the kernel soon. We will try to present this work at multiple conferences in 2026, and we hope to have some good news! The goal is for the Rust front-end of GCC 16.1 to be able to compile the kernel and most 1.49 Rust code, and we are on track to complete this objective. Community call We will have our next monthly community call on the 8th of December at 10am UTC. You can subscribe to our calendar to see when the next one will be held. The call is open to everyone, even if you would just like to sit-in and listen. You can also subscribe to our mailing-list or join our Zulip chat to be notified of upcoming events. Jitsi link Calendar ID: 7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com Google calendar link iCal link Call for contribution https://github.com/Rust-GCC/gccrs/issues/2500 https://github.com/Rust-GCC/gccrs/issues/2376 Completed Activities Improve feature handling PR4319 Add missing test for lang item feature gate PR4318 Remove non leaf errors PR4317 Remove non-leaf error message in delimited tt PR4315 gccrs: Fix comment typos in rust-macro-expand.h PR4314 Correct spelling of ‘mentionned’ PR4313 Fixes PR 122886: Initialize uninit boolean PR4312 Remove non-leaf parsing failure error PR4310 Sync with upstream (2025-11-25): fb9b614c675f66a7979a5f37ef60f32fab73abdd PR4307 ci: add pull-request URL in commit emails PR4306 #[lang] not feature gated PR4304 Stop an infinite loop at EOF PR4303 ci: refactor ccpp workflow PR4299 Sync with upstream (2025-11-18): c48c6c0a50e45735783fc3a626a54e4a9c6bd36f PR4295 gccrs: Add support for initial generic associated types PR4292 gccrs: Fix `compilefloatliteral` not compiling negatives properly PR4287 ci: fix reference check PR4286 ci: use variable instead of secrets for regular settings PR4284 Sync with upstream (2025-11-12): 6947098a34ccc2f64ff52de88a136bc438091c10 PR4281 ci: drop macos build PR4280 gccrs: fix segfault on empty doc attribute PR4271 gccrs: fix cfg attribute without parentheses error PR4264 README: Fedora: Add `gcc`, `gcc-c++`, `cargo`, and `awk` PR4255 gccrs: fix segfault in clonepattern w macro PR4217 gccrs: add error check if derive has wrong item PR4211 Improve feature handling PR4082 Add derived set to collect derived nodes. PR4047 Create `LocalVariable` PR3862 Contributors this month Jonathan Wakely (new contributor!) Andrew V. Teylu (new contributor!) Osama Albahrani (new contributor!) Lúcio Boari Fleury (new contributor!) Owen Avery Pierre-Emmanuel Patry Marc Poulhiès Raiki Tamura Zhi Heng Lucas Ly Ba Lenny Chiadmi-Delage Ryutaro Okada Overall Task Status Category Last Month This Month Delta TODO 418 419 +1 In Progress 115 116 +1 Completed 1177 1184 +7 Bugs Category Last Month This Month Delta TODO 197 198 +1 In Progress 55 55 - Completed 586 588 +2 Test Cases TestCases Last Month This Month Delta Passing 10458 10444 -14 Failed - - - XFAIL 74 74 - XPASS - - - Milestones Progress Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Rust-for-Linux 0% 12% +12% 1st Nov 2025 - - GCC 16.1 Upcoming Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Unstable RfL features 0% 0% - 7th Jan 2025 - 1st Aug 2025 GCC 16.1 Generic Associated Types 0% 0% - 15th Mar 2025 - 15th Jun 2025 GCC 16.1 RfL const generics 0% 0% - 1st May 2025 - 15th Jun 2025 GCC 16.1 frontend plugin hooks 0% 0% - 15th May 2025 - 7th Jul 2025 GCC 16.1 Handling the testsuite issues 0% 0% - 15th Sep 2024 - 15th Sep 2025 GCC 16.1 main shim 0% 0% - 28th Jul 2025 - 15th Sep 2025 GCC 16.1 Final core attributes 0% 0% -   -   GCC 16.1 Core nightly features 0% 0% -   -   GCC 16.1 Defered inference 0% 0% -   -   GCC 16.1 Fn traits fixes 0% 0% -   -   GCC 16.1 Recursive types 0% 0% -   -   GCC 16.1 Drop 0% 0% -   -   GCC 16.1 Pin, PinInit 0% 0% -   -   GCC 16.1 Past Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Data Structures 1 - Core 100% 100% - 30th Nov 2020 27th Jan 2021 29th Jan 2021 GCC 14.1 Control Flow 1 - Core 100% 100% - 28th Jan 2021 10th Feb 2021 26th Feb 2021 GCC 14.1 Data Structures 2 - Generics 100% 100% - 11th Feb 2021 14th May 2021 28th May 2021 GCC 14.1 Data Structures 3 - Traits 100% 100% - 20th May 2021 17th Sep 2021 27th Aug 2021 GCC 14.1 Control Flow 2 - Pattern Matching 100% 100% - 20th Sep 2021 9th Dec 2021 29th Nov 2021 GCC 14.1 Macros and cfg expansion 100% 100% - 1st Dec 2021 31st Mar 2022 28th Mar 2022 GCC 14.1 Imports and Visibility 100% 100% - 29th Mar 2022 13th Jul 2022 27th May 2022 GCC 14.1 Const Generics 100% 100% - 30th May 2022 10th Oct 2022 17th Oct 2022 GCC 14.1 Initial upstream patches 100% 100% - 10th Oct 2022 13th Nov 2022 13th Nov 2022 GCC 14.1 Upstream initial patchset 100% 100% - 13th Nov 2022 13th Dec 2022 19th Dec 2022 GCC 14.1 Update GCC’s master branch 100% 100% - 1st Jan 2023 21st Feb 2023 3rd Mar 2023 GCC 14.1 Final set of upstream patches 100% 100% - 16th Nov 2022 1st May 2023 30th Apr 2023 GCC 14.1 Borrow Checking 1 100% 100% - TBD 8th Jan 2024 15th Aug 2023 GCC 14.1 Procedural Macros 1 100% 100% - 13th Apr 2023 6th Aug 2023 6th Aug 2023 GCC 14.1 GCC 13.2 Release 100% 100% - 13th Apr 2023 22nd Jul 2023 15th Jul 2023 GCC 14.1 GCC 14 Stage 3 100% 100% - 1st Sep 2023 20th Sep 2023 1st Nov 2023 GCC 14.1 GCC 14.1 Release 100% 100% - 2nd Jan 2024 2nd Jun 2024 15th Apr 2024 GCC 14.1 formatargs!() support 100% 100% - 15th Feb 2024 - 1st Apr 2024 GCC 14.1 GCC 14.2 100% 100% - 7th Jun 2024 15th Jun 2024 15th Jun 2024 GCC 14.2 GCC 15.1 100% 100% - 21st Jun 2024 31st Jun 2024 1st Jul 2024 GCC 15.1 Unhandled attributes 100% 100% - 1st Jul 2024 15th Aug 2024 15th Aug 2024 GCC 15.1 Inline assembly 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Rustc Testsuite Adaptor 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Borrow checker improvements 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Deref and DerefMut improvements 100% 100% - 28th Sep 2024 25th Oct 2024 28th Dec 2024 GCC 15.1 Indexing fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Iterator fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Auto traits improvements 100% 100% - 15th Sep 2024 20th Jan 2025 21st Dec 2024 GCC 15.1 Lang items 100% 100% - 1st Jul 2024 10th Jan 2025 21st Nov 2024 GCC 15.1 alloc parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 15.1 std parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 16.1 Question mark operator 100% 100% - 15th Dec 2024 21st Feb 2025 21st Feb 2025 GCC 15.1 Name resolution 2.0 rework 100% 100% - 1st Jun 2024 - 1st Apr 2025 GCC 15.1 Macro expansion 100% 100% - 1st Jun 2024 - 1st Jan 2025 GCC 15.1 Remaining typecheck issues 100% 100% - 21st Oct 2024 - 1st Mar 2025 GCC 15.1 cfg-core 100% 100% - 1st Dec 2024 24th Mar 2025 1st Mar 2025 GCC 15.1 Codegen fixes 100% 100% - 7th Oct 2024 1st Apr 2025 1st Mar 2025 GCC 15.1 blackbox intrinsic 100% 100% - 28th Oct 2024 - 28th Jan 2025 GCC 15.1 let-else 100% 100% - 28th Jan 2025 - 28th Feb 2025 GCC 15.1 Specialization 100% 100% - 1st Jan 2025 1st Apr 2025 1st Mar 2025 GCC 15.1 cfg-rfl 100% 100% - 7th Jan 2025 19th Mar 2025 15th Feb 2025 GCC 15.1 Downgrade to Rust 1.49 100% 100% - 14th Mar 2025 26th Mar 2025 1st Apr 2025 GCC 15.1 try blocks 100% 100% -   30th Jul 2025   GCC 16.1 while-let loops 100% 100% -   30th Jul 2025   GCC 16.1 offsetof!() builtin macro 100% 100% - 15th Mar 2025 4th Aug 2025 15th Aug 2025 GCC 16.1 Explicit generics with impl Trait 100% 100% - 28th Feb 2025 21st Jul 2025 28th Mar 2025 GCC 16.1 Final Inline assembly fixes 100% 100% -   -   GCC 16.1 Planned Activities Finish debugging core Continue collecting issues for Rust-for-Linux milestones Work on RfL issues]]></summary></entry><entry><title type="html">October 2025 Monthly report</title><link href="https://rust-gcc.github.io/2025/11/17/2025-10-monthly-report.html" rel="alternate" type="text/html" title="October 2025 Monthly report" /><published>2025-11-17T00:00:00+00:00</published><updated>2025-11-17T00:00:00+00:00</updated><id>https://rust-gcc.github.io/2025/11/17/2025-10-monthly-report</id><content type="html" xml:base="https://rust-gcc.github.io/2025/11/17/2025-10-monthly-report.html"><![CDATA[<h2 id="overview">Overview</h2>

<p>Thanks again to <a href="https://opensrcsec.com/">Open Source Security, inc</a> and
<a href="https://www.embecosm.com/">Embecosm</a> for their ongoing support for this
project.</p>

<h3 id="project-update">Project update</h3>

<p>We have started experimenting with compiling Rust-for-Linux, as planned
in our last monthly reports, and we are happy to report very few issues
apart from the ones related to requiring a functional <code class="language-plaintext highlighter-rouge">core</code> crate. We
then created a new Rust-for-Linux milestone to gather all the missing
functionality required for compiling the Rust parts of the kernel, and
are still collecting issues.</p>

<p>Work on this will continue in parallel with the last few reminaing
bugfixes for <code class="language-plaintext highlighter-rouge">core</code>. However, due to other Embecosm projects,
Pierre-Emmanuel and Arthur did not have enough time in November to
complete these few remaining bugs.</p>

<p>In other news, our two french interns are progressing really fast and
will soon begin contributing to complete milestones for certain
unhandled features required for Rust-for-Linux and further existing Rust
code. They are very proficient and greatly help the team with the issues
they tackle. For now, they are focusing on non-critical parts of the
pipeline such as emitting warnings in certain conditions and fixing
Internal Compiler Errors.</p>

<p>We have ironed out our upstreaming processes and now rebase gccrs on top
of trunk regularly. Similarly, it is really easy for us to update trunk
with our latest gccrs changes, which we are currently sending upstream
once a week. This caused a few pain points when bootstrapping due to
existing issues in the C++ frontend, but they are now resolved.</p>

<p>Thanks to the work from Marc Poulhies, our CI now sends emails to the
GCC Patches mailing list for each commit merged in our development
repository on github. This makes it easy for GCC hackers to interact
with our Rust frontend and review patches as they come in. We have been
testing the system for a month now, and Marc has ironed out the kinks,
meaning it will be deployed on the 10th of November after a message
explaining the steps on the GCC mailing lists.</p>

<h3 id="community-call">Community call</h3>

<p>We will have our next monthly community call on the 17th of November at
10am UTC. You can subscribe to our calendar to see when the next one
will be held. The call is open to everyone, even if you would just like
to sit-in and listen. You can also subscribe to our
<a href="https://gcc.gnu.org/mailman/listinfo/gcc-rust">mailing-list</a> or join
our <a href="https://gcc-rust.zulipchat.com">Zulip chat</a> to be notified of
upcoming events.</p>

<ul>
  <li><a href="https://meet.jit.si/gccrs-community-call-november">Jitsi link</a></li>
  <li>Calendar ID:
7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com</li>
  <li><a href="https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com">Google calendar
link</a></li>
  <li><a href="https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics">iCal
link</a></li>
</ul>

<h2 id="call-for-contribution">Call for contribution</h2>

<ul>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2500">https://github.com/Rust-GCC/gccrs/issues/2500</a></p>
  </li>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2376">https://github.com/Rust-GCC/gccrs/issues/2376</a></p>
  </li>
</ul>

<h2 id="completed-activities">Completed Activities</h2>

<ul>
  <li>gccrs: Fix segv in errors in type checking an impl item
<a href="https://github.com/rust-gcc/gccrs/pull/4274">PR4274</a></li>
  <li>gccrs: Support generic constant impl items
<a href="https://github.com/rust-gcc/gccrs/pull/4273">PR4273</a></li>
  <li>gccrs: Fix const generics handling on array types
<a href="https://github.com/rust-gcc/gccrs/pull/4272">PR4272</a></li>
  <li>gccrs: fix error multiple cfg predicates
<a href="https://github.com/rust-gcc/gccrs/pull/4268">PR4268</a></li>
  <li>gccrs: fix cfg attribute error with literal predicate
<a href="https://github.com/rust-gcc/gccrs/pull/4266">PR4266</a></li>
  <li>gccrs: fix segfault with empty cfg attribute
<a href="https://github.com/rust-gcc/gccrs/pull/4263">PR4263</a></li>
  <li>gccrs: Add support for binding const generic values to paths
<a href="https://github.com/rust-gcc/gccrs/pull/4253">PR4253</a></li>
  <li>Sync with upstream (2025-10-31):
468f8a3df1cd9e63b38cd4855926e9507b916fd0
<a href="https://github.com/rust-gcc/gccrs/pull/4251">PR4251</a></li>
  <li>gccrs: Fix ICE with non-trailing const defaults
<a href="https://github.com/rust-gcc/gccrs/pull/4250">PR4250</a></li>
  <li>Sync with upstream (2025-10-27):
9e10fc177be25e5430e72a5c55ce7a36c45562c3
<a href="https://github.com/rust-gcc/gccrs/pull/4248">PR4248</a></li>
  <li>gccrs: Add minus sign compilation for LiteralPattern
<a href="https://github.com/rust-gcc/gccrs/pull/4247">PR4247</a></li>
  <li>gccrs: Fix negative bounds in `RangePattern` being handled
incorrectly <a href="https://github.com/rust-gcc/gccrs/pull/4243">PR4243</a></li>
  <li>gccrs: Fix ICE on enum in tuple struct pattern
<a href="https://github.com/rust-gcc/gccrs/pull/4241">PR4241</a></li>
  <li>Update tuple pattern type-check to attempt to continue resolving
items after size error
<a href="https://github.com/rust-gcc/gccrs/pull/4239">PR4239</a></li>
  <li>Fix ICE for repr attribute malformation
<a href="https://github.com/rust-gcc/gccrs/pull/4238">PR4238</a></li>
  <li>gccrs: make invalid inner attributes show error
<a href="https://github.com/rust-gcc/gccrs/pull/4237">PR4237</a></li>
  <li>ci: stop using pull<sub>request</sub> event, use push
<a href="https://github.com/rust-gcc/gccrs/pull/4224">PR4224</a></li>
  <li>gccrs: fix inner attr derive doesn’t show error
<a href="https://github.com/rust-gcc/gccrs/pull/4218">PR4218</a></li>
  <li>gccrs: fix segfault on exported macro
<a href="https://github.com/rust-gcc/gccrs/pull/4215">PR4215</a></li>
  <li>Bump clang-format version to use in CONTRIBUTING.md
<a href="https://github.com/rust-gcc/gccrs/pull/4208">PR4208</a></li>
  <li>gccrs: fix ICE on missing pattern in while loop
<a href="https://github.com/rust-gcc/gccrs/pull/4207">PR4207</a></li>
  <li>gccrs: fix ICE in TyVar constructor
<a href="https://github.com/rust-gcc/gccrs/pull/4206">PR4206</a></li>
  <li>gccrs: Emit error when tuple-indexing on non-tuples
<a href="https://github.com/rust-gcc/gccrs/pull/4205">PR4205</a></li>
  <li>ci: refactor conditional parts
<a href="https://github.com/rust-gcc/gccrs/pull/4202">PR4202</a></li>
  <li>gccrs: Refactor TyTy::ConstType into separate types
<a href="https://github.com/rust-gcc/gccrs/pull/4199">PR4199</a></li>
  <li>fix: early return for module file error in AST parsing
<a href="https://github.com/rust-gcc/gccrs/pull/4151">PR4151</a></li>
  <li>Improve macro expansion for `libcore`
<a href="https://github.com/rust-gcc/gccrs/pull/4053">PR4053</a></li>
</ul>

<h3 id="contributors-this-month">Contributors this month</h3>

<ul>
  <li><a href="https://github.com/lucasly-ba">Lucas Ly Ba</a> (new contributor!)</li>
  <li><a href="https://github.com/Villosse">Lenny Chiadmi-Delage</a> (new
contributor!)</li>
  <li><a href="https://github.com/lowr">LowR</a> (new contributor!)</li>
  <li><a href="https://github.com/Lishin1215">Lishin</a> (new contributor!)</li>
  <li><a href="https://github.com/0xllx0">elle</a></li>
  <li><a href="https://github.com/vishruth-thimmaiah">Vishruth Thimmaiah</a></li>
  <li><a href="https://github.com/Polygonalr">Zhi Heng</a></li>
  <li><a href="https://github.com/dkm">Marc Poulhiès</a></li>
  <li><a href="https://github.com/powerboat9">Owen Avery</a></li>
  <li><a href="https://github.com/P-E-P">Pierre-Emmanuel Patry</a></li>
  <li><a href="https://github.com/philberty">Philip Herron</a></li>
  <li><a href="https://github.com/CohenArthur">Arthur Cohen</a></li>
</ul>

<h3 id="overall-task-status">Overall Task Status</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>406</td>
      <td>418</td>
      <td>+12</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>115</td>
      <td>115</td>
      <td>-</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>1154</td>
      <td>1177</td>
      <td>+23</td>
    </tr>
  </tbody>
</table>

<h3 id="bugs">Bugs</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>207</td>
      <td>197</td>
      <td>-10</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>55</td>
      <td>55</td>
      <td>-</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>572</td>
      <td>586</td>
      <td>+14</td>
    </tr>
  </tbody>
</table>

<h3 id="test-cases">Test Cases</h3>

<table>
  <thead>
    <tr>
      <th>TestCases</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Passing</td>
      <td>10304</td>
      <td>10458</td>
      <td>+154</td>
    </tr>
    <tr>
      <td>Failed</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XFAIL</td>
      <td>72</td>
      <td>74</td>
      <td>+2</td>
    </tr>
    <tr>
      <td>XPASS</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
  </tbody>
</table>

<h3 id="milestones-progress">Milestones Progress</h3>

<table>
  <thead>
    <tr>
      <th>Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Rust-for-Linux</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>1st Nov 2025</td>
      <td>-</td>
      <td>-</td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Upcoming Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Unstable RfL features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>-</td>
      <td>1st Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Generic Associated Types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>RfL const generics</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>1st May 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>frontend plugin hooks</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th May 2025</td>
      <td>-</td>
      <td>7th Jul 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Handling the testsuite issues</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>main shim</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>28th Jul 2025</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final core attributes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Core nightly features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Defered inference</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Fn traits fixes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Recursive types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Drop</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Pin, PinInit</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Past Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Data Structures 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th Nov 2020</td>
      <td>27th Jan 2021</td>
      <td>29th Jan 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2021</td>
      <td>10th Feb 2021</td>
      <td>26th Feb 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 2 - Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>11th Feb 2021</td>
      <td>14th May 2021</td>
      <td>28th May 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 3 - Traits</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th May 2021</td>
      <td>17th Sep 2021</td>
      <td>27th Aug 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 2 - Pattern Matching</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th Sep 2021</td>
      <td>9th Dec 2021</td>
      <td>29th Nov 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Macros and cfg expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2021</td>
      <td>31st Mar 2022</td>
      <td>28th Mar 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Imports and Visibility</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>29th Mar 2022</td>
      <td>13th Jul 2022</td>
      <td>27th May 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Const Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th May 2022</td>
      <td>10th Oct 2022</td>
      <td>17th Oct 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Initial upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>10th Oct 2022</td>
      <td>13th Nov 2022</td>
      <td>13th Nov 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Upstream initial patchset</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Nov 2022</td>
      <td>13th Dec 2022</td>
      <td>19th Dec 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Update GCC’s master branch</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2023</td>
      <td>21st Feb 2023</td>
      <td>3rd Mar 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Final set of upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>16th Nov 2022</td>
      <td>1st May 2023</td>
      <td>30th Apr 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Borrow Checking 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>TBD</td>
      <td>8th Jan 2024</td>
      <td>15th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Procedural Macros 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>6th Aug 2023</td>
      <td>6th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 13.2 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>22nd Jul 2023</td>
      <td>15th Jul 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14 Stage 3</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Sep 2023</td>
      <td>20th Sep 2023</td>
      <td>1st Nov 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.1 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>2nd Jan 2024</td>
      <td>2nd Jun 2024</td>
      <td>15th Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>format<sub>args</sub>!() support</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Feb 2024</td>
      <td>-</td>
      <td>1st Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.2</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>GCC 14.2</td>
    </tr>
    <tr>
      <td>GCC 15.1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jun 2024</td>
      <td>31st Jun 2024</td>
      <td>1st Jul 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Unhandled attributes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>15th Aug 2024</td>
      <td>15th Aug 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Inline assembly</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Rustc Testsuite Adaptor</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Borrow checker improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Deref and DerefMut improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Sep 2024</td>
      <td>25th Oct 2024</td>
      <td>28th Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Indexing fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Iterator fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Auto traits improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>20th Jan 2025</td>
      <td>21st Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Lang items</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>10th Jan 2025</td>
      <td>21st Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>alloc parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>std parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Question mark operator</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Dec 2024</td>
      <td>21st Feb 2025</td>
      <td>21st Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Name resolution 2.0 rework</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Macro expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Remaining typecheck issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Oct 2024</td>
      <td>-</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2024</td>
      <td>24th Mar 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Codegen fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Oct 2024</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>black<sub>box</sub> intrinsic</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Oct 2024</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>let-else</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Specialization</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-rfl</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>19th Mar 2025</td>
      <td>15th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Downgrade to Rust 1.49</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>14th Mar 2025</td>
      <td>26th Mar 2025</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>try blocks</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>while-let loops</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>offset<sub>of</sub>!() builtin macro</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>4th Aug 2025</td>
      <td>15th Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Explicit generics with impl Trait</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>21st Jul 2025</td>
      <td>28th Mar 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final Inline assembly fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<h2 id="planned-activities">Planned Activities</h2>

<ul>
  <li>Finish debugging <code class="language-plaintext highlighter-rouge">core</code></li>
  <li>Continue collecting issues for Rust-for-Linux milestones</li>
  <li>Work on RfL issues</li>
</ul>]]></content><author><name>Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen</name></author><category term="monthly-report" /><summary type="html"><![CDATA[Overview Thanks again to Open Source Security, inc and Embecosm for their ongoing support for this project. Project update We have started experimenting with compiling Rust-for-Linux, as planned in our last monthly reports, and we are happy to report very few issues apart from the ones related to requiring a functional core crate. We then created a new Rust-for-Linux milestone to gather all the missing functionality required for compiling the Rust parts of the kernel, and are still collecting issues. Work on this will continue in parallel with the last few reminaing bugfixes for core. However, due to other Embecosm projects, Pierre-Emmanuel and Arthur did not have enough time in November to complete these few remaining bugs. In other news, our two french interns are progressing really fast and will soon begin contributing to complete milestones for certain unhandled features required for Rust-for-Linux and further existing Rust code. They are very proficient and greatly help the team with the issues they tackle. For now, they are focusing on non-critical parts of the pipeline such as emitting warnings in certain conditions and fixing Internal Compiler Errors. We have ironed out our upstreaming processes and now rebase gccrs on top of trunk regularly. Similarly, it is really easy for us to update trunk with our latest gccrs changes, which we are currently sending upstream once a week. This caused a few pain points when bootstrapping due to existing issues in the C++ frontend, but they are now resolved. Thanks to the work from Marc Poulhies, our CI now sends emails to the GCC Patches mailing list for each commit merged in our development repository on github. This makes it easy for GCC hackers to interact with our Rust frontend and review patches as they come in. We have been testing the system for a month now, and Marc has ironed out the kinks, meaning it will be deployed on the 10th of November after a message explaining the steps on the GCC mailing lists. Community call We will have our next monthly community call on the 17th of November at 10am UTC. You can subscribe to our calendar to see when the next one will be held. The call is open to everyone, even if you would just like to sit-in and listen. You can also subscribe to our mailing-list or join our Zulip chat to be notified of upcoming events. Jitsi link Calendar ID: 7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com Google calendar link iCal link Call for contribution https://github.com/Rust-GCC/gccrs/issues/2500 https://github.com/Rust-GCC/gccrs/issues/2376 Completed Activities gccrs: Fix segv in errors in type checking an impl item PR4274 gccrs: Support generic constant impl items PR4273 gccrs: Fix const generics handling on array types PR4272 gccrs: fix error multiple cfg predicates PR4268 gccrs: fix cfg attribute error with literal predicate PR4266 gccrs: fix segfault with empty cfg attribute PR4263 gccrs: Add support for binding const generic values to paths PR4253 Sync with upstream (2025-10-31): 468f8a3df1cd9e63b38cd4855926e9507b916fd0 PR4251 gccrs: Fix ICE with non-trailing const defaults PR4250 Sync with upstream (2025-10-27): 9e10fc177be25e5430e72a5c55ce7a36c45562c3 PR4248 gccrs: Add minus sign compilation for LiteralPattern PR4247 gccrs: Fix negative bounds in `RangePattern` being handled incorrectly PR4243 gccrs: Fix ICE on enum in tuple struct pattern PR4241 Update tuple pattern type-check to attempt to continue resolving items after size error PR4239 Fix ICE for repr attribute malformation PR4238 gccrs: make invalid inner attributes show error PR4237 ci: stop using pullrequest event, use push PR4224 gccrs: fix inner attr derive doesn’t show error PR4218 gccrs: fix segfault on exported macro PR4215 Bump clang-format version to use in CONTRIBUTING.md PR4208 gccrs: fix ICE on missing pattern in while loop PR4207 gccrs: fix ICE in TyVar constructor PR4206 gccrs: Emit error when tuple-indexing on non-tuples PR4205 ci: refactor conditional parts PR4202 gccrs: Refactor TyTy::ConstType into separate types PR4199 fix: early return for module file error in AST parsing PR4151 Improve macro expansion for `libcore` PR4053 Contributors this month Lucas Ly Ba (new contributor!) Lenny Chiadmi-Delage (new contributor!) LowR (new contributor!) Lishin (new contributor!) elle Vishruth Thimmaiah Zhi Heng Marc Poulhiès Owen Avery Pierre-Emmanuel Patry Philip Herron Arthur Cohen Overall Task Status Category Last Month This Month Delta TODO 406 418 +12 In Progress 115 115 - Completed 1154 1177 +23 Bugs Category Last Month This Month Delta TODO 207 197 -10 In Progress 55 55 - Completed 572 586 +14 Test Cases TestCases Last Month This Month Delta Passing 10304 10458 +154 Failed - - - XFAIL 72 74 +2 XPASS - - - Milestones Progress Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Rust-for-Linux 0% 0% - 1st Nov 2025 - - GCC 16.1 Upcoming Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Unstable RfL features 0% 0% - 7th Jan 2025 - 1st Aug 2025 GCC 16.1 Generic Associated Types 0% 0% - 15th Mar 2025 - 15th Jun 2025 GCC 16.1 RfL const generics 0% 0% - 1st May 2025 - 15th Jun 2025 GCC 16.1 frontend plugin hooks 0% 0% - 15th May 2025 - 7th Jul 2025 GCC 16.1 Handling the testsuite issues 0% 0% - 15th Sep 2024 - 15th Sep 2025 GCC 16.1 main shim 0% 0% - 28th Jul 2025 - 15th Sep 2025 GCC 16.1 Final core attributes 0% 0% -   -   GCC 16.1 Core nightly features 0% 0% -   -   GCC 16.1 Defered inference 0% 0% -   -   GCC 16.1 Fn traits fixes 0% 0% -   -   GCC 16.1 Recursive types 0% 0% -   -   GCC 16.1 Drop 0% 0% -   -   GCC 16.1 Pin, PinInit 0% 0% -   -   GCC 16.1 Past Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Data Structures 1 - Core 100% 100% - 30th Nov 2020 27th Jan 2021 29th Jan 2021 GCC 14.1 Control Flow 1 - Core 100% 100% - 28th Jan 2021 10th Feb 2021 26th Feb 2021 GCC 14.1 Data Structures 2 - Generics 100% 100% - 11th Feb 2021 14th May 2021 28th May 2021 GCC 14.1 Data Structures 3 - Traits 100% 100% - 20th May 2021 17th Sep 2021 27th Aug 2021 GCC 14.1 Control Flow 2 - Pattern Matching 100% 100% - 20th Sep 2021 9th Dec 2021 29th Nov 2021 GCC 14.1 Macros and cfg expansion 100% 100% - 1st Dec 2021 31st Mar 2022 28th Mar 2022 GCC 14.1 Imports and Visibility 100% 100% - 29th Mar 2022 13th Jul 2022 27th May 2022 GCC 14.1 Const Generics 100% 100% - 30th May 2022 10th Oct 2022 17th Oct 2022 GCC 14.1 Initial upstream patches 100% 100% - 10th Oct 2022 13th Nov 2022 13th Nov 2022 GCC 14.1 Upstream initial patchset 100% 100% - 13th Nov 2022 13th Dec 2022 19th Dec 2022 GCC 14.1 Update GCC’s master branch 100% 100% - 1st Jan 2023 21st Feb 2023 3rd Mar 2023 GCC 14.1 Final set of upstream patches 100% 100% - 16th Nov 2022 1st May 2023 30th Apr 2023 GCC 14.1 Borrow Checking 1 100% 100% - TBD 8th Jan 2024 15th Aug 2023 GCC 14.1 Procedural Macros 1 100% 100% - 13th Apr 2023 6th Aug 2023 6th Aug 2023 GCC 14.1 GCC 13.2 Release 100% 100% - 13th Apr 2023 22nd Jul 2023 15th Jul 2023 GCC 14.1 GCC 14 Stage 3 100% 100% - 1st Sep 2023 20th Sep 2023 1st Nov 2023 GCC 14.1 GCC 14.1 Release 100% 100% - 2nd Jan 2024 2nd Jun 2024 15th Apr 2024 GCC 14.1 formatargs!() support 100% 100% - 15th Feb 2024 - 1st Apr 2024 GCC 14.1 GCC 14.2 100% 100% - 7th Jun 2024 15th Jun 2024 15th Jun 2024 GCC 14.2 GCC 15.1 100% 100% - 21st Jun 2024 31st Jun 2024 1st Jul 2024 GCC 15.1 Unhandled attributes 100% 100% - 1st Jul 2024 15th Aug 2024 15th Aug 2024 GCC 15.1 Inline assembly 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Rustc Testsuite Adaptor 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Borrow checker improvements 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Deref and DerefMut improvements 100% 100% - 28th Sep 2024 25th Oct 2024 28th Dec 2024 GCC 15.1 Indexing fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Iterator fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Auto traits improvements 100% 100% - 15th Sep 2024 20th Jan 2025 21st Dec 2024 GCC 15.1 Lang items 100% 100% - 1st Jul 2024 10th Jan 2025 21st Nov 2024 GCC 15.1 alloc parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 15.1 std parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 16.1 Question mark operator 100% 100% - 15th Dec 2024 21st Feb 2025 21st Feb 2025 GCC 15.1 Name resolution 2.0 rework 100% 100% - 1st Jun 2024 - 1st Apr 2025 GCC 15.1 Macro expansion 100% 100% - 1st Jun 2024 - 1st Jan 2025 GCC 15.1 Remaining typecheck issues 100% 100% - 21st Oct 2024 - 1st Mar 2025 GCC 15.1 cfg-core 100% 100% - 1st Dec 2024 24th Mar 2025 1st Mar 2025 GCC 15.1 Codegen fixes 100% 100% - 7th Oct 2024 1st Apr 2025 1st Mar 2025 GCC 15.1 blackbox intrinsic 100% 100% - 28th Oct 2024 - 28th Jan 2025 GCC 15.1 let-else 100% 100% - 28th Jan 2025 - 28th Feb 2025 GCC 15.1 Specialization 100% 100% - 1st Jan 2025 1st Apr 2025 1st Mar 2025 GCC 15.1 cfg-rfl 100% 100% - 7th Jan 2025 19th Mar 2025 15th Feb 2025 GCC 15.1 Downgrade to Rust 1.49 100% 100% - 14th Mar 2025 26th Mar 2025 1st Apr 2025 GCC 15.1 try blocks 100% 100% -   30th Jul 2025   GCC 16.1 while-let loops 100% 100% -   30th Jul 2025   GCC 16.1 offsetof!() builtin macro 100% 100% - 15th Mar 2025 4th Aug 2025 15th Aug 2025 GCC 16.1 Explicit generics with impl Trait 100% 100% - 28th Feb 2025 21st Jul 2025 28th Mar 2025 GCC 16.1 Final Inline assembly fixes 100% 100% -   -   GCC 16.1 Planned Activities Finish debugging core Continue collecting issues for Rust-for-Linux milestones Work on RfL issues]]></summary></entry><entry><title type="html">September 2025 Monthly report</title><link href="https://rust-gcc.github.io/2025/10/06/2025-09-monthly-report.html" rel="alternate" type="text/html" title="September 2025 Monthly report" /><published>2025-10-06T00:00:00+00:00</published><updated>2025-10-06T00:00:00+00:00</updated><id>https://rust-gcc.github.io/2025/10/06/2025-09-monthly-report</id><content type="html" xml:base="https://rust-gcc.github.io/2025/10/06/2025-09-monthly-report.html"><![CDATA[<h2 id="overview">Overview</h2>

<p>Thanks again to <a href="https://opensrcsec.com/">Open Source Security, inc</a> and
<a href="https://www.embecosm.com/">Embecosm</a> for their ongoing support for this
project.</p>

<h3 id="project-update">Project update</h3>

<p>Most of the time this month was dedicated to preparing and attending
three conferences: Oxidize in Berlin, Kangrejos in Oviedo and GNU
Cauldron in Porto. Pierre-Emmanuel and Arthur also started working on
another project for Embecosm, thus reducing the time spent on <code class="language-plaintext highlighter-rouge">gccrs</code>
this month.</p>

<p>Oxidize was a nice experience and a good way to meet with some people
using Rust in the embedded industry. We were able to present the project
to many people who had not heard of it, and show the advantages of using
the GCC static analyzers on unsafe Rust code.</p>

<p>Kangrejos was a great way for Pierre-Emmanuel to meet with a lot of
folks working on the Linux kernel. A lot of them expressed interest in
our progress, and a few mentioned their personal requirement for
sticking with a GCC toolchain for compiling the kernel.</p>

<p>In Porto for Cauldron, a lot of GNU folks were interested in the
frontend’s experimental status and the projects’ roadmap. There were
comments about removing the dependency on <code class="language-plaintext highlighter-rouge">cargo</code> and <code class="language-plaintext highlighter-rouge">rustc</code>, which we
are currently working towards with our goal of getting the standard
library to compile under <code class="language-plaintext highlighter-rouge">gccrs</code>.</p>

<p>On that point, the entirety of <code class="language-plaintext highlighter-rouge">core</code> was added as a testcase to our
testsuite - we are slowly but surely getting it to go through more and
more passes of our pipeline. There is currently one bug left for our
entire pipeline to pass, which concerns the resolution of const items
associated with built-in types, such as <code class="language-plaintext highlighter-rouge">i8::MAX</code>.</p>

<p>After communicating with the GCC release managers, we have also worked
on implementing a new CI process whose goal is to send emails to the GCC
mailing list for each commit merged in our development repository. This
will allow GCC developers to review patches as they are merged upstream,
instead of seeing them in batches every week when we upstream them.</p>

<h3 id="community-call">Community call</h3>

<p>We will have our next monthly community call on the 15th of October at
9am UTC. You can subscribe to our calendar to see when the next one will
be held. The call is open to everyone, even if you would just like to
sit-in and listen. You can also subscribe to our
<a href="https://gcc.gnu.org/mailman/listinfo/gcc-rust">mailing-list</a> or join
our <a href="https://gcc-rust.zulipchat.com">Zulip chat</a> to be notified of
upcoming events.</p>

<ul>
  <li><a href="https://meet.jit.si/gccrs-community-call-october">Jitsi link</a></li>
  <li>Calendar ID:
7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com</li>
  <li><a href="https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com">Google calendar
link</a></li>
  <li><a href="https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics">iCal
link</a></li>
</ul>

<h2 id="call-for-contribution">Call for contribution</h2>

<ul>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2500">https://github.com/Rust-GCC/gccrs/issues/2500</a></p>
  </li>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2376">https://github.com/Rust-GCC/gccrs/issues/2376</a></p>
  </li>
</ul>

<h2 id="completed-activities">Completed Activities</h2>

<ul>
  <li>ci: yet another fix for the conditionnal steps
<a href="https://github.com/rust-gcc/gccrs/pull/4197">PR4197</a></li>
  <li>ci: fix step condition
<a href="https://github.com/rust-gcc/gccrs/pull/4196">PR4196</a></li>
  <li>Add doc attribute checking on traits
<a href="https://github.com/rust-gcc/gccrs/pull/4195">PR4195</a></li>
  <li>Fix malformed path segfault in attributes
<a href="https://github.com/rust-gcc/gccrs/pull/4194">PR4194</a></li>
  <li>ci: fix early exit
<a href="https://github.com/rust-gcc/gccrs/pull/4193">PR4193</a></li>
  <li>Add support for lowering rest patterns present in struct patterns to
HIR. <a href="https://github.com/rust-gcc/gccrs/pull/4192">PR4192</a></li>
  <li>ci: handle empty commit list
<a href="https://github.com/rust-gcc/gccrs/pull/4191">PR4191</a></li>
  <li>ci: adjust again the workflow for sending emails
<a href="https://github.com/rust-gcc/gccrs/pull/4190">PR4190</a></li>
  <li>ci: don’t do cover letter, don’t group by PR
<a href="https://github.com/rust-gcc/gccrs/pull/4189">PR4189</a></li>
  <li>ci: new workflow for sending emails after merging a PR
<a href="https://github.com/rust-gcc/gccrs/pull/4184">PR4184</a></li>
  <li>gccrs: Fix ICE where we expect a num enum variant
<a href="https://github.com/rust-gcc/gccrs/pull/4183">PR4183</a></li>
  <li>gccrs: Add error diag for self params on plain functions
<a href="https://github.com/rust-gcc/gccrs/pull/4182">PR4182</a></li>
  <li>gccrs: Fix ICE on copied array expressions
<a href="https://github.com/rust-gcc/gccrs/pull/4181">PR4181</a></li>
  <li>gccrs: Remove old hack from resolve operator overload
<a href="https://github.com/rust-gcc/gccrs/pull/4180">PR4180</a></li>
  <li>gccrs: fnptr types can hold onto generic params so it needs to
handle substs <a href="https://github.com/rust-gcc/gccrs/pull/4179">PR4179</a></li>
  <li>Metavar segfault
<a href="https://github.com/rust-gcc/gccrs/pull/4178">PR4178</a></li>
  <li>gccrs: Fix ICE for invalid const capacity expression handling
<a href="https://github.com/rust-gcc/gccrs/pull/4177">PR4177</a></li>
  <li>Test `libcore`
<a href="https://github.com/rust-gcc/gccrs/pull/4176">PR4176</a></li>
  <li>Import `stdarch 1.49.0`
<a href="https://github.com/rust-gcc/gccrs/pull/4175">PR4175</a></li>
  <li>Improve `FFIOpt`
<a href="https://github.com/rust-gcc/gccrs/pull/4174">PR4174</a></li>
  <li>gccrs: Fix ICE handling division by zero in const eval
<a href="https://github.com/rust-gcc/gccrs/pull/4172">PR4172</a></li>
  <li>Remove `AST::TraitItemConst`
<a href="https://github.com/rust-gcc/gccrs/pull/4170">PR4170</a></li>
  <li>Protect from errors in alternate pattern parsing
<a href="https://github.com/rust-gcc/gccrs/pull/4169">PR4169</a></li>
  <li>gccrs: Fix ICE with invalid const expression
<a href="https://github.com/rust-gcc/gccrs/pull/4150">PR4150</a></li>
  <li>tests: added extra parens compile test
<a href="https://github.com/rust-gcc/gccrs/pull/4137">PR4137</a></li>
  <li>Sync with upstream (2025-09-08):
4eb12ddd32d53ef55c2bd9bb03db057f096fff8f
<a href="https://github.com/rust-gcc/gccrs/pull/4136">PR4136</a></li>
  <li>Implement `TokenCollector::visit(AST::FormatArgs&amp;)`
<a href="https://github.com/rust-gcc/gccrs/pull/4135">PR4135</a></li>
  <li>gccrs: track abi and unsafety on fnptrs for proper type checking
<a href="https://github.com/rust-gcc/gccrs/pull/4132">PR4132</a></li>
  <li>gccrs: Revert “nr1.0: Remove support in expansion phase”
<a href="https://github.com/rust-gcc/gccrs/pull/4130">PR4130</a></li>
  <li>gccrs: Revert “gccrs: Remove the template parameter
<a href="https://github.com/rust-gcc/gccrs/pull/4129">PR4129</a></li>
  <li>gccrs: get rid of more clones in unify path
<a href="https://github.com/rust-gcc/gccrs/pull/4128">PR4128</a></li>
  <li>gccrs: remove docker github workflow
<a href="https://github.com/rust-gcc/gccrs/pull/4127">PR4127</a></li>
  <li>gccrs: Remove the template parameter so clang format stops barfing
this <a href="https://github.com/rust-gcc/gccrs/pull/4126">PR4126</a></li>
  <li>Add test to confirm Rust-GCC/gccrs#3922 fix
<a href="https://github.com/rust-gcc/gccrs/pull/4125">PR4125</a></li>
  <li>Add test to confirm Rust-GCC/gccrs#3924 fix
<a href="https://github.com/rust-gcc/gccrs/pull/4124">PR4124</a></li>
  <li>nr1.0: Remove `EarlyNameResolver`
<a href="https://github.com/rust-gcc/gccrs/pull/4123">PR4123</a></li>
  <li>ci: Bump commit to merge in arm64 ci
<a href="https://github.com/rust-gcc/gccrs/pull/4121">PR4121</a></li>
  <li>Unify path-to-type handling in `Late` resolver
<a href="https://github.com/rust-gcc/gccrs/pull/4113">PR4113</a></li>
  <li>nr1.0: Remove chunks of resolution phase
<a href="https://github.com/rust-gcc/gccrs/pull/4110">PR4110</a></li>
  <li>Create subdirectory `checks/errors/feature`
<a href="https://github.com/rust-gcc/gccrs/pull/4107">PR4107</a></li>
  <li>Implement compilation support for rest patterns in tuple struct
patterns <a href="https://github.com/rust-gcc/gccrs/pull/4102">PR4102</a></li>
  <li>Improve ExpandVisitor’s completeness
<a href="https://github.com/rust-gcc/gccrs/pull/4099">PR4099</a></li>
  <li>Vendor `libcore 1.49`
<a href="https://github.com/rust-gcc/gccrs/pull/4060">PR4060</a></li>
  <li>Handle `link<sub>name</sub>` attribute
<a href="https://github.com/rust-gcc/gccrs/pull/4031">PR4031</a></li>
</ul>

<h3 id="contributors-this-month">Contributors this month</h3>

<ul>
  <li><a href="https://github.com/0xllx0">elle</a> (new contributor!)</li>
  <li><a href="https://github.com/Magnus-Mage">Magnus</a> (new contributor!)</li>
  <li><a href="https://github.com/Polygonalr">Zhi Heng</a></li>
  <li><a href="https://github.com/dkm">Marc Poulhiès</a></li>
  <li><a href="https://github.com/powerboat9">Owen Avery</a></li>
  <li><a href="https://github.com/P-E-P">Pierre-Emmanuel Patry</a></li>
  <li><a href="https://github.com/philberty">Philip Herron</a></li>
  <li><a href="https://github.com/CohenArthur">Arthur Cohen</a></li>
</ul>

<h3 id="overall-task-status">Overall Task Status</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>396</td>
      <td>406</td>
      <td>+10</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>110</td>
      <td>115</td>
      <td>+5</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>1135</td>
      <td>1154</td>
      <td>+19</td>
    </tr>
  </tbody>
</table>

<h3 id="bugs">Bugs</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>198</td>
      <td>207</td>
      <td>+9</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>49</td>
      <td>55</td>
      <td>+6</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>558</td>
      <td>572</td>
      <td>+14</td>
    </tr>
  </tbody>
</table>

<h3 id="test-cases">Test Cases</h3>

<table>
  <thead>
    <tr>
      <th>TestCases</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Passing</td>
      <td>10189</td>
      <td>10304</td>
      <td>+115</td>
    </tr>
    <tr>
      <td>Failed</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XFAIL</td>
      <td>64</td>
      <td>72</td>
      <td>+8</td>
    </tr>
    <tr>
      <td>XPASS</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
  </tbody>
</table>

<h3 id="milestones-progress">Milestones Progress</h3>

<p>| Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC |
|———–|————|————|——-|————|—————–|——–|————|</p>

<table>
  <thead>
    <tr>
      <th>Upcoming Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Unstable RfL features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>-</td>
      <td>1st Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Generic Associated Types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>RfL const generics</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>1st May 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>frontend plugin hooks</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th May 2025</td>
      <td>-</td>
      <td>7th Jul 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Handling the testsuite issues</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>main shim</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>28th Jul 2025</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final core attributes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Core nightly features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Defered inference</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Fn traits fixes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Recursive types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Drop</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Pin, PinInit</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Past Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Data Structures 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th Nov 2020</td>
      <td>27th Jan 2021</td>
      <td>29th Jan 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2021</td>
      <td>10th Feb 2021</td>
      <td>26th Feb 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 2 - Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>11th Feb 2021</td>
      <td>14th May 2021</td>
      <td>28th May 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 3 - Traits</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th May 2021</td>
      <td>17th Sep 2021</td>
      <td>27th Aug 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 2 - Pattern Matching</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th Sep 2021</td>
      <td>9th Dec 2021</td>
      <td>29th Nov 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Macros and cfg expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2021</td>
      <td>31st Mar 2022</td>
      <td>28th Mar 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Imports and Visibility</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>29th Mar 2022</td>
      <td>13th Jul 2022</td>
      <td>27th May 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Const Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th May 2022</td>
      <td>10th Oct 2022</td>
      <td>17th Oct 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Initial upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>10th Oct 2022</td>
      <td>13th Nov 2022</td>
      <td>13th Nov 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Upstream initial patchset</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Nov 2022</td>
      <td>13th Dec 2022</td>
      <td>19th Dec 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Update GCC’s master branch</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2023</td>
      <td>21st Feb 2023</td>
      <td>3rd Mar 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Final set of upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>16th Nov 2022</td>
      <td>1st May 2023</td>
      <td>30th Apr 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Borrow Checking 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>TBD</td>
      <td>8th Jan 2024</td>
      <td>15th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Procedural Macros 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>6th Aug 2023</td>
      <td>6th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 13.2 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>22nd Jul 2023</td>
      <td>15th Jul 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14 Stage 3</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Sep 2023</td>
      <td>20th Sep 2023</td>
      <td>1st Nov 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.1 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>2nd Jan 2024</td>
      <td>2nd Jun 2024</td>
      <td>15th Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>format<sub>args</sub>!() support</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Feb 2024</td>
      <td>-</td>
      <td>1st Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.2</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>GCC 14.2</td>
    </tr>
    <tr>
      <td>GCC 15.1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jun 2024</td>
      <td>31st Jun 2024</td>
      <td>1st Jul 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Unhandled attributes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>15th Aug 2024</td>
      <td>15th Aug 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Inline assembly</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Rustc Testsuite Adaptor</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Borrow checker improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Deref and DerefMut improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Sep 2024</td>
      <td>25th Oct 2024</td>
      <td>28th Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Indexing fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Iterator fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Auto traits improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>20th Jan 2025</td>
      <td>21st Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Lang items</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>10th Jan 2025</td>
      <td>21st Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>alloc parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>std parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Question mark operator</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Dec 2024</td>
      <td>21st Feb 2025</td>
      <td>21st Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Name resolution 2.0 rework</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Macro expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Remaining typecheck issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Oct 2024</td>
      <td>-</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2024</td>
      <td>24th Mar 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Codegen fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Oct 2024</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>black<sub>box</sub> intrinsic</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Oct 2024</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>let-else</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Specialization</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-rfl</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>19th Mar 2025</td>
      <td>15th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Downgrade to Rust 1.49</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>14th Mar 2025</td>
      <td>26th Mar 2025</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>try blocks</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>while-let loops</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>offset<sub>of</sub>!() builtin macro</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>4th Aug 2025</td>
      <td>15th Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Explicit generics with impl Trait</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>21st Jul 2025</td>
      <td>28th Mar 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final Inline assembly fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<h2 id="planned-activities">Planned Activities</h2>

<ul>
  <li>Finish debugging <code class="language-plaintext highlighter-rouge">core</code></li>
  <li>Start experimenting with the kernel’s Rust code</li>
</ul>]]></content><author><name>Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen</name></author><category term="monthly-report" /><summary type="html"><![CDATA[Overview Thanks again to Open Source Security, inc and Embecosm for their ongoing support for this project. Project update Most of the time this month was dedicated to preparing and attending three conferences: Oxidize in Berlin, Kangrejos in Oviedo and GNU Cauldron in Porto. Pierre-Emmanuel and Arthur also started working on another project for Embecosm, thus reducing the time spent on gccrs this month. Oxidize was a nice experience and a good way to meet with some people using Rust in the embedded industry. We were able to present the project to many people who had not heard of it, and show the advantages of using the GCC static analyzers on unsafe Rust code. Kangrejos was a great way for Pierre-Emmanuel to meet with a lot of folks working on the Linux kernel. A lot of them expressed interest in our progress, and a few mentioned their personal requirement for sticking with a GCC toolchain for compiling the kernel. In Porto for Cauldron, a lot of GNU folks were interested in the frontend’s experimental status and the projects’ roadmap. There were comments about removing the dependency on cargo and rustc, which we are currently working towards with our goal of getting the standard library to compile under gccrs. On that point, the entirety of core was added as a testcase to our testsuite - we are slowly but surely getting it to go through more and more passes of our pipeline. There is currently one bug left for our entire pipeline to pass, which concerns the resolution of const items associated with built-in types, such as i8::MAX. After communicating with the GCC release managers, we have also worked on implementing a new CI process whose goal is to send emails to the GCC mailing list for each commit merged in our development repository. This will allow GCC developers to review patches as they are merged upstream, instead of seeing them in batches every week when we upstream them. Community call We will have our next monthly community call on the 15th of October at 9am UTC. You can subscribe to our calendar to see when the next one will be held. The call is open to everyone, even if you would just like to sit-in and listen. You can also subscribe to our mailing-list or join our Zulip chat to be notified of upcoming events. Jitsi link Calendar ID: 7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com Google calendar link iCal link Call for contribution https://github.com/Rust-GCC/gccrs/issues/2500 https://github.com/Rust-GCC/gccrs/issues/2376 Completed Activities ci: yet another fix for the conditionnal steps PR4197 ci: fix step condition PR4196 Add doc attribute checking on traits PR4195 Fix malformed path segfault in attributes PR4194 ci: fix early exit PR4193 Add support for lowering rest patterns present in struct patterns to HIR. PR4192 ci: handle empty commit list PR4191 ci: adjust again the workflow for sending emails PR4190 ci: don’t do cover letter, don’t group by PR PR4189 ci: new workflow for sending emails after merging a PR PR4184 gccrs: Fix ICE where we expect a num enum variant PR4183 gccrs: Add error diag for self params on plain functions PR4182 gccrs: Fix ICE on copied array expressions PR4181 gccrs: Remove old hack from resolve operator overload PR4180 gccrs: fnptr types can hold onto generic params so it needs to handle substs PR4179 Metavar segfault PR4178 gccrs: Fix ICE for invalid const capacity expression handling PR4177 Test `libcore` PR4176 Import `stdarch 1.49.0` PR4175 Improve `FFIOpt` PR4174 gccrs: Fix ICE handling division by zero in const eval PR4172 Remove `AST::TraitItemConst` PR4170 Protect from errors in alternate pattern parsing PR4169 gccrs: Fix ICE with invalid const expression PR4150 tests: added extra parens compile test PR4137 Sync with upstream (2025-09-08): 4eb12ddd32d53ef55c2bd9bb03db057f096fff8f PR4136 Implement `TokenCollector::visit(AST::FormatArgs&amp;)` PR4135 gccrs: track abi and unsafety on fnptrs for proper type checking PR4132 gccrs: Revert “nr1.0: Remove support in expansion phase” PR4130 gccrs: Revert “gccrs: Remove the template parameter PR4129 gccrs: get rid of more clones in unify path PR4128 gccrs: remove docker github workflow PR4127 gccrs: Remove the template parameter so clang format stops barfing this PR4126 Add test to confirm Rust-GCC/gccrs#3922 fix PR4125 Add test to confirm Rust-GCC/gccrs#3924 fix PR4124 nr1.0: Remove `EarlyNameResolver` PR4123 ci: Bump commit to merge in arm64 ci PR4121 Unify path-to-type handling in `Late` resolver PR4113 nr1.0: Remove chunks of resolution phase PR4110 Create subdirectory `checks/errors/feature` PR4107 Implement compilation support for rest patterns in tuple struct patterns PR4102 Improve ExpandVisitor’s completeness PR4099 Vendor `libcore 1.49` PR4060 Handle `linkname` attribute PR4031 Contributors this month elle (new contributor!) Magnus (new contributor!) Zhi Heng Marc Poulhiès Owen Avery Pierre-Emmanuel Patry Philip Herron Arthur Cohen Overall Task Status Category Last Month This Month Delta TODO 396 406 +10 In Progress 110 115 +5 Completed 1135 1154 +19 Bugs Category Last Month This Month Delta TODO 198 207 +9 In Progress 49 55 +6 Completed 558 572 +14 Test Cases TestCases Last Month This Month Delta Passing 10189 10304 +115 Failed - - - XFAIL 64 72 +8 XPASS - - - Milestones Progress | Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC | |———–|————|————|——-|————|—————–|——–|————| Upcoming Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Unstable RfL features 0% 0% - 7th Jan 2025 - 1st Aug 2025 GCC 16.1 Generic Associated Types 0% 0% - 15th Mar 2025 - 15th Jun 2025 GCC 16.1 RfL const generics 0% 0% - 1st May 2025 - 15th Jun 2025 GCC 16.1 frontend plugin hooks 0% 0% - 15th May 2025 - 7th Jul 2025 GCC 16.1 Handling the testsuite issues 0% 0% - 15th Sep 2024 - 15th Sep 2025 GCC 16.1 main shim 0% 0% - 28th Jul 2025 - 15th Sep 2025 GCC 16.1 Final core attributes 0% 0% -   -   GCC 16.1 Core nightly features 0% 0% -   -   GCC 16.1 Defered inference 0% 0% -   -   GCC 16.1 Fn traits fixes 0% 0% -   -   GCC 16.1 Recursive types 0% 0% -   -   GCC 16.1 Drop 0% 0% -   -   GCC 16.1 Pin, PinInit 0% 0% -   -   GCC 16.1 Past Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Data Structures 1 - Core 100% 100% - 30th Nov 2020 27th Jan 2021 29th Jan 2021 GCC 14.1 Control Flow 1 - Core 100% 100% - 28th Jan 2021 10th Feb 2021 26th Feb 2021 GCC 14.1 Data Structures 2 - Generics 100% 100% - 11th Feb 2021 14th May 2021 28th May 2021 GCC 14.1 Data Structures 3 - Traits 100% 100% - 20th May 2021 17th Sep 2021 27th Aug 2021 GCC 14.1 Control Flow 2 - Pattern Matching 100% 100% - 20th Sep 2021 9th Dec 2021 29th Nov 2021 GCC 14.1 Macros and cfg expansion 100% 100% - 1st Dec 2021 31st Mar 2022 28th Mar 2022 GCC 14.1 Imports and Visibility 100% 100% - 29th Mar 2022 13th Jul 2022 27th May 2022 GCC 14.1 Const Generics 100% 100% - 30th May 2022 10th Oct 2022 17th Oct 2022 GCC 14.1 Initial upstream patches 100% 100% - 10th Oct 2022 13th Nov 2022 13th Nov 2022 GCC 14.1 Upstream initial patchset 100% 100% - 13th Nov 2022 13th Dec 2022 19th Dec 2022 GCC 14.1 Update GCC’s master branch 100% 100% - 1st Jan 2023 21st Feb 2023 3rd Mar 2023 GCC 14.1 Final set of upstream patches 100% 100% - 16th Nov 2022 1st May 2023 30th Apr 2023 GCC 14.1 Borrow Checking 1 100% 100% - TBD 8th Jan 2024 15th Aug 2023 GCC 14.1 Procedural Macros 1 100% 100% - 13th Apr 2023 6th Aug 2023 6th Aug 2023 GCC 14.1 GCC 13.2 Release 100% 100% - 13th Apr 2023 22nd Jul 2023 15th Jul 2023 GCC 14.1 GCC 14 Stage 3 100% 100% - 1st Sep 2023 20th Sep 2023 1st Nov 2023 GCC 14.1 GCC 14.1 Release 100% 100% - 2nd Jan 2024 2nd Jun 2024 15th Apr 2024 GCC 14.1 formatargs!() support 100% 100% - 15th Feb 2024 - 1st Apr 2024 GCC 14.1 GCC 14.2 100% 100% - 7th Jun 2024 15th Jun 2024 15th Jun 2024 GCC 14.2 GCC 15.1 100% 100% - 21st Jun 2024 31st Jun 2024 1st Jul 2024 GCC 15.1 Unhandled attributes 100% 100% - 1st Jul 2024 15th Aug 2024 15th Aug 2024 GCC 15.1 Inline assembly 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Rustc Testsuite Adaptor 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Borrow checker improvements 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Deref and DerefMut improvements 100% 100% - 28th Sep 2024 25th Oct 2024 28th Dec 2024 GCC 15.1 Indexing fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Iterator fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Auto traits improvements 100% 100% - 15th Sep 2024 20th Jan 2025 21st Dec 2024 GCC 15.1 Lang items 100% 100% - 1st Jul 2024 10th Jan 2025 21st Nov 2024 GCC 15.1 alloc parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 15.1 std parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 16.1 Question mark operator 100% 100% - 15th Dec 2024 21st Feb 2025 21st Feb 2025 GCC 15.1 Name resolution 2.0 rework 100% 100% - 1st Jun 2024 - 1st Apr 2025 GCC 15.1 Macro expansion 100% 100% - 1st Jun 2024 - 1st Jan 2025 GCC 15.1 Remaining typecheck issues 100% 100% - 21st Oct 2024 - 1st Mar 2025 GCC 15.1 cfg-core 100% 100% - 1st Dec 2024 24th Mar 2025 1st Mar 2025 GCC 15.1 Codegen fixes 100% 100% - 7th Oct 2024 1st Apr 2025 1st Mar 2025 GCC 15.1 blackbox intrinsic 100% 100% - 28th Oct 2024 - 28th Jan 2025 GCC 15.1 let-else 100% 100% - 28th Jan 2025 - 28th Feb 2025 GCC 15.1 Specialization 100% 100% - 1st Jan 2025 1st Apr 2025 1st Mar 2025 GCC 15.1 cfg-rfl 100% 100% - 7th Jan 2025 19th Mar 2025 15th Feb 2025 GCC 15.1 Downgrade to Rust 1.49 100% 100% - 14th Mar 2025 26th Mar 2025 1st Apr 2025 GCC 15.1 try blocks 100% 100% -   30th Jul 2025   GCC 16.1 while-let loops 100% 100% -   30th Jul 2025   GCC 16.1 offsetof!() builtin macro 100% 100% - 15th Mar 2025 4th Aug 2025 15th Aug 2025 GCC 16.1 Explicit generics with impl Trait 100% 100% - 28th Feb 2025 21st Jul 2025 28th Mar 2025 GCC 16.1 Final Inline assembly fixes 100% 100% -   -   GCC 16.1 Planned Activities Finish debugging core Start experimenting with the kernel’s Rust code]]></summary></entry><entry><title type="html">August 2025 Monthly report</title><link href="https://rust-gcc.github.io/2025/09/09/2025-08-monthly-report.html" rel="alternate" type="text/html" title="August 2025 Monthly report" /><published>2025-09-09T00:00:00+00:00</published><updated>2025-09-09T00:00:00+00:00</updated><id>https://rust-gcc.github.io/2025/09/09/2025-08-monthly-report</id><content type="html" xml:base="https://rust-gcc.github.io/2025/09/09/2025-08-monthly-report.html"><![CDATA[<h2 id="overview">Overview</h2>

<p>Thanks again to <a href="https://opensrcsec.com/">Open Source Security, inc</a> and
<a href="https://www.embecosm.com/">Embecosm</a> for their ongoing support for this
project.</p>

<h3 id="project-update">Project update</h3>

<p>The month of August was focused on bug fixing for building <code class="language-plaintext highlighter-rouge">core</code>, once
again. We identified some issues in our macro expansion and reworked our
<code class="language-plaintext highlighter-rouge">ExpandVisitor</code>, a piece of code we had originally written 3 years ago
which contained some shortcomings and would not expand macro invocations
in all places required. We implemented a new visitor to visit nodes from
their container, and potentially reseat their pointer - which fixed a
lot of the issues and increased the completeness of the compiler. We
then transformed all of our mutating visitors into visitors inheriting
from this container visitor, which resulted in a cleaner codebase and a
more correct front end.</p>

<p>Google Summer of Code also came to an end, with both our students
<a href="https://github.com/sakupan102">Ryutaro Okada</a> and <a href="https://github.com/Polygonalr">Zhi
Heng</a> successfully completing their
projects and earning top scores in their final evaluations. It was a joy
to work alongside them on their projects, and we hope to see them
contribute in the future.</p>

<p>As a reminder, our current objective is to get <code class="language-plaintext highlighter-rouge">gccrs</code> to a state where
it can compile the Linux kernel’s Rust parts. The Rust-for-Linux project
does not depend on the entire Rust standard library (<code class="language-plaintext highlighter-rouge">std</code>), but only on
<code class="language-plaintext highlighter-rouge">core</code> - like a lot of Rust embedded projects. However, because the
project wants to benefit from all of Rust’s functionalities, they are
reimplementing parts of the standard library using the kernel’s memory
allocator - this enables Rust kernel module developers to use types such
as <code class="language-plaintext highlighter-rouge">Vec&lt;T&gt;</code>, or <code class="language-plaintext highlighter-rouge">String</code>. As such, the milestones we worked on this
summer are aimed at two objectives:</p>

<ol>
  <li>Compile Rust’s <code class="language-plaintext highlighter-rouge">core</code> library, as it is the sole dependency of the
Linux kernel’s Rust crate</li>
  <li>Compile the Rust kernel crate</li>
</ol>

<p>In order to do this, we had to implement some new Rust features over the
summer: namely, <code class="language-plaintext highlighter-rouge">try</code> blocks and <code class="language-plaintext highlighter-rouge">while-let</code> loops, both used in <code class="language-plaintext highlighter-rouge">core</code>
and within the kernel. The kernel makes use of more recent Rust features
that are not present in the version we target, so we must implement them
as well - for example, the <code class="language-plaintext highlighter-rouge">offset_of</code> macro.</p>

<p>Our first objective is the kernel’s <code class="language-plaintext highlighter-rouge">alloc</code> crate, a reimplementation of
parts of the Rust <code class="language-plaintext highlighter-rouge">std</code> crate responsible for implementing dynamically
allocated types. Thanks to the work of our contributors over the summer,
we were able to implement all of the required language features
mentioned above. We are now debugging a few remaining bugs in our name
resolution and macro expansion passes.</p>

<p>The next two weeks of work on the project will be focused on these bugs,
and the last two weeks of the month of September will be solely
dedicated to compiling the Linux kernel’s <code class="language-plaintext highlighter-rouge">alloc</code> crate.</p>

<p>We are currently interviewing two interns who would contribute to the
project for the period of September to January - we are currently
designing milestones for them, so that they may contribute meaningfully
to the project while gaining work experience within our company Embecosm
SAS.</p>

<p>Finally, we will also be present at three major conferences in
September:</p>

<ul>
  <li>Oxidize in Berlin, Germany</li>
  <li>Kangrejos in Oviedo, Spain</li>
  <li>GNU Cauldron in Port, Portugal</li>
</ul>

<p>Pierre-Emmanuel and Arthur will be giving talks at these three venues
and we hope to meet with everyone interested in the project!</p>

<h3 id="community-call">Community call</h3>

<p>We will have our next monthly community call on the 8th of September at
9am UTC. You can subscribe to our calendar to see when the next one will
be held. The call is open to everyone, even if you would just like to
sit-in and listen. You can also subscribe to our
<a href="https://gcc.gnu.org/mailman/listinfo/gcc-rust">mailing-list</a> or join
our <a href="https://gcc-rust.zulipchat.com">Zulip chat</a> to be notified of
upcoming events.</p>

<ul>
  <li><a href="https://meet.jit.si/gccrs-community-call-august">Jitsi link</a></li>
  <li>Calendar ID:
7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com</li>
  <li><a href="https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com">Google calendar
link</a></li>
  <li><a href="https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics">iCal
link</a></li>
</ul>

<h2 id="call-for-contribution">Call for contribution</h2>

<ul>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2500">https://github.com/Rust-GCC/gccrs/issues/2500</a></p>
  </li>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2376">https://github.com/Rust-GCC/gccrs/issues/2376</a></p>
  </li>
</ul>

<h2 id="completed-activities">Completed Activities</h2>

<ul>
  <li>gccrs: Fix segv when handling invalid array capacities
<a href="https://github.com/rust-gcc/gccrs/pull/4120">PR4120</a></li>
  <li>More const generics development
<a href="https://github.com/rust-gcc/gccrs/pull/4119">PR4119</a></li>
  <li>Get rid of TyTy::BaseType can_eq interface
<a href="https://github.com/rust-gcc/gccrs/pull/4118">PR4118</a></li>
  <li>Unify path-to-type handling in <code class="language-plaintext highlighter-rouge">Late</code> resolver
<a href="https://github.com/rust-gcc/gccrs/pull/4113">PR4113</a></li>
  <li>Recognize <code class="language-plaintext highlighter-rouge">rustc_allow_const_fn_unstable</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4111">PR4111</a></li>
  <li>nr1.0: Remove chunks of resolution phase
<a href="https://github.com/rust-gcc/gccrs/pull/4110">PR4110</a></li>
  <li>nr1.0: Remove support in expansion phase
<a href="https://github.com/rust-gcc/gccrs/pull/4109">PR4109</a></li>
  <li>Implement missing var decl binding &amp; read-only checker cases for
<code class="language-plaintext highlighter-rouge">TuplePatternItemsHasRest</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4106">PR4106</a></li>
  <li>Emit error on lonely self use declaration
<a href="https://github.com/rust-gcc/gccrs/pull/4103">PR4103</a></li>
  <li>Do not dump the AST if the parser emit errors
<a href="https://github.com/rust-gcc/gccrs/pull/4101">PR4101</a></li>
  <li>Separate strip information from internal state
<a href="https://github.com/rust-gcc/gccrs/pull/4100">PR4100</a></li>
  <li>Avoid <code class="language-plaintext highlighter-rouge">std::unique_ptr&lt;std::string&gt;</code> in <code class="language-plaintext highlighter-rouge">Token</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4097">PR4097</a></li>
  <li>gccrs: Refactor AST Patterns that hold multiple pattern items
<a href="https://github.com/rust-gcc/gccrs/pull/4096">PR4096</a></li>
  <li>Remove <code class="language-plaintext highlighter-rouge">Parser::parse_tuple_index_expr_float</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4095">PR4095</a></li>
  <li>nr1.0: Remove support in privacy checker
<a href="https://github.com/rust-gcc/gccrs/pull/4094">PR4094</a></li>
  <li>nr1.0: Remove support in pattern checker
<a href="https://github.com/rust-gcc/gccrs/pull/4093">PR4093</a></li>
  <li>nr1.0: Remove support in borrow checker
<a href="https://github.com/rust-gcc/gccrs/pull/4092">PR4092</a></li>
  <li>nr1.0: Remove support in <code class="language-plaintext highlighter-rouge">rust-session-manager.cc</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4091">PR4091</a></li>
  <li>Eagerly expand <code class="language-plaintext highlighter-rouge">format_args</code> macro
<a href="https://github.com/rust-gcc/gccrs/pull/4089">PR4089</a></li>
  <li>ci: Fix arm64 ci
<a href="https://github.com/rust-gcc/gccrs/pull/4088">PR4088</a></li>
  <li>Remove <code class="language-plaintext highlighter-rouge">Parser::parse_path_in_expression_pratt</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4087">PR4087</a></li>
  <li>Partial eq fn field
<a href="https://github.com/rust-gcc/gccrs/pull/4084">PR4084</a></li>
  <li>Expect identifier subpatterns to be non-alt
<a href="https://github.com/rust-gcc/gccrs/pull/4083">PR4083</a></li>
  <li>gccrs: fix ICE for empty enum variant
<a href="https://github.com/rust-gcc/gccrs/pull/4081">PR4081</a></li>
  <li>Add <code class="language-plaintext highlighter-rouge">AST::PointerVisitor</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4079">PR4079</a></li>
  <li>gccrs: fix ICE by skipping invalid (non-FNDEF) candidates
<a href="https://github.com/rust-gcc/gccrs/pull/4078">PR4078</a></li>
  <li>Reject empty cfg_attr
<a href="https://github.com/rust-gcc/gccrs/pull/4077">PR4077</a></li>
  <li>Handle patterns in macro expansion
<a href="https://github.com/rust-gcc/gccrs/pull/4076">PR4076</a></li>
  <li>nr2.0: Fix ChangeLog entry
<a href="https://github.com/rust-gcc/gccrs/pull/4075">PR4075</a></li>
  <li>Improve <code class="language-plaintext highlighter-rouge">libformat_parser</code> FFI
<a href="https://github.com/rust-gcc/gccrs/pull/4074">PR4074</a></li>
  <li>Fix Self macro and partial macro invocation parsing null check
<a href="https://github.com/rust-gcc/gccrs/pull/4073">PR4073</a></li>
  <li>Finish up subpattern codegen support for identifier patterns
<a href="https://github.com/rust-gcc/gccrs/pull/4072">PR4072</a></li>
  <li>Wildcard use declaration
<a href="https://github.com/rust-gcc/gccrs/pull/4070">PR4070</a></li>
  <li>Replace old read-only checker with new one.
<a href="https://github.com/rust-gcc/gccrs/pull/4069">PR4069</a></li>
  <li><code class="language-plaintext highlighter-rouge">CfgStrip</code> AST nodes marked with <code class="language-plaintext highlighter-rouge">#[test]</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4067">PR4067</a></li>
  <li>Collect lang items after expansion
<a href="https://github.com/rust-gcc/gccrs/pull/4066">PR4066</a></li>
  <li>Remove <code class="language-plaintext highlighter-rouge">#[simd_test]</code> support
<a href="https://github.com/rust-gcc/gccrs/pull/4065">PR4065</a></li>
  <li>Improve handling of non-final path segments
<a href="https://github.com/rust-gcc/gccrs/pull/4063">PR4063</a></li>
  <li>gccrs: Implement rest pattern support for slice patterns
<a href="https://github.com/rust-gcc/gccrs/pull/4062">PR4062</a></li>
  <li>Fix Macro builtins asm clobber infinite loop
<a href="https://github.com/rust-gcc/gccrs/pull/4061">PR4061</a></li>
  <li>gccrs: fix ICE in convert_tree for tuple destructuring
with ref <a href="https://github.com/rust-gcc/gccrs/pull/4059">PR4059</a></li>
  <li>Allow early resolution to use the language prelude
<a href="https://github.com/rust-gcc/gccrs/pull/4058">PR4058</a></li>
  <li>Detect failure to match an <code class="language-plaintext highlighter-rouge">ident</code> metavariable
<a href="https://github.com/rust-gcc/gccrs/pull/4057">PR4057</a></li>
  <li>Add checks to <code class="language-plaintext highlighter-rouge">ExpandVisitor</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4052">PR4052</a></li>
  <li>gccrs: Fix ICE on exclusive_rangepattern lowering
<a href="https://github.com/rust-gcc/gccrs/pull/4049">PR4049</a></li>
  <li>Exclude some inline assembly test
<a href="https://github.com/rust-gcc/gccrs/pull/4048">PR4048</a></li>
  <li>Misc fixes in headers
<a href="https://github.com/rust-gcc/gccrs/pull/4045">PR4045</a></li>
  <li>Improve handling of <code class="language-plaintext highlighter-rouge">AttrInputLiteral</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4044">PR4044</a></li>
  <li>Sync with upstream fa099f248e2462ecd5ab8b0cadd348aaf11bb093
<a href="https://github.com/rust-gcc/gccrs/pull/4043">PR4043</a></li>
  <li>Recognize <code class="language-plaintext highlighter-rouge">rustc_args_required_const</code> attribute
<a href="https://github.com/rust-gcc/gccrs/pull/4042">PR4042</a></li>
  <li>Remove undefined behavior with <code class="language-plaintext highlighter-rouge">static_cast</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4041">PR4041</a></li>
  <li>Handle attributes in expression macros
<a href="https://github.com/rust-gcc/gccrs/pull/4040">PR4040</a></li>
  <li>gccrs: Refactor HIR::PatternItem class and its derivatives
<a href="https://github.com/rust-gcc/gccrs/pull/4039">PR4039</a></li>
  <li>Explicitely create empty vector
<a href="https://github.com/rust-gcc/gccrs/pull/4029">PR4029</a></li>
  <li>Add offset_of!() evaluation
<a href="https://github.com/rust-gcc/gccrs/pull/4021">PR4021</a></li>
  <li>Make <code class="language-plaintext highlighter-rouge">AttributeParser</code> rely more on <code class="language-plaintext highlighter-rouge">Parser</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4018">PR4018</a></li>
  <li>ci: Bump from <code class="language-plaintext highlighter-rouge">macos-13</code> to <code class="language-plaintext highlighter-rouge">macos-15</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4001">PR4001</a></li>
  <li>Implement readonly checker on HIR
<a href="https://github.com/rust-gcc/gccrs/pull/3881">PR3881</a></li>
  <li>Fix ICE when trying to compile enums with non-const discriminants.
<a href="https://github.com/rust-gcc/gccrs/pull/3681">PR3681</a></li>
  <li>Fix Error Code for Attempted to call something which isn’t a
function nor a method.
<a href="https://github.com/rust-gcc/gccrs/pull/3496">PR3496</a></li>
</ul>

<h3 id="contributors-this-month">Contributors this month</h3>

<ul>
  <li><a href="https://github.com/Polygonalr">Zhi Heng</a></li>
  <li><a href="https://github.com/sakupan102">Ryutaro Okada</a></li>
  <li><a href="https://github.com/Lishin1215">Lishin</a></li>
  <li><a href="https://github.com/dkm">Marc Poulhiès</a></li>
  <li><a href="https://github.com/powerboat9">Owen Avery</a></li>
  <li><a href="https://github.com/P-E-P">Pierre-Emmanuel Patry</a></li>
  <li><a href="https://github.com/philberty">Philip Herron</a></li>
  <li><a href="https://github.com/CohenArthur">Arthur Cohen</a></li>
</ul>

<h3 id="overall-task-status">Overall Task Status</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>469</td>
      <td>396</td>
      <td>-73</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>109</td>
      <td>110</td>
      <td>+1</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>1114</td>
      <td>1135</td>
      <td>+21</td>
    </tr>
  </tbody>
</table>

<h3 id="bugs">Bugs</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>207</td>
      <td>198</td>
      <td>-9</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>54</td>
      <td>49</td>
      <td>-5</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>526</td>
      <td>558</td>
      <td>+32</td>
    </tr>
  </tbody>
</table>

<h3 id="test-cases">Test Cases</h3>

<table>
  <thead>
    <tr>
      <th>TestCases</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Passing</td>
      <td>10089</td>
      <td>10189</td>
      <td>+100</td>
    </tr>
    <tr>
      <td>Failed</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XFAIL</td>
      <td>64</td>
      <td>64</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XPASS</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
  </tbody>
</table>

<h3 id="milestones-progress">Milestones Progress</h3>

<table>
  <thead>
    <tr>
      <th>Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Final Inline assembly fixes</td>
      <td>65%</td>
      <td>100%</td>
      <td>+35%</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Upcoming Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Unstable RfL features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>-</td>
      <td>1st Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Generic Associated Types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>RfL const generics</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>1st May 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>frontend plugin hooks</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th May 2025</td>
      <td>-</td>
      <td>7th Jul 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Handling the testsuite issues</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>main shim</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>28th Jul 2025</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final core attributes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Core nightly features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Defered inference</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Fn traits fixes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Recursive types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Drop</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Pin, PinInit</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Past Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Data Structures 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th Nov 2020</td>
      <td>27th Jan 2021</td>
      <td>29th Jan 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2021</td>
      <td>10th Feb 2021</td>
      <td>26th Feb 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 2 - Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>11th Feb 2021</td>
      <td>14th May 2021</td>
      <td>28th May 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 3 - Traits</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th May 2021</td>
      <td>17th Sep 2021</td>
      <td>27th Aug 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 2 - Pattern Matching</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th Sep 2021</td>
      <td>9th Dec 2021</td>
      <td>29th Nov 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Macros and cfg expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2021</td>
      <td>31st Mar 2022</td>
      <td>28th Mar 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Imports and Visibility</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>29th Mar 2022</td>
      <td>13th Jul 2022</td>
      <td>27th May 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Const Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th May 2022</td>
      <td>10th Oct 2022</td>
      <td>17th Oct 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Initial upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>10th Oct 2022</td>
      <td>13th Nov 2022</td>
      <td>13th Nov 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Upstream initial patchset</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Nov 2022</td>
      <td>13th Dec 2022</td>
      <td>19th Dec 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Update GCC’s master branch</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2023</td>
      <td>21st Feb 2023</td>
      <td>3rd Mar 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Final set of upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>16th Nov 2022</td>
      <td>1st May 2023</td>
      <td>30th Apr 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Borrow Checking 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>TBD</td>
      <td>8th Jan 2024</td>
      <td>15th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Procedural Macros 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>6th Aug 2023</td>
      <td>6th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 13.2 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>22nd Jul 2023</td>
      <td>15th Jul 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14 Stage 3</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Sep 2023</td>
      <td>20th Sep 2023</td>
      <td>1st Nov 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.1 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>2nd Jan 2024</td>
      <td>2nd Jun 2024</td>
      <td>15th Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>format_args!() support</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Feb 2024</td>
      <td>-</td>
      <td>1st Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.2</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>GCC 14.2</td>
    </tr>
    <tr>
      <td>GCC 15.1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jun 2024</td>
      <td>31st Jun 2024</td>
      <td>1st Jul 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Unhandled attributes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>15th Aug 2024</td>
      <td>15th Aug 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Inline assembly</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Rustc Testsuite Adaptor</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Borrow checker improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Deref and DerefMut improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Sep 2024</td>
      <td>25th Oct 2024</td>
      <td>28th Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Indexing fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Iterator fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Auto traits improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>20th Jan 2025</td>
      <td>21st Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Lang items</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>10th Jan 2025</td>
      <td>21st Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>alloc parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>std parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Question mark operator</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Dec 2024</td>
      <td>21st Feb 2025</td>
      <td>21st Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Name resolution 2.0 rework</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Macro expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Remaining typecheck issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Oct 2024</td>
      <td>-</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2024</td>
      <td>24th Mar 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Codegen fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Oct 2024</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>black_box intrinsic</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Oct 2024</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>let-else</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Specialization</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-rfl</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>19th Mar 2025</td>
      <td>15th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Downgrade to Rust 1.49</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>14th Mar 2025</td>
      <td>26th Mar 2025</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>try blocks</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>while-let loops</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>offset_of!() builtin macro</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>4th Aug 2025</td>
      <td>15th Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Explicit generics with impl Trait</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>21st Jul 2025</td>
      <td>28th Mar 2025</td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<h2 id="planned-activities">Planned Activities</h2>

<ul>
  <li>Finish debugging <code class="language-plaintext highlighter-rouge">core</code></li>
  <li>Start experimenting with the kernel’s Rust code</li>
</ul>]]></content><author><name>Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen</name></author><category term="monthly-report" /><summary type="html"><![CDATA[Overview Thanks again to Open Source Security, inc and Embecosm for their ongoing support for this project. Project update The month of August was focused on bug fixing for building core, once again. We identified some issues in our macro expansion and reworked our ExpandVisitor, a piece of code we had originally written 3 years ago which contained some shortcomings and would not expand macro invocations in all places required. We implemented a new visitor to visit nodes from their container, and potentially reseat their pointer - which fixed a lot of the issues and increased the completeness of the compiler. We then transformed all of our mutating visitors into visitors inheriting from this container visitor, which resulted in a cleaner codebase and a more correct front end. Google Summer of Code also came to an end, with both our students Ryutaro Okada and Zhi Heng successfully completing their projects and earning top scores in their final evaluations. It was a joy to work alongside them on their projects, and we hope to see them contribute in the future. As a reminder, our current objective is to get gccrs to a state where it can compile the Linux kernel’s Rust parts. The Rust-for-Linux project does not depend on the entire Rust standard library (std), but only on core - like a lot of Rust embedded projects. However, because the project wants to benefit from all of Rust’s functionalities, they are reimplementing parts of the standard library using the kernel’s memory allocator - this enables Rust kernel module developers to use types such as Vec&lt;T&gt;, or String. As such, the milestones we worked on this summer are aimed at two objectives: Compile Rust’s core library, as it is the sole dependency of the Linux kernel’s Rust crate Compile the Rust kernel crate In order to do this, we had to implement some new Rust features over the summer: namely, try blocks and while-let loops, both used in core and within the kernel. The kernel makes use of more recent Rust features that are not present in the version we target, so we must implement them as well - for example, the offset_of macro. Our first objective is the kernel’s alloc crate, a reimplementation of parts of the Rust std crate responsible for implementing dynamically allocated types. Thanks to the work of our contributors over the summer, we were able to implement all of the required language features mentioned above. We are now debugging a few remaining bugs in our name resolution and macro expansion passes. The next two weeks of work on the project will be focused on these bugs, and the last two weeks of the month of September will be solely dedicated to compiling the Linux kernel’s alloc crate. We are currently interviewing two interns who would contribute to the project for the period of September to January - we are currently designing milestones for them, so that they may contribute meaningfully to the project while gaining work experience within our company Embecosm SAS. Finally, we will also be present at three major conferences in September: Oxidize in Berlin, Germany Kangrejos in Oviedo, Spain GNU Cauldron in Port, Portugal Pierre-Emmanuel and Arthur will be giving talks at these three venues and we hope to meet with everyone interested in the project! Community call We will have our next monthly community call on the 8th of September at 9am UTC. You can subscribe to our calendar to see when the next one will be held. The call is open to everyone, even if you would just like to sit-in and listen. You can also subscribe to our mailing-list or join our Zulip chat to be notified of upcoming events. Jitsi link Calendar ID: 7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com Google calendar link iCal link Call for contribution https://github.com/Rust-GCC/gccrs/issues/2500 https://github.com/Rust-GCC/gccrs/issues/2376 Completed Activities gccrs: Fix segv when handling invalid array capacities PR4120 More const generics development PR4119 Get rid of TyTy::BaseType can_eq interface PR4118 Unify path-to-type handling in Late resolver PR4113 Recognize rustc_allow_const_fn_unstable PR4111 nr1.0: Remove chunks of resolution phase PR4110 nr1.0: Remove support in expansion phase PR4109 Implement missing var decl binding &amp; read-only checker cases for TuplePatternItemsHasRest PR4106 Emit error on lonely self use declaration PR4103 Do not dump the AST if the parser emit errors PR4101 Separate strip information from internal state PR4100 Avoid std::unique_ptr&lt;std::string&gt; in Token PR4097 gccrs: Refactor AST Patterns that hold multiple pattern items PR4096 Remove Parser::parse_tuple_index_expr_float PR4095 nr1.0: Remove support in privacy checker PR4094 nr1.0: Remove support in pattern checker PR4093 nr1.0: Remove support in borrow checker PR4092 nr1.0: Remove support in rust-session-manager.cc PR4091 Eagerly expand format_args macro PR4089 ci: Fix arm64 ci PR4088 Remove Parser::parse_path_in_expression_pratt PR4087 Partial eq fn field PR4084 Expect identifier subpatterns to be non-alt PR4083 gccrs: fix ICE for empty enum variant PR4081 Add AST::PointerVisitor PR4079 gccrs: fix ICE by skipping invalid (non-FNDEF) candidates PR4078 Reject empty cfg_attr PR4077 Handle patterns in macro expansion PR4076 nr2.0: Fix ChangeLog entry PR4075 Improve libformat_parser FFI PR4074 Fix Self macro and partial macro invocation parsing null check PR4073 Finish up subpattern codegen support for identifier patterns PR4072 Wildcard use declaration PR4070 Replace old read-only checker with new one. PR4069 CfgStrip AST nodes marked with #[test] PR4067 Collect lang items after expansion PR4066 Remove #[simd_test] support PR4065 Improve handling of non-final path segments PR4063 gccrs: Implement rest pattern support for slice patterns PR4062 Fix Macro builtins asm clobber infinite loop PR4061 gccrs: fix ICE in convert_tree for tuple destructuring with ref PR4059 Allow early resolution to use the language prelude PR4058 Detect failure to match an ident metavariable PR4057 Add checks to ExpandVisitor PR4052 gccrs: Fix ICE on exclusive_rangepattern lowering PR4049 Exclude some inline assembly test PR4048 Misc fixes in headers PR4045 Improve handling of AttrInputLiteral PR4044 Sync with upstream fa099f248e2462ecd5ab8b0cadd348aaf11bb093 PR4043 Recognize rustc_args_required_const attribute PR4042 Remove undefined behavior with static_cast PR4041 Handle attributes in expression macros PR4040 gccrs: Refactor HIR::PatternItem class and its derivatives PR4039 Explicitely create empty vector PR4029 Add offset_of!() evaluation PR4021 Make AttributeParser rely more on Parser PR4018 ci: Bump from macos-13 to macos-15 PR4001 Implement readonly checker on HIR PR3881 Fix ICE when trying to compile enums with non-const discriminants. PR3681 Fix Error Code for Attempted to call something which isn’t a function nor a method. PR3496 Contributors this month Zhi Heng Ryutaro Okada Lishin Marc Poulhiès Owen Avery Pierre-Emmanuel Patry Philip Herron Arthur Cohen Overall Task Status Category Last Month This Month Delta TODO 469 396 -73 In Progress 109 110 +1 Completed 1114 1135 +21 Bugs Category Last Month This Month Delta TODO 207 198 -9 In Progress 54 49 -5 Completed 526 558 +32 Test Cases TestCases Last Month This Month Delta Passing 10089 10189 +100 Failed - - - XFAIL 64 64 - XPASS - - - Milestones Progress Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Final Inline assembly fixes 65% 100% +35%   -   GCC 16.1 Upcoming Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Unstable RfL features 0% 0% - 7th Jan 2025 - 1st Aug 2025 GCC 16.1 Generic Associated Types 0% 0% - 15th Mar 2025 - 15th Jun 2025 GCC 16.1 RfL const generics 0% 0% - 1st May 2025 - 15th Jun 2025 GCC 16.1 frontend plugin hooks 0% 0% - 15th May 2025 - 7th Jul 2025 GCC 16.1 Handling the testsuite issues 0% 0% - 15th Sep 2024 - 15th Sep 2025 GCC 16.1 main shim 0% 0% - 28th Jul 2025 - 15th Sep 2025 GCC 16.1 Final core attributes 0% 0% -   -   GCC 16.1 Core nightly features 0% 0% -   -   GCC 16.1 Defered inference 0% 0% -   -   GCC 16.1 Fn traits fixes 0% 0% -   -   GCC 16.1 Recursive types 0% 0% -   -   GCC 16.1 Drop 0% 0% -   -   GCC 16.1 Pin, PinInit 0% 0% -   -   GCC 16.1 Past Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Data Structures 1 - Core 100% 100% - 30th Nov 2020 27th Jan 2021 29th Jan 2021 GCC 14.1 Control Flow 1 - Core 100% 100% - 28th Jan 2021 10th Feb 2021 26th Feb 2021 GCC 14.1 Data Structures 2 - Generics 100% 100% - 11th Feb 2021 14th May 2021 28th May 2021 GCC 14.1 Data Structures 3 - Traits 100% 100% - 20th May 2021 17th Sep 2021 27th Aug 2021 GCC 14.1 Control Flow 2 - Pattern Matching 100% 100% - 20th Sep 2021 9th Dec 2021 29th Nov 2021 GCC 14.1 Macros and cfg expansion 100% 100% - 1st Dec 2021 31st Mar 2022 28th Mar 2022 GCC 14.1 Imports and Visibility 100% 100% - 29th Mar 2022 13th Jul 2022 27th May 2022 GCC 14.1 Const Generics 100% 100% - 30th May 2022 10th Oct 2022 17th Oct 2022 GCC 14.1 Initial upstream patches 100% 100% - 10th Oct 2022 13th Nov 2022 13th Nov 2022 GCC 14.1 Upstream initial patchset 100% 100% - 13th Nov 2022 13th Dec 2022 19th Dec 2022 GCC 14.1 Update GCC’s master branch 100% 100% - 1st Jan 2023 21st Feb 2023 3rd Mar 2023 GCC 14.1 Final set of upstream patches 100% 100% - 16th Nov 2022 1st May 2023 30th Apr 2023 GCC 14.1 Borrow Checking 1 100% 100% - TBD 8th Jan 2024 15th Aug 2023 GCC 14.1 Procedural Macros 1 100% 100% - 13th Apr 2023 6th Aug 2023 6th Aug 2023 GCC 14.1 GCC 13.2 Release 100% 100% - 13th Apr 2023 22nd Jul 2023 15th Jul 2023 GCC 14.1 GCC 14 Stage 3 100% 100% - 1st Sep 2023 20th Sep 2023 1st Nov 2023 GCC 14.1 GCC 14.1 Release 100% 100% - 2nd Jan 2024 2nd Jun 2024 15th Apr 2024 GCC 14.1 format_args!() support 100% 100% - 15th Feb 2024 - 1st Apr 2024 GCC 14.1 GCC 14.2 100% 100% - 7th Jun 2024 15th Jun 2024 15th Jun 2024 GCC 14.2 GCC 15.1 100% 100% - 21st Jun 2024 31st Jun 2024 1st Jul 2024 GCC 15.1 Unhandled attributes 100% 100% - 1st Jul 2024 15th Aug 2024 15th Aug 2024 GCC 15.1 Inline assembly 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Rustc Testsuite Adaptor 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Borrow checker improvements 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Deref and DerefMut improvements 100% 100% - 28th Sep 2024 25th Oct 2024 28th Dec 2024 GCC 15.1 Indexing fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Iterator fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Auto traits improvements 100% 100% - 15th Sep 2024 20th Jan 2025 21st Dec 2024 GCC 15.1 Lang items 100% 100% - 1st Jul 2024 10th Jan 2025 21st Nov 2024 GCC 15.1 alloc parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 15.1 std parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 16.1 Question mark operator 100% 100% - 15th Dec 2024 21st Feb 2025 21st Feb 2025 GCC 15.1 Name resolution 2.0 rework 100% 100% - 1st Jun 2024 - 1st Apr 2025 GCC 15.1 Macro expansion 100% 100% - 1st Jun 2024 - 1st Jan 2025 GCC 15.1 Remaining typecheck issues 100% 100% - 21st Oct 2024 - 1st Mar 2025 GCC 15.1 cfg-core 100% 100% - 1st Dec 2024 24th Mar 2025 1st Mar 2025 GCC 15.1 Codegen fixes 100% 100% - 7th Oct 2024 1st Apr 2025 1st Mar 2025 GCC 15.1 black_box intrinsic 100% 100% - 28th Oct 2024 - 28th Jan 2025 GCC 15.1 let-else 100% 100% - 28th Jan 2025 - 28th Feb 2025 GCC 15.1 Specialization 100% 100% - 1st Jan 2025 1st Apr 2025 1st Mar 2025 GCC 15.1 cfg-rfl 100% 100% - 7th Jan 2025 19th Mar 2025 15th Feb 2025 GCC 15.1 Downgrade to Rust 1.49 100% 100% - 14th Mar 2025 26th Mar 2025 1st Apr 2025 GCC 15.1 try blocks 100% 100% -   30th Jul 2025   GCC 16.1 while-let loops 100% 100% -   30th Jul 2025   GCC 16.1 offset_of!() builtin macro 100% 100% - 15th Mar 2025 4th Aug 2025 15th Aug 2025 GCC 16.1 Explicit generics with impl Trait 100% 100% - 28th Feb 2025 21st Jul 2025 28th Mar 2025 GCC 16.1 Planned Activities Finish debugging core Start experimenting with the kernel’s Rust code]]></summary></entry><entry><title type="html">July 2025 Monthly report</title><link href="https://rust-gcc.github.io/2025/08/05/2025-07-monthly-report.html" rel="alternate" type="text/html" title="July 2025 Monthly report" /><published>2025-08-05T00:00:00+00:00</published><updated>2025-08-05T00:00:00+00:00</updated><id>https://rust-gcc.github.io/2025/08/05/2025-07-monthly-report</id><content type="html" xml:base="https://rust-gcc.github.io/2025/08/05/2025-07-monthly-report.html"><![CDATA[<h2 id="overview">Overview</h2>

<p>Thanks again to <a href="https://opensrcsec.com/">Open Source Security, inc</a> and
<a href="https://www.embecosm.com/">Embecosm</a> for their ongoing support for this
project.</p>

<h3 id="project-update">Project update</h3>

<p>Our two GSoC students are progressing nicely on their projects and are
both ahead of schedule. Zhi Heng’s work is allowing us to handle some
complex pattern matches present in <code class="language-plaintext highlighter-rouge">core</code>, which the compiler would
previously ignore - while Ryutaro’s contributions are adding more
complex warning checkers while removing previous false positives. Thanks
to them, the compiler is getting more correct, and gets closer and
closer to real Rust code.</p>

<p>Speaking of this, this month marks an important milestone for <code class="language-plaintext highlighter-rouge">gccrs</code>:
One of our earliest “real-code” milestone was an implementation of
<code class="language-plaintext highlighter-rouge">SipHash</code> as is present in <code class="language-plaintext highlighter-rouge">core</code>:
<a href="https://github.com/rust-lang/rust/blob/1.60.0/library/core/src/hash/sip.rs">Link</a>.
This algorithm relies on an important amount of code from <code class="language-plaintext highlighter-rouge">core</code>, and we
have been trying to compile it for <a href="https://github.com/Rust-GCC/gccrs/issues/1247">multiple
years</a>. With Philip’s
recent work on fixing typechecker issues, the module now works and is
being compiled properly.</p>

<p>Overall, our progress on <code class="language-plaintext highlighter-rouge">core</code> is great and things are moving fast. We
have completed the two milestones mentioned in last month’s report,
<code class="language-plaintext highlighter-rouge">try</code> blocks and <code class="language-plaintext highlighter-rouge">while-let</code> loops, which allows us to continue moving
forward with <code class="language-plaintext highlighter-rouge">core</code>. We have also completed the work package on the
<code class="language-plaintext highlighter-rouge">offset_of!()</code> builtin macro, which marks our first Rust-for-Linux
specific feature - as the macro does not exist in the Rust 1.49 standard
library.</p>

<p>This means that our goal of experimenting with compiling the kernel at
the end of the summer is on track.</p>

<ol>
  <li>
    <p>try blocks</p>

    <p>The desugar for <code class="language-plaintext highlighter-rouge">try</code> blocks is interesting as it ties in with the
desugar for the <code class="language-plaintext highlighter-rouge">?</code> operator to prevent an early return from the
enclosing function instead of the current block.</p>

    <p>In Rust 1.49, the common desugar for the <code class="language-plaintext highlighter-rouge">?</code> operator is as follows:</p>

    <div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">fn</span> <span class="nf">foo</span><span class="p">()</span> <span class="k">-&gt;</span> <span class="nb">Result</span><span class="o">&lt;</span><span class="nb">i32</span><span class="p">,</span> <span class="p">()</span><span class="o">&gt;</span> <span class="p">{</span>
    <span class="k">let</span> <span class="n">a</span> <span class="o">=</span> <span class="nf">bar</span><span class="p">()</span><span class="o">?</span><span class="p">;</span>

    <span class="nf">Ok</span><span class="p">(</span><span class="mi">15i32</span><span class="p">);</span>
<span class="p">}</span>

<span class="c1">// becomes</span>


<span class="k">fn</span> <span class="nf">foo</span><span class="p">()</span> <span class="k">-&gt;</span> <span class="nb">Result</span><span class="o">&lt;</span><span class="nb">i32</span><span class="p">,</span> <span class="p">()</span><span class="o">&gt;</span> <span class="p">{</span>
    <span class="k">let</span> <span class="n">a</span> <span class="o">=</span> <span class="k">match</span> <span class="nn">Try</span><span class="p">::</span><span class="nf">into_result</span><span class="p">(</span><span class="nf">bar</span><span class="p">())</span> <span class="p">{</span>
        <span class="nf">Ok</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">=&gt;</span> <span class="n">value</span><span class="p">,</span>
        <span class="nf">Err</span><span class="p">(</span><span class="n">err</span><span class="p">)</span> <span class="k">=&gt;</span> <span class="k">return</span> <span class="nn">Try</span><span class="p">::</span><span class="nf">from_err</span><span class="p">(</span><span class="nn">From</span><span class="p">::</span><span class="nf">from</span><span class="p">(</span><span class="n">err</span><span class="p">)),</span>
    <span class="p">};</span>

    <span class="nf">Ok</span><span class="p">(</span><span class="mi">15i32</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div>    </div>

    <p>As explained in last month’s report, the desugar for <code class="language-plaintext highlighter-rouge">try</code> blocks is
as follows:</p>

    <div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">try</span> <span class="p">{</span>
  <span class="o">&lt;</span><span class="n">stmts</span><span class="o">&gt;</span><span class="p">;</span>
  <span class="o">&lt;</span><span class="n">expr</span><span class="o">&gt;</span>
<span class="p">}</span>

<span class="c1">// becomes</span>

<span class="p">{</span>
  <span class="o">&lt;</span><span class="n">stmts</span><span class="o">&gt;</span><span class="p">;</span>
  <span class="p">::</span><span class="nn">std</span><span class="p">::</span><span class="nn">ops</span><span class="p">::</span><span class="nn">Try</span><span class="p">::</span><span class="nf">from_ok</span><span class="p">(</span><span class="o">&lt;</span><span class="n">expr</span><span class="o">&gt;</span><span class="p">)</span>
<span class="p">}</span>
</code></pre></div>    </div>

    <p>However, if we desugar the <code class="language-plaintext highlighter-rouge">?</code> operator inside of a <code class="language-plaintext highlighter-rouge">try</code> block…</p>

    <div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">fn</span> <span class="nf">foo</span><span class="p">()</span> <span class="k">-&gt;</span> <span class="nb">Result</span><span class="o">&lt;</span><span class="nb">i32</span><span class="p">,</span> <span class="p">()</span><span class="o">&gt;</span> <span class="p">{</span>
    <span class="k">let</span> <span class="n">a</span><span class="p">:</span> <span class="nb">Result</span><span class="o">&lt;</span><span class="nb">i32</span><span class="p">,</span> <span class="p">()</span><span class="o">&gt;</span> <span class="o">=</span> <span class="k">try</span> <span class="p">{</span>
        <span class="nf">bar</span><span class="p">()</span><span class="o">?</span><span class="p">;</span>

        <span class="mi">14i32</span>
    <span class="p">};</span>

    <span class="n">a</span>
<span class="p">}</span>

<span class="c1">// becomes</span>

<span class="k">fn</span> <span class="nf">foo</span><span class="p">()</span> <span class="k">-&gt;</span> <span class="nb">Result</span><span class="o">&lt;</span><span class="nb">i32</span><span class="p">,</span> <span class="p">()</span><span class="o">&gt;</span> <span class="p">{</span>
    <span class="k">let</span> <span class="n">a</span><span class="p">:</span> <span class="nb">Result</span><span class="o">&lt;</span><span class="nb">i32</span><span class="p">,</span> <span class="p">()</span><span class="o">&gt;</span> <span class="o">=</span> <span class="p">{</span>
        <span class="k">match</span> <span class="nn">Try</span><span class="p">::</span><span class="nf">into_result</span><span class="p">(</span><span class="nf">bar</span><span class="p">())</span> <span class="p">{</span>
            <span class="nf">Ok</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">=&gt;</span> <span class="n">value</span><span class="p">,</span>
            <span class="nf">Err</span><span class="p">(</span><span class="n">err</span><span class="p">)</span> <span class="k">=&gt;</span> <span class="k">return</span> <span class="nn">Try</span><span class="p">::</span><span class="nf">from_err</span><span class="p">(</span><span class="nn">From</span><span class="p">::</span><span class="nf">from</span><span class="p">(</span><span class="n">err</span><span class="p">)),</span>
        <span class="p">};</span>

        <span class="nn">Try</span><span class="p">::</span><span class="nf">from_ok</span><span class="p">(</span><span class="mi">14i32</span><span class="p">)</span>
    <span class="p">}</span>

    <span class="nf">Ok</span><span class="p">(</span><span class="mi">15i32</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div>    </div>

    <p>…we can easily see how this would cause an early return from the
function instead of the block, should the <code class="language-plaintext highlighter-rouge">bar</code> function call return
an error. This is not the desired behavior, so the desugar must be
able to handle short-circuiting from the enclosing <code class="language-plaintext highlighter-rouge">try</code> block
instead.</p>

    <div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// expected desugar</span>
<span class="k">fn</span> <span class="nf">foo</span><span class="p">()</span> <span class="k">-&gt;</span> <span class="nb">Result</span><span class="o">&lt;</span><span class="nb">i32</span><span class="p">,</span> <span class="p">()</span><span class="o">&gt;</span> <span class="p">{</span>
    <span class="k">let</span> <span class="n">a</span><span class="p">:</span> <span class="nb">Result</span><span class="o">&lt;</span><span class="nb">i32</span><span class="p">,</span> <span class="p">()</span><span class="o">&gt;</span>  <span class="o">=</span> <span class="nv">'try_label</span> <span class="p">{</span>
        <span class="k">match</span> <span class="nn">Try</span><span class="p">::</span><span class="nf">into_result</span><span class="p">(</span><span class="nf">bar</span><span class="p">())</span> <span class="p">{</span>
            <span class="nf">Ok</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">=&gt;</span> <span class="n">value</span><span class="p">,</span>
            <span class="nf">Err</span><span class="p">(</span><span class="n">err</span><span class="p">)</span> <span class="k">=&gt;</span> <span class="p">{</span>
                <span class="k">break</span> <span class="nv">'try_label</span> <span class="nn">Try</span><span class="p">::</span><span class="nf">from_err</span><span class="p">(</span><span class="nn">From</span><span class="p">::</span><span class="nf">from</span><span class="p">(</span><span class="n">err</span><span class="p">));</span>
            <span class="p">}</span>
        <span class="p">};</span>

        <span class="nn">Try</span><span class="p">::</span><span class="nf">from_ok</span><span class="p">(</span><span class="mi">14i32</span><span class="p">)</span>
    <span class="p">}</span>

    <span class="nf">Ok</span><span class="p">(</span><span class="mi">15i32</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div>    </div>

    <p>We cannot yet handle this “complex” desugar, which would require
some changes to our desugaring infrastructure to keep some context
when desugaring the <code class="language-plaintext highlighter-rouge">?</code> operator. However, <strong>all</strong> of the <code class="language-plaintext highlighter-rouge">try</code>
blocks in <code class="language-plaintext highlighter-rouge">core</code> 1.49 only use the simple form of <code class="language-plaintext highlighter-rouge">try { &lt;expr&gt; }</code>,
which makes our job easier!</p>
  </li>
</ol>

<h3 id="community-call">Community call</h3>

<p>We will have our next monthly community call on the 11th of August at
9am UTC. You can subscribe to our calendar to see when the next one will
be held. The call is open to everyone, even if you would just like to
sit-in and listen. You can also subscribe to our
<a href="https://gcc.gnu.org/mailman/listinfo/gcc-rust">mailing-list</a> or join
our <a href="https://gcc-rust.zulipchat.com">Zulip chat</a> to be notified of
upcoming events.</p>

<ul>
  <li><a href="https://meet.jit.si/gccrs-community-call-august">Jitsi link</a></li>
  <li>Calendar ID:
7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com</li>
  <li><a href="https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com">Google calendar
link</a></li>
  <li><a href="https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics">iCal
link</a></li>
</ul>

<h2 id="call-for-contribution">Call for contribution</h2>

<ul>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2500">https://github.com/Rust-GCC/gccrs/issues/2500</a></p>
  </li>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2376">https://github.com/Rust-GCC/gccrs/issues/2376</a></p>
  </li>
</ul>

<h2 id="completed-activities">Completed Activities</h2>

<ul>
  <li>Fix object copying issue causing pointer inconsistency
<a href="https://github.com/rust-gcc/gccrs/pull/4038">PR4038</a></li>
  <li>Avoid including <code class="language-plaintext highlighter-rouge">rust-parse-impl.h</code> in <code class="language-plaintext highlighter-rouge">rust-parse.h</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4037">PR4037</a></li>
  <li>Catch parse failure in <code class="language-plaintext highlighter-rouge">parse_path_meta_item</code>
<a href="https://github.com/rust-gcc/gccrs/pull/4036">PR4036</a></li>
  <li>gccrs: Add test case showing method resolution with const-generics
<a href="https://github.com/rust-gcc/gccrs/pull/4035">PR4035</a></li>
  <li>gccrs: Remove more calls to the old TyTy::BaseType::can_eq
interface <a href="https://github.com/rust-gcc/gccrs/pull/4034">PR4034</a></li>
  <li>gccrs: Ensure we track the const generic substitution on the param
mappings <a href="https://github.com/rust-gcc/gccrs/pull/4033">PR4033</a></li>
  <li>Fix uninitialized data in default constructors
<a href="https://github.com/rust-gcc/gccrs/pull/4032">PR4032</a></li>
  <li>Retrieve token stream before vector move
<a href="https://github.com/rust-gcc/gccrs/pull/4030">PR4030</a></li>
  <li>gccrs: Fix ICE during const eval of const capacity
<a href="https://github.com/rust-gcc/gccrs/pull/4026">PR4026</a></li>
  <li>Add initial support for const generics
<a href="https://github.com/rust-gcc/gccrs/pull/4025">PR4025</a></li>
  <li>Remove warning for unused self parameter
<a href="https://github.com/rust-gcc/gccrs/pull/4024">PR4024</a></li>
  <li>Fix AttrInputMacro operator= overloading.
<a href="https://github.com/rust-gcc/gccrs/pull/4023">PR4023</a></li>
  <li>Add offset_of!() evaluation
<a href="https://github.com/rust-gcc/gccrs/pull/4021">PR4021</a></li>
  <li>Error message field member was not properly updated
<a href="https://github.com/rust-gcc/gccrs/pull/4019">PR4019</a></li>
  <li>gccrs: Add rest pattern support for AST::SlicePattern
<a href="https://github.com/rust-gcc/gccrs/pull/4017">PR4017</a></li>
  <li>Parse expression instead of literal in attributes
<a href="https://github.com/rust-gcc/gccrs/pull/4016">PR4016</a></li>
  <li>Fix infinite loop with missing comma
<a href="https://github.com/rust-gcc/gccrs/pull/4015">PR4015</a></li>
  <li>Fix semicolon after some namespace
<a href="https://github.com/rust-gcc/gccrs/pull/4013">PR4013</a></li>
  <li>Inline assembly expressions
<a href="https://github.com/rust-gcc/gccrs/pull/4012">PR4012</a></li>
  <li>nr1.0: Remove <code class="language-plaintext highlighter-rouge">rust/typecheck</code> support
<a href="https://github.com/rust-gcc/gccrs/pull/4011">PR4011</a></li>
  <li>Add HIR::OffsetOf node
<a href="https://github.com/rust-gcc/gccrs/pull/4010">PR4010</a></li>
  <li>Add OffsetOf AST node and offset_of!() parsing
<a href="https://github.com/rust-gcc/gccrs/pull/4005">PR4005</a></li>
  <li>Desugar while-let loops
<a href="https://github.com/rust-gcc/gccrs/pull/4000">PR4000</a></li>
  <li>Dispatch for-loop desugar properly
<a href="https://github.com/rust-gcc/gccrs/pull/3999">PR3999</a></li>
  <li>gccrs: Implement compilation for SlicePattern matching against
SliceType scrutinee
<a href="https://github.com/rust-gcc/gccrs/pull/3998">PR3998</a></li>
  <li>Handle easy try-block desugar
<a href="https://github.com/rust-gcc/gccrs/pull/3997">PR3997</a></li>
  <li>Handle <code class="language-plaintext highlighter-rouge">IfLetExprConseqElse</code> in <code class="language-plaintext highlighter-rouge">DefaultResolver</code>
<a href="https://github.com/rust-gcc/gccrs/pull/3996">PR3996</a></li>
  <li>desugar: Add desugar dispatch for all desugars
<a href="https://github.com/rust-gcc/gccrs/pull/3994">PR3994</a></li>
  <li>ast: Visit block labels if they are present
<a href="https://github.com/rust-gcc/gccrs/pull/3993">PR3993</a></li>
  <li>gccrs: fix bad monomophization of generic paths - GOAL TEST CASE SIP
HASHER WORKS! <a href="https://github.com/rust-gcc/gccrs/pull/3992">PR3992</a></li>
  <li>Specialize <code class="language-plaintext highlighter-rouge">ExpandVisitor::expand_macro_children</code>
<a href="https://github.com/rust-gcc/gccrs/pull/3989">PR3989</a></li>
  <li>gccrs: return error node when this fails during constexpr case
<a href="https://github.com/rust-gcc/gccrs/pull/3988">PR3988</a></li>
  <li>gccrs: Fix ICE with duplicate root item main function
<a href="https://github.com/rust-gcc/gccrs/pull/3987">PR3987</a></li>
  <li>gccrs: Add test case to show issue is fixed
<a href="https://github.com/rust-gcc/gccrs/pull/3986">PR3986</a></li>
  <li>gccrs: Add initial support for deffered operator overload resolution
<a href="https://github.com/rust-gcc/gccrs/pull/3985">PR3985</a></li>
  <li>gccrs: Implement compilation for SlicePattern matching against
ArrayType scrutinee
<a href="https://github.com/rust-gcc/gccrs/pull/3981">PR3981</a></li>
  <li>gccrs: Reject loop in const/static context
<a href="https://github.com/rust-gcc/gccrs/pull/3980">PR3980</a></li>
  <li>Improve parsing of simple paths
<a href="https://github.com/rust-gcc/gccrs/pull/3979">PR3979</a></li>
  <li>gccrs: Add size checking to SlicePattern
<a href="https://github.com/rust-gcc/gccrs/pull/3913">PR3913</a></li>
  <li>gccrs: Add test case showing all derives working on enum
<a href="https://github.com/rust-gcc/gccrs/pull/3912">PR3912</a></li>
  <li>gccrs: Add test case to show issue is fixed
<a href="https://github.com/rust-gcc/gccrs/pull/3911">PR3911</a></li>
  <li>gccrs: Add test case to show we emit better errors now
<a href="https://github.com/rust-gcc/gccrs/pull/3909">PR3909</a></li>
  <li>gccrs: add test case to show issue is fixed
<a href="https://github.com/rust-gcc/gccrs/pull/3907">PR3907</a></li>
  <li>gccrs: Fix ICE when handling bad constructor
<a href="https://github.com/rust-gcc/gccrs/pull/3901">PR3901</a></li>
  <li>gccrs: Fix cast rules logic to try simple casts then fall back to
coercions <a href="https://github.com/rust-gcc/gccrs/pull/3900">PR3900</a></li>
  <li>gccrs: Fix bad bounds checking for PartialOrd
<a href="https://github.com/rust-gcc/gccrs/pull/3899">PR3899</a></li>
  <li>nr2.0: Check before visiting a for-loop’s label
<a href="https://github.com/rust-gcc/gccrs/pull/3895">PR3895</a></li>
  <li>Resolve enum glob imports
<a href="https://github.com/rust-gcc/gccrs/pull/3894">PR3894</a></li>
  <li>gccrs: Fix ice with invalid borrow expression
<a href="https://github.com/rust-gcc/gccrs/pull/3891">PR3891</a></li>
  <li>Use <code class="language-plaintext highlighter-rouge">MacroInvocLexer</code> in <code class="language-plaintext highlighter-rouge">AttributeParser</code>
<a href="https://github.com/rust-gcc/gccrs/pull/3890">PR3890</a></li>
  <li>gccrs: Do proper const folding during typechecking for array
capacities <a href="https://github.com/rust-gcc/gccrs/pull/3889">PR3889</a></li>
  <li>Fix narrowing of Loan (size_t) into LoanId (uint32)
<a href="https://github.com/rust-gcc/gccrs/pull/3888">PR3888</a></li>
  <li>Basic SlicePattern type checking
<a href="https://github.com/rust-gcc/gccrs/pull/3887">PR3887</a></li>
  <li>Parse deferred const generics
<a href="https://github.com/rust-gcc/gccrs/pull/3886">PR3886</a></li>
  <li>attributes: Add #[test] and #[simd_test]
<a href="https://github.com/rust-gcc/gccrs/pull/3884">PR3884</a></li>
  <li>Change enum to enum class
<a href="https://github.com/rust-gcc/gccrs/pull/3878">PR3878</a></li>
  <li>Remove <code class="language-plaintext highlighter-rouge">Late</code> visitor override for <code class="language-plaintext highlighter-rouge">StructStruct</code>
<a href="https://github.com/rust-gcc/gccrs/pull/3873">PR3873</a></li>
  <li>Allow <code class="language-plaintext highlighter-rouge">format_args</code> to accept a raw string literal
<a href="https://github.com/rust-gcc/gccrs/pull/3872">PR3872</a></li>
  <li>Load modules during <code class="language-plaintext highlighter-rouge">CfgStrip</code> phase
<a href="https://github.com/rust-gcc/gccrs/pull/3871">PR3871</a></li>
  <li>Parse try expressions
<a href="https://github.com/rust-gcc/gccrs/pull/3870">PR3870</a></li>
  <li>Remove <code class="language-plaintext highlighter-rouge">reinterpret_cast</code> usages in <code class="language-plaintext highlighter-rouge">DefaultASTVisitor</code>
<a href="https://github.com/rust-gcc/gccrs/pull/3869">PR3869</a></li>
  <li>Sync with upstream 0d52a736a3856871761c89fefa59c2ff39f3a5f8
<a href="https://github.com/rust-gcc/gccrs/pull/3860">PR3860</a></li>
  <li>ast: Check before visiting a while-let’s label
<a href="https://github.com/rust-gcc/gccrs/pull/3797">PR3797</a></li>
</ul>

<h3 id="contributors-this-month">Contributors this month</h3>

<ul>
  <li><a href="https://github.com/Polygonalr">Zhi Heng</a></li>
  <li><a href="https://github.com/sakupan102">Ryutaro Okada</a></li>
  <li><a href="https://github.com/Lishin1215">Lishin</a></li>
  <li><a href="https://github.com/dkm">Marc Poulhiès</a></li>
  <li><a href="https://github.com/powerboat9">Owen Avery</a></li>
  <li><a href="https://github.com/P-E-P">Pierre-Emmanuel Patry</a></li>
  <li><a href="https://github.com/philberty">Philip Herron</a></li>
  <li><a href="https://github.com/CohenArthur">Arthur Cohen</a></li>
</ul>

<h3 id="overall-task-status">Overall Task Status</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>469</td>
      <td>517</td>
      <td>+48</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>112</td>
      <td>109</td>
      <td>-3</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>1077</td>
      <td>1114</td>
      <td>+37</td>
    </tr>
  </tbody>
</table>

<h3 id="bugs">Bugs</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>207</td>
      <td>207</td>
      <td>-</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>54</td>
      <td>54</td>
      <td>-2</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>526</td>
      <td>526</td>
      <td>+5</td>
    </tr>
  </tbody>
</table>

<h3 id="test-cases">Test Cases</h3>

<table>
  <thead>
    <tr>
      <th>TestCases</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Passing</td>
      <td>9949</td>
      <td>10089</td>
      <td>+140</td>
    </tr>
    <tr>
      <td>Failed</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XFAIL</td>
      <td>64</td>
      <td>64</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XPASS</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
  </tbody>
</table>

<h3 id="milestones-progress">Milestones Progress</h3>

<table>
  <thead>
    <tr>
      <th>Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Explicit generics with impl Trait</td>
      <td>85%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>21st Jul 2025</td>
      <td>28th Mar 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final Inline assembly fixes</td>
      <td>0%</td>
      <td>65%</td>
      <td>+65%</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>try blocks</td>
      <td>0%</td>
      <td>100%</td>
      <td>+100%</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>while-let loops</td>
      <td>0%</td>
      <td>100%</td>
      <td>+100%</td>
      <td> </td>
      <td>30th Jul 2025</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>offset_of!() builtin macro</td>
      <td>0%</td>
      <td>100%</td>
      <td>+100%</td>
      <td>15th Mar 2025</td>
      <td>4th Aug 2025</td>
      <td>15th Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Upcoming Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Unstable RfL features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>-</td>
      <td>1st Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Generic Associated Types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>RfL const generics</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>1st May 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>frontend plugin hooks</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th May 2025</td>
      <td>-</td>
      <td>7th Jul 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Handling the testsuite issues</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>main shim</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>28th Jul 2025</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final core attributes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Core nightly features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Defered inference</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Fn traits fixes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Recursive types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Drop</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Pin, PinInit</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Past Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Data Structures 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th Nov 2020</td>
      <td>27th Jan 2021</td>
      <td>29th Jan 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2021</td>
      <td>10th Feb 2021</td>
      <td>26th Feb 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 2 - Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>11th Feb 2021</td>
      <td>14th May 2021</td>
      <td>28th May 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 3 - Traits</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th May 2021</td>
      <td>17th Sep 2021</td>
      <td>27th Aug 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 2 - Pattern Matching</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th Sep 2021</td>
      <td>9th Dec 2021</td>
      <td>29th Nov 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Macros and cfg expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2021</td>
      <td>31st Mar 2022</td>
      <td>28th Mar 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Imports and Visibility</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>29th Mar 2022</td>
      <td>13th Jul 2022</td>
      <td>27th May 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Const Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th May 2022</td>
      <td>10th Oct 2022</td>
      <td>17th Oct 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Initial upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>10th Oct 2022</td>
      <td>13th Nov 2022</td>
      <td>13th Nov 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Upstream initial patchset</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Nov 2022</td>
      <td>13th Dec 2022</td>
      <td>19th Dec 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Update GCC’s master branch</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2023</td>
      <td>21st Feb 2023</td>
      <td>3rd Mar 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Final set of upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>16th Nov 2022</td>
      <td>1st May 2023</td>
      <td>30th Apr 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Borrow Checking 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>TBD</td>
      <td>8th Jan 2024</td>
      <td>15th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Procedural Macros 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>6th Aug 2023</td>
      <td>6th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 13.2 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>22nd Jul 2023</td>
      <td>15th Jul 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14 Stage 3</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Sep 2023</td>
      <td>20th Sep 2023</td>
      <td>1st Nov 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.1 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>2nd Jan 2024</td>
      <td>2nd Jun 2024</td>
      <td>15th Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>format_args!() support</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Feb 2024</td>
      <td>-</td>
      <td>1st Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.2</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>GCC 14.2</td>
    </tr>
    <tr>
      <td>GCC 15.1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jun 2024</td>
      <td>31st Jun 2024</td>
      <td>1st Jul 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Unhandled attributes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>15th Aug 2024</td>
      <td>15th Aug 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Inline assembly</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Rustc Testsuite Adaptor</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Borrow checker improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Deref and DerefMut improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Sep 2024</td>
      <td>25th Oct 2024</td>
      <td>28th Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Indexing fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Iterator fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Auto traits improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>20th Jan 2025</td>
      <td>21st Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Lang items</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>10th Jan 2025</td>
      <td>21st Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>alloc parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>std parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Question mark operator</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Dec 2024</td>
      <td>21st Feb 2025</td>
      <td>21st Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Name resolution 2.0 rework</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Macro expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Remaining typecheck issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Oct 2024</td>
      <td>-</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2024</td>
      <td>24th Mar 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Codegen fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Oct 2024</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>black_box intrinsic</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Oct 2024</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>let-else</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Specialization</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-rfl</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>19th Mar 2025</td>
      <td>15th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Downgrade to Rust 1.49</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>14th Mar 2025</td>
      <td>26th Mar 2025</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
  </tbody>
</table>

<h2 id="planned-activities">Planned Activities</h2>

<ul>
  <li>Start working on try blocks and while-let loops</li>
  <li>Finish name resolution and macro expansion issues</li>
</ul>

<h3 id="risks">Risks</h3>

<p>We must establish the list of GCC-common changes we need, as we will
have to send them upstream before the start of Stage 3 around November.
This is the only risk which could incur further problems and prevent
more gccrs features from landing in 16.1.</p>]]></content><author><name>Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen</name></author><category term="monthly-report" /><summary type="html"><![CDATA[Overview Thanks again to Open Source Security, inc and Embecosm for their ongoing support for this project. Project update Our two GSoC students are progressing nicely on their projects and are both ahead of schedule. Zhi Heng’s work is allowing us to handle some complex pattern matches present in core, which the compiler would previously ignore - while Ryutaro’s contributions are adding more complex warning checkers while removing previous false positives. Thanks to them, the compiler is getting more correct, and gets closer and closer to real Rust code. Speaking of this, this month marks an important milestone for gccrs: One of our earliest “real-code” milestone was an implementation of SipHash as is present in core: Link. This algorithm relies on an important amount of code from core, and we have been trying to compile it for multiple years. With Philip’s recent work on fixing typechecker issues, the module now works and is being compiled properly. Overall, our progress on core is great and things are moving fast. We have completed the two milestones mentioned in last month’s report, try blocks and while-let loops, which allows us to continue moving forward with core. We have also completed the work package on the offset_of!() builtin macro, which marks our first Rust-for-Linux specific feature - as the macro does not exist in the Rust 1.49 standard library. This means that our goal of experimenting with compiling the kernel at the end of the summer is on track. try blocks The desugar for try blocks is interesting as it ties in with the desugar for the ? operator to prevent an early return from the enclosing function instead of the current block. In Rust 1.49, the common desugar for the ? operator is as follows: fn foo() -&gt; Result&lt;i32, ()&gt; { let a = bar()?; Ok(15i32); } // becomes fn foo() -&gt; Result&lt;i32, ()&gt; { let a = match Try::into_result(bar()) { Ok(value) =&gt; value, Err(err) =&gt; return Try::from_err(From::from(err)), }; Ok(15i32); } As explained in last month’s report, the desugar for try blocks is as follows: try { &lt;stmts&gt;; &lt;expr&gt; } // becomes { &lt;stmts&gt;; ::std::ops::Try::from_ok(&lt;expr&gt;) } However, if we desugar the ? operator inside of a try block… fn foo() -&gt; Result&lt;i32, ()&gt; { let a: Result&lt;i32, ()&gt; = try { bar()?; 14i32 }; a } // becomes fn foo() -&gt; Result&lt;i32, ()&gt; { let a: Result&lt;i32, ()&gt; = { match Try::into_result(bar()) { Ok(value) =&gt; value, Err(err) =&gt; return Try::from_err(From::from(err)), }; Try::from_ok(14i32) } Ok(15i32); } …we can easily see how this would cause an early return from the function instead of the block, should the bar function call return an error. This is not the desired behavior, so the desugar must be able to handle short-circuiting from the enclosing try block instead. // expected desugar fn foo() -&gt; Result&lt;i32, ()&gt; { let a: Result&lt;i32, ()&gt; = 'try_label { match Try::into_result(bar()) { Ok(value) =&gt; value, Err(err) =&gt; { break 'try_label Try::from_err(From::from(err)); } }; Try::from_ok(14i32) } Ok(15i32); } We cannot yet handle this “complex” desugar, which would require some changes to our desugaring infrastructure to keep some context when desugaring the ? operator. However, all of the try blocks in core 1.49 only use the simple form of try { &lt;expr&gt; }, which makes our job easier! Community call We will have our next monthly community call on the 11th of August at 9am UTC. You can subscribe to our calendar to see when the next one will be held. The call is open to everyone, even if you would just like to sit-in and listen. You can also subscribe to our mailing-list or join our Zulip chat to be notified of upcoming events. Jitsi link Calendar ID: 7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com Google calendar link iCal link Call for contribution https://github.com/Rust-GCC/gccrs/issues/2500 https://github.com/Rust-GCC/gccrs/issues/2376 Completed Activities Fix object copying issue causing pointer inconsistency PR4038 Avoid including rust-parse-impl.h in rust-parse.h PR4037 Catch parse failure in parse_path_meta_item PR4036 gccrs: Add test case showing method resolution with const-generics PR4035 gccrs: Remove more calls to the old TyTy::BaseType::can_eq interface PR4034 gccrs: Ensure we track the const generic substitution on the param mappings PR4033 Fix uninitialized data in default constructors PR4032 Retrieve token stream before vector move PR4030 gccrs: Fix ICE during const eval of const capacity PR4026 Add initial support for const generics PR4025 Remove warning for unused self parameter PR4024 Fix AttrInputMacro operator= overloading. PR4023 Add offset_of!() evaluation PR4021 Error message field member was not properly updated PR4019 gccrs: Add rest pattern support for AST::SlicePattern PR4017 Parse expression instead of literal in attributes PR4016 Fix infinite loop with missing comma PR4015 Fix semicolon after some namespace PR4013 Inline assembly expressions PR4012 nr1.0: Remove rust/typecheck support PR4011 Add HIR::OffsetOf node PR4010 Add OffsetOf AST node and offset_of!() parsing PR4005 Desugar while-let loops PR4000 Dispatch for-loop desugar properly PR3999 gccrs: Implement compilation for SlicePattern matching against SliceType scrutinee PR3998 Handle easy try-block desugar PR3997 Handle IfLetExprConseqElse in DefaultResolver PR3996 desugar: Add desugar dispatch for all desugars PR3994 ast: Visit block labels if they are present PR3993 gccrs: fix bad monomophization of generic paths - GOAL TEST CASE SIP HASHER WORKS! PR3992 Specialize ExpandVisitor::expand_macro_children PR3989 gccrs: return error node when this fails during constexpr case PR3988 gccrs: Fix ICE with duplicate root item main function PR3987 gccrs: Add test case to show issue is fixed PR3986 gccrs: Add initial support for deffered operator overload resolution PR3985 gccrs: Implement compilation for SlicePattern matching against ArrayType scrutinee PR3981 gccrs: Reject loop in const/static context PR3980 Improve parsing of simple paths PR3979 gccrs: Add size checking to SlicePattern PR3913 gccrs: Add test case showing all derives working on enum PR3912 gccrs: Add test case to show issue is fixed PR3911 gccrs: Add test case to show we emit better errors now PR3909 gccrs: add test case to show issue is fixed PR3907 gccrs: Fix ICE when handling bad constructor PR3901 gccrs: Fix cast rules logic to try simple casts then fall back to coercions PR3900 gccrs: Fix bad bounds checking for PartialOrd PR3899 nr2.0: Check before visiting a for-loop’s label PR3895 Resolve enum glob imports PR3894 gccrs: Fix ice with invalid borrow expression PR3891 Use MacroInvocLexer in AttributeParser PR3890 gccrs: Do proper const folding during typechecking for array capacities PR3889 Fix narrowing of Loan (size_t) into LoanId (uint32) PR3888 Basic SlicePattern type checking PR3887 Parse deferred const generics PR3886 attributes: Add #[test] and #[simd_test] PR3884 Change enum to enum class PR3878 Remove Late visitor override for StructStruct PR3873 Allow format_args to accept a raw string literal PR3872 Load modules during CfgStrip phase PR3871 Parse try expressions PR3870 Remove reinterpret_cast usages in DefaultASTVisitor PR3869 Sync with upstream 0d52a736a3856871761c89fefa59c2ff39f3a5f8 PR3860 ast: Check before visiting a while-let’s label PR3797 Contributors this month Zhi Heng Ryutaro Okada Lishin Marc Poulhiès Owen Avery Pierre-Emmanuel Patry Philip Herron Arthur Cohen Overall Task Status Category Last Month This Month Delta TODO 469 517 +48 In Progress 112 109 -3 Completed 1077 1114 +37 Bugs Category Last Month This Month Delta TODO 207 207 - In Progress 54 54 -2 Completed 526 526 +5 Test Cases TestCases Last Month This Month Delta Passing 9949 10089 +140 Failed - - - XFAIL 64 64 - XPASS - - - Milestones Progress Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Explicit generics with impl Trait 85% 100% - 28th Feb 2025 21st Jul 2025 28th Mar 2025 GCC 16.1 Final Inline assembly fixes 0% 65% +65%   -   GCC 16.1 try blocks 0% 100% +100%   30th Jul 2025   GCC 16.1 while-let loops 0% 100% +100%   30th Jul 2025   GCC 16.1 offset_of!() builtin macro 0% 100% +100% 15th Mar 2025 4th Aug 2025 15th Aug 2025 GCC 16.1 Upcoming Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Unstable RfL features 0% 0% - 7th Jan 2025 - 1st Aug 2025 GCC 16.1 Generic Associated Types 0% 0% - 15th Mar 2025 - 15th Jun 2025 GCC 16.1 RfL const generics 0% 0% - 1st May 2025 - 15th Jun 2025 GCC 16.1 frontend plugin hooks 0% 0% - 15th May 2025 - 7th Jul 2025 GCC 16.1 Handling the testsuite issues 0% 0% - 15th Sep 2024 - 15th Sep 2025 GCC 16.1 main shim 0% 0% - 28th Jul 2025 - 15th Sep 2025 GCC 16.1 Final core attributes 0% 0% -   -   GCC 16.1 Core nightly features 0% 0% -   -   GCC 16.1 Defered inference 0% 0% -   -   GCC 16.1 Fn traits fixes 0% 0% -   -   GCC 16.1 Recursive types 0% 0% -   -   GCC 16.1 Drop 0% 0% -   -   GCC 16.1 Pin, PinInit 0% 0% -   -   GCC 16.1 Past Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Data Structures 1 - Core 100% 100% - 30th Nov 2020 27th Jan 2021 29th Jan 2021 GCC 14.1 Control Flow 1 - Core 100% 100% - 28th Jan 2021 10th Feb 2021 26th Feb 2021 GCC 14.1 Data Structures 2 - Generics 100% 100% - 11th Feb 2021 14th May 2021 28th May 2021 GCC 14.1 Data Structures 3 - Traits 100% 100% - 20th May 2021 17th Sep 2021 27th Aug 2021 GCC 14.1 Control Flow 2 - Pattern Matching 100% 100% - 20th Sep 2021 9th Dec 2021 29th Nov 2021 GCC 14.1 Macros and cfg expansion 100% 100% - 1st Dec 2021 31st Mar 2022 28th Mar 2022 GCC 14.1 Imports and Visibility 100% 100% - 29th Mar 2022 13th Jul 2022 27th May 2022 GCC 14.1 Const Generics 100% 100% - 30th May 2022 10th Oct 2022 17th Oct 2022 GCC 14.1 Initial upstream patches 100% 100% - 10th Oct 2022 13th Nov 2022 13th Nov 2022 GCC 14.1 Upstream initial patchset 100% 100% - 13th Nov 2022 13th Dec 2022 19th Dec 2022 GCC 14.1 Update GCC’s master branch 100% 100% - 1st Jan 2023 21st Feb 2023 3rd Mar 2023 GCC 14.1 Final set of upstream patches 100% 100% - 16th Nov 2022 1st May 2023 30th Apr 2023 GCC 14.1 Borrow Checking 1 100% 100% - TBD 8th Jan 2024 15th Aug 2023 GCC 14.1 Procedural Macros 1 100% 100% - 13th Apr 2023 6th Aug 2023 6th Aug 2023 GCC 14.1 GCC 13.2 Release 100% 100% - 13th Apr 2023 22nd Jul 2023 15th Jul 2023 GCC 14.1 GCC 14 Stage 3 100% 100% - 1st Sep 2023 20th Sep 2023 1st Nov 2023 GCC 14.1 GCC 14.1 Release 100% 100% - 2nd Jan 2024 2nd Jun 2024 15th Apr 2024 GCC 14.1 format_args!() support 100% 100% - 15th Feb 2024 - 1st Apr 2024 GCC 14.1 GCC 14.2 100% 100% - 7th Jun 2024 15th Jun 2024 15th Jun 2024 GCC 14.2 GCC 15.1 100% 100% - 21st Jun 2024 31st Jun 2024 1st Jul 2024 GCC 15.1 Unhandled attributes 100% 100% - 1st Jul 2024 15th Aug 2024 15th Aug 2024 GCC 15.1 Inline assembly 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Rustc Testsuite Adaptor 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Borrow checker improvements 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Deref and DerefMut improvements 100% 100% - 28th Sep 2024 25th Oct 2024 28th Dec 2024 GCC 15.1 Indexing fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Iterator fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Auto traits improvements 100% 100% - 15th Sep 2024 20th Jan 2025 21st Dec 2024 GCC 15.1 Lang items 100% 100% - 1st Jul 2024 10th Jan 2025 21st Nov 2024 GCC 15.1 alloc parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 15.1 std parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 16.1 Question mark operator 100% 100% - 15th Dec 2024 21st Feb 2025 21st Feb 2025 GCC 15.1 Name resolution 2.0 rework 100% 100% - 1st Jun 2024 - 1st Apr 2025 GCC 15.1 Macro expansion 100% 100% - 1st Jun 2024 - 1st Jan 2025 GCC 15.1 Remaining typecheck issues 100% 100% - 21st Oct 2024 - 1st Mar 2025 GCC 15.1 cfg-core 100% 100% - 1st Dec 2024 24th Mar 2025 1st Mar 2025 GCC 15.1 Codegen fixes 100% 100% - 7th Oct 2024 1st Apr 2025 1st Mar 2025 GCC 15.1 black_box intrinsic 100% 100% - 28th Oct 2024 - 28th Jan 2025 GCC 15.1 let-else 100% 100% - 28th Jan 2025 - 28th Feb 2025 GCC 15.1 Specialization 100% 100% - 1st Jan 2025 1st Apr 2025 1st Mar 2025 GCC 15.1 cfg-rfl 100% 100% - 7th Jan 2025 19th Mar 2025 15th Feb 2025 GCC 15.1 Downgrade to Rust 1.49 100% 100% - 14th Mar 2025 26th Mar 2025 1st Apr 2025 GCC 15.1 Planned Activities Start working on try blocks and while-let loops Finish name resolution and macro expansion issues Risks We must establish the list of GCC-common changes we need, as we will have to send them upstream before the start of Stage 3 around November. This is the only risk which could incur further problems and prevent more gccrs features from landing in 16.1.]]></summary></entry><entry><title type="html">June 2025 Monthly report</title><link href="https://rust-gcc.github.io/2025/07/17/2025-06-monthly-report.html" rel="alternate" type="text/html" title="June 2025 Monthly report" /><published>2025-07-17T00:00:00+00:00</published><updated>2025-07-17T00:00:00+00:00</updated><id>https://rust-gcc.github.io/2025/07/17/2025-06-monthly-report</id><content type="html" xml:base="https://rust-gcc.github.io/2025/07/17/2025-06-monthly-report.html"><![CDATA[<h2 id="overview">Overview</h2>

<p>Thanks again to <a href="https://opensrcsec.com/">Open Source Security, inc</a> and
<a href="https://www.embecosm.com/">Embecosm</a> for their ongoing support for this
project.</p>

<h3 id="project-update">Project update</h3>

<p>The month of June saw a good number of contributions to the project,
with 61 pull-requests merged - despite Pierre-Emmanuel and Arthur both
being on vacation for two weeks each. One of the most important
milestones this month was the merge of our name-resolution 2.0
algorithm, and the removal of the previous version. This merge marks the
end of a year and a half of work aimed at better handling the complex
import and export structure in `core`, while remaining as powerful as
the existing solution.</p>

<p>Another major breakthrough is the completion of our git process rework -
thanks to the work of Marc Poulhies, Thomas Schwinge and Owen Avery, we
have considerably improved our processes for updating our fork and
upstreaming changes. Work on <code class="language-plaintext highlighter-rouge">gerris</code> has resumed, with more features
being added to the bot. This should enable us to prepare branches
automatically, test them on our CI, and have them ready for verification
by one of our maintainers before sending the commits upstream to GCC.
Similarly, <code class="language-plaintext highlighter-rouge">gerris</code> will soon be able to update our fork with the latest
changes from upstream GCC and will do so regularly.</p>

<p>We have also established further milestones for the next few months of
work on <code class="language-plaintext highlighter-rouge">gccrs</code>, as we get closer and closer to experimenting with the
kernel’s <code class="language-plaintext highlighter-rouge">alloc</code> crate. We have discovered more interesting nightly
features being used by the crate, which we will implement in the coming
months.</p>

<ol>
  <li>
    <p>try blocks</p>

    <p><code class="language-plaintext highlighter-rouge">try</code> blocks are used throughout <code class="language-plaintext highlighter-rouge">core</code>, especially in the
implementation of the various iterators such as <code class="language-plaintext highlighter-rouge">try_fold</code>:</p>

    <div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">fn</span> <span class="n">try_fold</span><span class="o">&lt;</span><span class="n">B</span><span class="p">,</span> <span class="n">F</span><span class="p">,</span> <span class="n">R</span><span class="o">&gt;</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span> <span class="k">self</span><span class="p">,</span> <span class="n">init</span><span class="p">:</span> <span class="n">B</span><span class="p">,</span> <span class="k">mut</span> <span class="n">f</span><span class="p">:</span> <span class="n">F</span><span class="p">)</span> <span class="k">-&gt;</span> <span class="n">R</span>
<span class="k">where</span>
    <span class="k">Self</span><span class="p">:</span> <span class="nb">Sized</span><span class="p">,</span>
    <span class="n">F</span><span class="p">:</span> <span class="nf">FnMut</span><span class="p">(</span><span class="n">B</span><span class="p">,</span> <span class="k">Self</span><span class="p">::</span><span class="n">Item</span><span class="p">)</span> <span class="k">-&gt;</span> <span class="n">R</span><span class="p">,</span>
    <span class="n">R</span><span class="p">:</span> <span class="n">Try</span><span class="o">&lt;</span><span class="nb">Ok</span> <span class="o">=</span> <span class="n">B</span><span class="o">&gt;</span><span class="p">,</span>
<span class="p">{</span>
    <span class="k">let</span> <span class="k">mut</span> <span class="n">accum</span> <span class="o">=</span> <span class="n">init</span><span class="p">;</span>
    <span class="k">while</span> <span class="k">let</span> <span class="nf">Some</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">=</span> <span class="k">self</span><span class="nf">.next</span><span class="p">()</span> <span class="p">{</span>
        <span class="n">accum</span> <span class="o">=</span> <span class="nf">f</span><span class="p">(</span><span class="n">accum</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span><span class="o">?</span><span class="p">;</span>
    <span class="p">}</span>

    <span class="k">try</span> <span class="p">{</span> <span class="n">accum</span> <span class="p">}</span> <span class="c1">// HERE</span>
<span class="p">}</span>
</code></pre></div>    </div>

    <p><code class="language-plaintext highlighter-rouge">try</code> blocks create a scope in which it is possible to use the <code class="language-plaintext highlighter-rouge">?</code>
operator. They are syntactic sugar for the following construct:</p>

    <div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">try</span> <span class="p">{</span>
  <span class="o">&lt;</span><span class="n">stmts</span><span class="o">&gt;</span><span class="p">;</span>
  <span class="o">&lt;</span><span class="n">expr</span><span class="o">&gt;</span>
<span class="p">}</span>

<span class="c1">// becomes</span>

<span class="p">{</span>
  <span class="o">&lt;</span><span class="n">stmts</span><span class="o">&gt;</span><span class="p">;</span>
  <span class="p">::</span><span class="nn">std</span><span class="p">::</span><span class="nn">ops</span><span class="p">::</span><span class="nn">Try</span><span class="p">::</span><span class="nf">from_ok</span><span class="p">(</span><span class="o">&lt;</span><span class="n">expr</span><span class="o">&gt;</span><span class="p">)</span>
<span class="p">}</span>
</code></pre></div>    </div>

    <p>Handling them in the majority of cases should hopefully be a simple
desugar that can be implemented quite quickly.</p>
  </li>
  <li>
    <p>const-generic inference</p>

    <p>Const-generic inference allows the user to instruct the compiler to
deduct the value of a const generic instead of spelling it out
explicitly. This is used in the <code class="language-plaintext highlighter-rouge">stdarch</code> crate, which <code class="language-plaintext highlighter-rouge">core</code>
depends on, for the <code class="language-plaintext highlighter-rouge">simd_shuffle</code> macro, which takes as argument an
array of unknown but fixed size:</p>

    <div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nd">macro_rules!</span> <span class="n">simd_shuffle</span> <span class="p">{</span>
    <span class="p">(</span><span class="nv">$x:expr</span><span class="p">,</span> <span class="nv">$y:expr</span><span class="p">,</span> <span class="nv">$idx:expr</span> <span class="nv">$</span><span class="p">(,)</span><span class="o">?</span><span class="p">)</span> <span class="k">=&gt;</span> <span class="p">{</span>
        <span class="nf">simd_shuffle</span><span class="p">(</span>
            <span class="nv">$x</span><span class="p">,</span>
            <span class="nv">$y</span><span class="p">,</span>
            <span class="k">const</span> <span class="p">{</span>
                <span class="k">let</span> <span class="n">v</span><span class="p">:</span> <span class="p">[</span><span class="nb">u32</span><span class="p">;</span> <span class="n">_</span><span class="p">]</span> <span class="o">=</span> <span class="nv">$idx</span><span class="p">;</span>
                <span class="n">v</span>
            <span class="p">},</span>
        <span class="p">)</span>
    <span class="p">};</span>
<span class="p">}</span>

<span class="k">let</span> <span class="n">d</span><span class="p">:</span> <span class="n">uint8x8_t</span> <span class="o">=</span> <span class="nd">simd_shuffle!</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="p">[</span><span class="mi">8</span><span class="p">,</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">13</span><span class="p">,</span> <span class="mi">14</span><span class="p">,</span> <span class="mi">15</span><span class="p">]);</span>

<span class="k">let</span> <span class="n">e</span><span class="p">:</span> <span class="n">uint16x4_t</span> <span class="o">=</span> <span class="nd">simd_shuffle!</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="p">[</span><span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">7</span><span class="p">]);</span>
</code></pre></div>    </div>

    <p>Since the array’s size is known by the compiler, but not by the user
writing the macro, we can rely on the compiler to infer the array’s
size and call the proper intrinsic, while still keeping the macro
definition and invocations simple.</p>
  </li>
  <li>
    <p>Further milestones</p>

    <table>
      <thead>
        <tr>
          <th>Milestone</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Inline assembly</td>
        </tr>
        <tr>
          <td>try blocks</td>
        </tr>
        <tr>
          <td>while-let loops</td>
        </tr>
        <tr>
          <td>core attributes</td>
        </tr>
        <tr>
          <td>core nightly features</td>
        </tr>
        <tr>
          <td>defered inference</td>
        </tr>
        <tr>
          <td>Argument Position impl Trait</td>
        </tr>
        <tr>
          <td>Return Position impl Trait</td>
        </tr>
        <tr>
          <td>Fn traits</td>
        </tr>
        <tr>
          <td>Recursive types</td>
        </tr>
        <tr>
          <td>Drop</td>
        </tr>
        <tr>
          <td>Pin, PinInit</td>
        </tr>
        <tr>
          <td>offset<sub>of</sub>!()</td>
        </tr>
      </tbody>
    </table>

    <p>In other news, our two GSoC students <a href="https://github.com/polygonalr">Zhi
Heng</a> and <a href="https://github.com/sakupan102">Ryutaro
Okada</a> are progressing nicely on
their projects, with both students passing the upcoming midterm
evaluation with flying colors. We are very satisfied with the speed
at which they are working, as well as their comprehension of the
task at hand. Ryutaro was able to reimplement one of our checks for
assignments to read-only variables, and can now support generic
functions, which was not allowed before. In the meantime, Zhi Heng
has contributed multiple improvements to our backend regarding the
compilation of complicated patterns such as tuple patterns and slice
patterns.</p>

    <p>Finally, we are also in the process of merging fixes for the release
of GCC 15.2.</p>
  </li>
</ol>

<h3 id="community-call">Community call</h3>

<p>We will have our next monthly community call on the 15th of July at 9am
UTC. You can subscribe to our calendar to see when the next one will be
held. The call is open to everyone, even if you would just like to
sit-in and listen. You can also subscribe to our
<a href="https://gcc.gnu.org/mailman/listinfo/gcc-rust">mailing-list</a> or join
our <a href="https://gcc-rust.zulipchat.com">Zulip chat</a> to be notified of
upcoming events.</p>

<ul>
  <li><a href="https://meet.jit.si/gccrs-community-call-july">Jitsi link</a></li>
  <li>Calendar ID:
7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com</li>
  <li><a href="https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com">Google calendar
link</a></li>
  <li><a href="https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics">iCal
link</a></li>
</ul>

<h2 id="call-for-contribution">Call for contribution</h2>

<ul>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2500">https://github.com/Rust-GCC/gccrs/issues/2500</a></p>
  </li>
  <li>
    <p><a href="https://github.com/Rust-GCC/gccrs/issues/2376">https://github.com/Rust-GCC/gccrs/issues/2376</a></p>
  </li>
</ul>

<h2 id="completed-activities">Completed Activities</h2>

<ul>
  <li>Change enum to enum class
<a href="https://github.com/rust-gcc/gccrs/pull/3878">PR3878</a></li>
  <li>Remove <code class="language-plaintext highlighter-rouge">Late</code> visitor override for <code class="language-plaintext highlighter-rouge">StructStruct</code>
<a href="https://github.com/rust-gcc/gccrs/pull/3873">PR3873</a></li>
  <li>Allow <code class="language-plaintext highlighter-rouge">format_args</code> to accept a raw string literal
<a href="https://github.com/rust-gcc/gccrs/pull/3872">PR3872</a></li>
  <li>Parse try expressions
<a href="https://github.com/rust-gcc/gccrs/pull/3870">PR3870</a></li>
  <li>Remove <code class="language-plaintext highlighter-rouge">reinterpret_cast</code> usages in <code class="language-plaintext highlighter-rouge">DefaultASTVisitor</code>
<a href="https://github.com/rust-gcc/gccrs/pull/3869">PR3869</a></li>
  <li>nr1.0: Remove <code class="language-plaintext highlighter-rouge">rust/backend</code> support
<a href="https://github.com/rust-gcc/gccrs/pull/3865">PR3865</a></li>
  <li>Remove <code class="language-plaintext highlighter-rouge">-frust-name-resolution-2.0</code> usage in tests
<a href="https://github.com/rust-gcc/gccrs/pull/3864">PR3864</a></li>
  <li>gccrs: Implement compilation support for TuplePatternItems::RANGED
<a href="https://github.com/rust-gcc/gccrs/pull/3863">PR3863</a></li>
  <li>Add locus getters
<a href="https://github.com/rust-gcc/gccrs/pull/3861">PR3861</a></li>
  <li>gccrs: Implement type checking for ItemType::RANGED in TuplePattern
<a href="https://github.com/rust-gcc/gccrs/pull/3859">PR3859</a></li>
  <li>Add getter for outer attributions
<a href="https://github.com/rust-gcc/gccrs/pull/3858">PR3858</a></li>
  <li>Add getter for non const lifetime object
<a href="https://github.com/rust-gcc/gccrs/pull/3857">PR3857</a></li>
  <li>Update C++ version check in rust-lang.cc
<a href="https://github.com/rust-gcc/gccrs/pull/3856">PR3856</a></li>
  <li>Create <code class="language-plaintext highlighter-rouge">Rust::GGC::Ident</code>
<a href="https://github.com/rust-gcc/gccrs/pull/3855">PR3855</a></li>
  <li>Implement default HIR visitor class
<a href="https://github.com/rust-gcc/gccrs/pull/3854">PR3854</a></li>
  <li>gccrs: Fix bug with non compiled const decl
<a href="https://github.com/rust-gcc/gccrs/pull/3853">PR3853</a></li>
  <li>gccrs: check for invalid const calls during code-gen
<a href="https://github.com/rust-gcc/gccrs/pull/3852">PR3852</a></li>
  <li>Reenable macos CI
<a href="https://github.com/rust-gcc/gccrs/pull/3851">PR3851</a></li>
  <li>gccrs: Fix TupleStructPattern compilation throwing error
<a href="https://github.com/rust-gcc/gccrs/pull/3850">PR3850</a></li>
  <li>gccrs: Add unify rules for fnptr and closures
<a href="https://github.com/rust-gcc/gccrs/pull/3849">PR3849</a></li>
  <li>gccrs: Cleanup and refactor method resolution
<a href="https://github.com/rust-gcc/gccrs/pull/3848">PR3848</a></li>
  <li>gccrs: Refactor marker builtin trait assembly
<a href="https://github.com/rust-gcc/gccrs/pull/3847">PR3847</a></li>
  <li>gccrs: Fix bug with bad type bindings not looking at super traits
<a href="https://github.com/rust-gcc/gccrs/pull/3846">PR3846</a></li>
  <li>gccrs: Fix cyclical projection to placeholder
<a href="https://github.com/rust-gcc/gccrs/pull/3845">PR3845</a></li>
  <li>gccrs: Fix silly ordering bug in trait reference resolution
<a href="https://github.com/rust-gcc/gccrs/pull/3844">PR3844</a></li>
  <li>gccrs: Ensure we look at the bounds behind a reference
<a href="https://github.com/rust-gcc/gccrs/pull/3843">PR3843</a></li>
  <li>nr2.0: Fix resolution of constant items
<a href="https://github.com/rust-gcc/gccrs/pull/3841">PR3841</a></li>
  <li>nr2.0: Enable by default
<a href="https://github.com/rust-gcc/gccrs/pull/3840">PR3840</a></li>
  <li>nr2.0: Adjust resolution of external crates
<a href="https://github.com/rust-gcc/gccrs/pull/3839">PR3839</a></li>
  <li>gccrs: Add test case showing RPIT working to close issue
<a href="https://github.com/rust-gcc/gccrs/pull/3837">PR3837</a></li>
  <li>gccrs: Fix ICE when constant is missing and expression
<a href="https://github.com/rust-gcc/gccrs/pull/3834">PR3834</a></li>
  <li>gccrs: Fix issues around PartialEq Eq Ord Partial Ord
<a href="https://github.com/rust-gcc/gccrs/pull/3832">PR3832</a></li>
  <li>Fix execute testsuite
<a href="https://github.com/rust-gcc/gccrs/pull/3831">PR3831</a></li>
  <li>Adjust external crate lowering and type checking
<a href="https://github.com/rust-gcc/gccrs/pull/3830">PR3830</a></li>
  <li>nr2.0: Add more checks for alternate patterns
<a href="https://github.com/rust-gcc/gccrs/pull/3829">PR3829</a></li>
  <li>nr2.0: Update IdentifierPattern’s subpattern name resolution
<a href="https://github.com/rust-gcc/gccrs/pull/3828">PR3828</a></li>
  <li>gccrs: Improve HIR dumps for patterns
<a href="https://github.com/rust-gcc/gccrs/pull/3827">PR3827</a></li>
  <li>nr2.0: Adjust resolution of modules
<a href="https://github.com/rust-gcc/gccrs/pull/3826">PR3826</a></li>
  <li>gccrs: Fix bug in query type stopping PartialOrd
<a href="https://github.com/rust-gcc/gccrs/pull/3825">PR3825</a></li>
  <li>gccrs: Fix bad type canonicalization on ARRAY<sub>TYPES</sub>
<a href="https://github.com/rust-gcc/gccrs/pull/3824">PR3824</a></li>
  <li>nr2.0: Adjust lookup of associated items
<a href="https://github.com/rust-gcc/gccrs/pull/3823">PR3823</a></li>
  <li>gccrs: Implement compilation of IdentifierPattern’s subpattern
bindings <a href="https://github.com/rust-gcc/gccrs/pull/3822">PR3822</a></li>
  <li>nr2.0: Adjust alternate identifier handling
<a href="https://github.com/rust-gcc/gccrs/pull/3821">PR3821</a></li>
  <li>nr2.0: Improve handling of single segment paths
<a href="https://github.com/rust-gcc/gccrs/pull/3820">PR3820</a></li>
  <li>nr2.0: Fix closure parameter scoping
<a href="https://github.com/rust-gcc/gccrs/pull/3819">PR3819</a></li>
  <li>Add <code class="language-plaintext highlighter-rouge">derive(Ord)</code> and <code class="language-plaintext highlighter-rouge">derive(PartialOrd)</code>
<a href="https://github.com/rust-gcc/gccrs/pull/3818">PR3818</a></li>
  <li>nr2.0: Adjust <code class="language-plaintext highlighter-rouge">pub_restricted</code> tests
<a href="https://github.com/rust-gcc/gccrs/pull/3817">PR3817</a></li>
  <li>nr2.0: Improve <code class="language-plaintext highlighter-rouge">StructPatternFieldIdent</code> handling
<a href="https://github.com/rust-gcc/gccrs/pull/3816">PR3816</a></li>
  <li>Add new function <code class="language-plaintext highlighter-rouge">ClosureExpr::get_definition_expr</code>
<a href="https://github.com/rust-gcc/gccrs/pull/3815">PR3815</a></li>
  <li>gccrs: Add initial compilation support for IdentifierPattern’s
subpatterns <a href="https://github.com/rust-gcc/gccrs/pull/3814">PR3814</a></li>
  <li>fix: ICE when parsing unterminated raw byte strings
<a href="https://github.com/rust-gcc/gccrs/pull/3812">PR3812</a></li>
  <li>gccrs: Lower IdentifierPattern’s to<sub>bind</sub> to HIR
<a href="https://github.com/rust-gcc/gccrs/pull/3811">PR3811</a></li>
  <li>Make <code class="language-plaintext highlighter-rouge">ConstantItem</code> use <code class="language-plaintext highlighter-rouge">Identifier</code>
<a href="https://github.com/rust-gcc/gccrs/pull/3810">PR3810</a></li>
  <li>parser: fix ICE std::out<sub>ofrange</sub> with path attrs to
nonexisting path
<a href="https://github.com/rust-gcc/gccrs/pull/3804">PR3804</a></li>
  <li>nr2.0: Run a final <code class="language-plaintext highlighter-rouge">TopLevel</code> pass after desugaring
<a href="https://github.com/rust-gcc/gccrs/pull/3801">PR3801</a></li>
  <li>AST: Add <code class="language-plaintext highlighter-rouge">reconstruct_type()</code> method
<a href="https://github.com/rust-gcc/gccrs/pull/3799">PR3799</a></li>
  <li>nr2.0: Catch <code class="language-plaintext highlighter-rouge">Self</code> in impl block self types
<a href="https://github.com/rust-gcc/gccrs/pull/3798">PR3798</a></li>
  <li>Adjust CI to ignore non-rust warnings
<a href="https://github.com/rust-gcc/gccrs/pull/3796">PR3796</a></li>
  <li>nr2.0: Improve visibility path handling
<a href="https://github.com/rust-gcc/gccrs/pull/3785">PR3785</a></li>
  <li>nr2.0: Separate out canonical path handling
<a href="https://github.com/rust-gcc/gccrs/pull/3776">PR3776</a></li>
  <li>Synchronize development branch with GCC’s master branch
<a href="https://github.com/rust-gcc/gccrs/pull/3761">PR3761</a></li>
</ul>

<h3 id="contributors-this-month">Contributors this month</h3>

<ul>
  <li>
    <p><a href="https://github.com/Polygonalr">Zhi Heng</a> (new contributor!)</p>
  </li>
  <li>
    <p><a href="https://github.com/sakupan102">Ryutaro Okada</a> (new contributor!)</p>
  </li>
  <li>
    <p><a href="https://github.com/vishruth-thimmaiah">Vishruth Thimmaiah</a> (new
contributor!)</p>
  </li>
  <li>
    <p><a href="https://github.com/dkm">Marc Poulhiès</a></p>
  </li>
  <li>
    <p><a href="https://github.com/powerboat9">Owen Avery</a></p>
  </li>
  <li>
    <p><a href="https://github.com/CohenArthur">Arthur Cohen</a></p>
  </li>
  <li>
    <p><a href="https://github.com/P-E-P">Pierre-Emmanuel Patry</a></p>
  </li>
  <li>
    <p><a href="https://github.com/philberty">Philip Herron</a></p>
  </li>
</ul>

<h3 id="overall-task-status">Overall Task Status</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>471</td>
      <td>469</td>
      <td>-2</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>114</td>
      <td>112</td>
      <td>-2</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>1064</td>
      <td>1077</td>
      <td>+13</td>
    </tr>
  </tbody>
</table>

<h3 id="bugs">Bugs</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TODO</td>
      <td>207</td>
      <td>207</td>
      <td>-</td>
    </tr>
    <tr>
      <td>In Progress</td>
      <td>56</td>
      <td>54</td>
      <td>-2</td>
    </tr>
    <tr>
      <td>Completed</td>
      <td>521</td>
      <td>526</td>
      <td>+5</td>
    </tr>
  </tbody>
</table>

<h3 id="test-cases">Test Cases</h3>

<table>
  <thead>
    <tr>
      <th>TestCases</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Passing</td>
      <td>10631</td>
      <td>9949</td>
      <td>-682</td>
    </tr>
    <tr>
      <td>Failed</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
    <tr>
      <td>XFAIL</td>
      <td>73</td>
      <td>64</td>
      <td>-9</td>
    </tr>
    <tr>
      <td>XPASS</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
  </tbody>
</table>

<h3 id="milestones-progress">Milestones Progress</h3>

<table>
  <thead>
    <tr>
      <th>Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Explicit generics with impl Trait</td>
      <td>40%</td>
      <td>85%</td>
      <td>+45%</td>
      <td>28th Feb 2025</td>
      <td>-</td>
      <td>28th Mar 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final Inline assembly fixes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>try blocks</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>while-let loops</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Upcoming Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Unstable RfL features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>-</td>
      <td>1st Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Generic Associated Types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>RfL const generics</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>1st May 2025</td>
      <td>-</td>
      <td>15th Jun 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>frontend plugin hooks</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th May 2025</td>
      <td>-</td>
      <td>7th Jul 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Handling the testsuite issues</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>main shim</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>28th Jul 2025</td>
      <td>-</td>
      <td>15th Sep 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Final core attributes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Core nightly features</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Defered inference</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Fn traits fixes</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Recursive types</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Drop</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Pin, PinInit</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td> </td>
      <td>-</td>
      <td> </td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>offset<sub>of</sub>!() builtin macro</td>
      <td>0%</td>
      <td>0%</td>
      <td>-</td>
      <td>15th Mar 2025</td>
      <td>-</td>
      <td>15th Aug 2025</td>
      <td>GCC 16.1</td>
    </tr>
  </tbody>
</table>

<table>
  <thead>
    <tr>
      <th>Past Milestone</th>
      <th>Last Month</th>
      <th>This Month</th>
      <th>Delta</th>
      <th>Start Date</th>
      <th>Completion Date</th>
      <th>Target</th>
      <th>Target GCC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Data Structures 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th Nov 2020</td>
      <td>27th Jan 2021</td>
      <td>29th Jan 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 1 - Core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2021</td>
      <td>10th Feb 2021</td>
      <td>26th Feb 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 2 - Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>11th Feb 2021</td>
      <td>14th May 2021</td>
      <td>28th May 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Data Structures 3 - Traits</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th May 2021</td>
      <td>17th Sep 2021</td>
      <td>27th Aug 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Control Flow 2 - Pattern Matching</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>20th Sep 2021</td>
      <td>9th Dec 2021</td>
      <td>29th Nov 2021</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Macros and cfg expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2021</td>
      <td>31st Mar 2022</td>
      <td>28th Mar 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Imports and Visibility</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>29th Mar 2022</td>
      <td>13th Jul 2022</td>
      <td>27th May 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Const Generics</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>30th May 2022</td>
      <td>10th Oct 2022</td>
      <td>17th Oct 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Initial upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>10th Oct 2022</td>
      <td>13th Nov 2022</td>
      <td>13th Nov 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Upstream initial patchset</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Nov 2022</td>
      <td>13th Dec 2022</td>
      <td>19th Dec 2022</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Update GCC’s master branch</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2023</td>
      <td>21st Feb 2023</td>
      <td>3rd Mar 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Final set of upstream patches</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>16th Nov 2022</td>
      <td>1st May 2023</td>
      <td>30th Apr 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Borrow Checking 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>TBD</td>
      <td>8th Jan 2024</td>
      <td>15th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>Procedural Macros 1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>6th Aug 2023</td>
      <td>6th Aug 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 13.2 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>13th Apr 2023</td>
      <td>22nd Jul 2023</td>
      <td>15th Jul 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14 Stage 3</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Sep 2023</td>
      <td>20th Sep 2023</td>
      <td>1st Nov 2023</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.1 Release</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>2nd Jan 2024</td>
      <td>2nd Jun 2024</td>
      <td>15th Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>format<sub>args</sub>!() support</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Feb 2024</td>
      <td>-</td>
      <td>1st Apr 2024</td>
      <td>GCC 14.1</td>
    </tr>
    <tr>
      <td>GCC 14.2</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>15th Jun 2024</td>
      <td>GCC 14.2</td>
    </tr>
    <tr>
      <td>GCC 15.1</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jun 2024</td>
      <td>31st Jun 2024</td>
      <td>1st Jul 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Unhandled attributes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>15th Aug 2024</td>
      <td>15th Aug 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Inline assembly</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Rustc Testsuite Adaptor</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Borrow checker improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>26th Aug 2024</td>
      <td>15th Sep 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Deref and DerefMut improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Sep 2024</td>
      <td>25th Oct 2024</td>
      <td>28th Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Indexing fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Iterator fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Jul 2024</td>
      <td>25th Dec 2024</td>
      <td>15th Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Auto traits improvements</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Sep 2024</td>
      <td>20th Jan 2025</td>
      <td>21st Dec 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Lang items</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jul 2024</td>
      <td>10th Jan 2025</td>
      <td>21st Nov 2024</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>alloc parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>std parser issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>31st Jun 2024</td>
      <td>28th Jan 2025</td>
      <td>GCC 16.1</td>
    </tr>
    <tr>
      <td>Question mark operator</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>15th Dec 2024</td>
      <td>21st Feb 2025</td>
      <td>21st Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Name resolution 2.0 rework</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Macro expansion</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jun 2024</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Remaining typecheck issues</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>21st Oct 2024</td>
      <td>-</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-core</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Dec 2024</td>
      <td>24th Mar 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Codegen fixes</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Oct 2024</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>black<sub>box</sub> intrinsic</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Oct 2024</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>let-else</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>28th Jan 2025</td>
      <td>-</td>
      <td>28th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Specialization</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>1st Jan 2025</td>
      <td>1st Apr 2025</td>
      <td>1st Mar 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>cfg-rfl</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>7th Jan 2025</td>
      <td>19th Mar 2025</td>
      <td>15th Feb 2025</td>
      <td>GCC 15.1</td>
    </tr>
    <tr>
      <td>Downgrade to Rust 1.49</td>
      <td>100%</td>
      <td>100%</td>
      <td>-</td>
      <td>14th Mar 2025</td>
      <td>26th Mar 2025</td>
      <td>1st Apr 2025</td>
      <td>GCC 15.1</td>
    </tr>
  </tbody>
</table>

<h2 id="planned-activities">Planned Activities</h2>

<ul>
  <li>Start working on try blocks and while-let loops</li>
  <li>Finish name resolution and macro expansion issues</li>
</ul>

<h3 id="risks">Risks</h3>

<p>We must establish the list of GCC-common changes we need, as we will
have to send them upstream before the start of Stage 3 around November.
This is the only risk which could incur further problems and prevent
more gccrs features from landing in 16.1.</p>]]></content><author><name>Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen</name></author><category term="monthly-report" /><summary type="html"><![CDATA[Overview Thanks again to Open Source Security, inc and Embecosm for their ongoing support for this project. Project update The month of June saw a good number of contributions to the project, with 61 pull-requests merged - despite Pierre-Emmanuel and Arthur both being on vacation for two weeks each. One of the most important milestones this month was the merge of our name-resolution 2.0 algorithm, and the removal of the previous version. This merge marks the end of a year and a half of work aimed at better handling the complex import and export structure in `core`, while remaining as powerful as the existing solution. Another major breakthrough is the completion of our git process rework - thanks to the work of Marc Poulhies, Thomas Schwinge and Owen Avery, we have considerably improved our processes for updating our fork and upstreaming changes. Work on gerris has resumed, with more features being added to the bot. This should enable us to prepare branches automatically, test them on our CI, and have them ready for verification by one of our maintainers before sending the commits upstream to GCC. Similarly, gerris will soon be able to update our fork with the latest changes from upstream GCC and will do so regularly. We have also established further milestones for the next few months of work on gccrs, as we get closer and closer to experimenting with the kernel’s alloc crate. We have discovered more interesting nightly features being used by the crate, which we will implement in the coming months. try blocks try blocks are used throughout core, especially in the implementation of the various iterators such as try_fold: fn try_fold&lt;B, F, R&gt;(&amp;mut self, init: B, mut f: F) -&gt; R where Self: Sized, F: FnMut(B, Self::Item) -&gt; R, R: Try&lt;Ok = B&gt;, { let mut accum = init; while let Some(x) = self.next() { accum = f(accum, x)?; } try { accum } // HERE } try blocks create a scope in which it is possible to use the ? operator. They are syntactic sugar for the following construct: try { &lt;stmts&gt;; &lt;expr&gt; } // becomes { &lt;stmts&gt;; ::std::ops::Try::from_ok(&lt;expr&gt;) } Handling them in the majority of cases should hopefully be a simple desugar that can be implemented quite quickly. const-generic inference Const-generic inference allows the user to instruct the compiler to deduct the value of a const generic instead of spelling it out explicitly. This is used in the stdarch crate, which core depends on, for the simd_shuffle macro, which takes as argument an array of unknown but fixed size: macro_rules! simd_shuffle { ($x:expr, $y:expr, $idx:expr $(,)?) =&gt; { simd_shuffle( $x, $y, const { let v: [u32; _] = $idx; v }, ) }; } let d: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]); let e: uint16x4_t = simd_shuffle!(c, c, [4, 5, 6, 7]); Since the array’s size is known by the compiler, but not by the user writing the macro, we can rely on the compiler to infer the array’s size and call the proper intrinsic, while still keeping the macro definition and invocations simple. Further milestones Milestone Inline assembly try blocks while-let loops core attributes core nightly features defered inference Argument Position impl Trait Return Position impl Trait Fn traits Recursive types Drop Pin, PinInit offsetof!() In other news, our two GSoC students Zhi Heng and Ryutaro Okada are progressing nicely on their projects, with both students passing the upcoming midterm evaluation with flying colors. We are very satisfied with the speed at which they are working, as well as their comprehension of the task at hand. Ryutaro was able to reimplement one of our checks for assignments to read-only variables, and can now support generic functions, which was not allowed before. In the meantime, Zhi Heng has contributed multiple improvements to our backend regarding the compilation of complicated patterns such as tuple patterns and slice patterns. Finally, we are also in the process of merging fixes for the release of GCC 15.2. Community call We will have our next monthly community call on the 15th of July at 9am UTC. You can subscribe to our calendar to see when the next one will be held. The call is open to everyone, even if you would just like to sit-in and listen. You can also subscribe to our mailing-list or join our Zulip chat to be notified of upcoming events. Jitsi link Calendar ID: 7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com Google calendar link iCal link Call for contribution https://github.com/Rust-GCC/gccrs/issues/2500 https://github.com/Rust-GCC/gccrs/issues/2376 Completed Activities Change enum to enum class PR3878 Remove Late visitor override for StructStruct PR3873 Allow format_args to accept a raw string literal PR3872 Parse try expressions PR3870 Remove reinterpret_cast usages in DefaultASTVisitor PR3869 nr1.0: Remove rust/backend support PR3865 Remove -frust-name-resolution-2.0 usage in tests PR3864 gccrs: Implement compilation support for TuplePatternItems::RANGED PR3863 Add locus getters PR3861 gccrs: Implement type checking for ItemType::RANGED in TuplePattern PR3859 Add getter for outer attributions PR3858 Add getter for non const lifetime object PR3857 Update C++ version check in rust-lang.cc PR3856 Create Rust::GGC::Ident PR3855 Implement default HIR visitor class PR3854 gccrs: Fix bug with non compiled const decl PR3853 gccrs: check for invalid const calls during code-gen PR3852 Reenable macos CI PR3851 gccrs: Fix TupleStructPattern compilation throwing error PR3850 gccrs: Add unify rules for fnptr and closures PR3849 gccrs: Cleanup and refactor method resolution PR3848 gccrs: Refactor marker builtin trait assembly PR3847 gccrs: Fix bug with bad type bindings not looking at super traits PR3846 gccrs: Fix cyclical projection to placeholder PR3845 gccrs: Fix silly ordering bug in trait reference resolution PR3844 gccrs: Ensure we look at the bounds behind a reference PR3843 nr2.0: Fix resolution of constant items PR3841 nr2.0: Enable by default PR3840 nr2.0: Adjust resolution of external crates PR3839 gccrs: Add test case showing RPIT working to close issue PR3837 gccrs: Fix ICE when constant is missing and expression PR3834 gccrs: Fix issues around PartialEq Eq Ord Partial Ord PR3832 Fix execute testsuite PR3831 Adjust external crate lowering and type checking PR3830 nr2.0: Add more checks for alternate patterns PR3829 nr2.0: Update IdentifierPattern’s subpattern name resolution PR3828 gccrs: Improve HIR dumps for patterns PR3827 nr2.0: Adjust resolution of modules PR3826 gccrs: Fix bug in query type stopping PartialOrd PR3825 gccrs: Fix bad type canonicalization on ARRAYTYPES PR3824 nr2.0: Adjust lookup of associated items PR3823 gccrs: Implement compilation of IdentifierPattern’s subpattern bindings PR3822 nr2.0: Adjust alternate identifier handling PR3821 nr2.0: Improve handling of single segment paths PR3820 nr2.0: Fix closure parameter scoping PR3819 Add derive(Ord) and derive(PartialOrd) PR3818 nr2.0: Adjust pub_restricted tests PR3817 nr2.0: Improve StructPatternFieldIdent handling PR3816 Add new function ClosureExpr::get_definition_expr PR3815 gccrs: Add initial compilation support for IdentifierPattern’s subpatterns PR3814 fix: ICE when parsing unterminated raw byte strings PR3812 gccrs: Lower IdentifierPattern’s tobind to HIR PR3811 Make ConstantItem use Identifier PR3810 parser: fix ICE std::outofrange with path attrs to nonexisting path PR3804 nr2.0: Run a final TopLevel pass after desugaring PR3801 AST: Add reconstruct_type() method PR3799 nr2.0: Catch Self in impl block self types PR3798 Adjust CI to ignore non-rust warnings PR3796 nr2.0: Improve visibility path handling PR3785 nr2.0: Separate out canonical path handling PR3776 Synchronize development branch with GCC’s master branch PR3761 Contributors this month Zhi Heng (new contributor!) Ryutaro Okada (new contributor!) Vishruth Thimmaiah (new contributor!) Marc Poulhiès Owen Avery Arthur Cohen Pierre-Emmanuel Patry Philip Herron Overall Task Status Category Last Month This Month Delta TODO 471 469 -2 In Progress 114 112 -2 Completed 1064 1077 +13 Bugs Category Last Month This Month Delta TODO 207 207 - In Progress 56 54 -2 Completed 521 526 +5 Test Cases TestCases Last Month This Month Delta Passing 10631 9949 -682 Failed - - - XFAIL 73 64 -9 XPASS - - - Milestones Progress Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Explicit generics with impl Trait 40% 85% +45% 28th Feb 2025 - 28th Mar 2025 GCC 16.1 Final Inline assembly fixes 0% 0% -   -   GCC 16.1 try blocks 0% 0% -   -   GCC 16.1 while-let loops 0% 0% -   -   GCC 16.1 Upcoming Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Unstable RfL features 0% 0% - 7th Jan 2025 - 1st Aug 2025 GCC 16.1 Generic Associated Types 0% 0% - 15th Mar 2025 - 15th Jun 2025 GCC 16.1 RfL const generics 0% 0% - 1st May 2025 - 15th Jun 2025 GCC 16.1 frontend plugin hooks 0% 0% - 15th May 2025 - 7th Jul 2025 GCC 16.1 Handling the testsuite issues 0% 0% - 15th Sep 2024 - 15th Sep 2025 GCC 16.1 main shim 0% 0% - 28th Jul 2025 - 15th Sep 2025 GCC 16.1 Final core attributes 0% 0% -   -   GCC 16.1 Core nightly features 0% 0% -   -   GCC 16.1 Defered inference 0% 0% -   -   GCC 16.1 Fn traits fixes 0% 0% -   -   GCC 16.1 Recursive types 0% 0% -   -   GCC 16.1 Drop 0% 0% -   -   GCC 16.1 Pin, PinInit 0% 0% -   -   GCC 16.1 offsetof!() builtin macro 0% 0% - 15th Mar 2025 - 15th Aug 2025 GCC 16.1 Past Milestone Last Month This Month Delta Start Date Completion Date Target Target GCC Data Structures 1 - Core 100% 100% - 30th Nov 2020 27th Jan 2021 29th Jan 2021 GCC 14.1 Control Flow 1 - Core 100% 100% - 28th Jan 2021 10th Feb 2021 26th Feb 2021 GCC 14.1 Data Structures 2 - Generics 100% 100% - 11th Feb 2021 14th May 2021 28th May 2021 GCC 14.1 Data Structures 3 - Traits 100% 100% - 20th May 2021 17th Sep 2021 27th Aug 2021 GCC 14.1 Control Flow 2 - Pattern Matching 100% 100% - 20th Sep 2021 9th Dec 2021 29th Nov 2021 GCC 14.1 Macros and cfg expansion 100% 100% - 1st Dec 2021 31st Mar 2022 28th Mar 2022 GCC 14.1 Imports and Visibility 100% 100% - 29th Mar 2022 13th Jul 2022 27th May 2022 GCC 14.1 Const Generics 100% 100% - 30th May 2022 10th Oct 2022 17th Oct 2022 GCC 14.1 Initial upstream patches 100% 100% - 10th Oct 2022 13th Nov 2022 13th Nov 2022 GCC 14.1 Upstream initial patchset 100% 100% - 13th Nov 2022 13th Dec 2022 19th Dec 2022 GCC 14.1 Update GCC’s master branch 100% 100% - 1st Jan 2023 21st Feb 2023 3rd Mar 2023 GCC 14.1 Final set of upstream patches 100% 100% - 16th Nov 2022 1st May 2023 30th Apr 2023 GCC 14.1 Borrow Checking 1 100% 100% - TBD 8th Jan 2024 15th Aug 2023 GCC 14.1 Procedural Macros 1 100% 100% - 13th Apr 2023 6th Aug 2023 6th Aug 2023 GCC 14.1 GCC 13.2 Release 100% 100% - 13th Apr 2023 22nd Jul 2023 15th Jul 2023 GCC 14.1 GCC 14 Stage 3 100% 100% - 1st Sep 2023 20th Sep 2023 1st Nov 2023 GCC 14.1 GCC 14.1 Release 100% 100% - 2nd Jan 2024 2nd Jun 2024 15th Apr 2024 GCC 14.1 formatargs!() support 100% 100% - 15th Feb 2024 - 1st Apr 2024 GCC 14.1 GCC 14.2 100% 100% - 7th Jun 2024 15th Jun 2024 15th Jun 2024 GCC 14.2 GCC 15.1 100% 100% - 21st Jun 2024 31st Jun 2024 1st Jul 2024 GCC 15.1 Unhandled attributes 100% 100% - 1st Jul 2024 15th Aug 2024 15th Aug 2024 GCC 15.1 Inline assembly 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Rustc Testsuite Adaptor 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Borrow checker improvements 100% 100% - 1st Jun 2024 26th Aug 2024 15th Sep 2024 GCC 15.1 Deref and DerefMut improvements 100% 100% - 28th Sep 2024 25th Oct 2024 28th Dec 2024 GCC 15.1 Indexing fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Iterator fixes 100% 100% - 21st Jul 2024 25th Dec 2024 15th Nov 2024 GCC 15.1 Auto traits improvements 100% 100% - 15th Sep 2024 20th Jan 2025 21st Dec 2024 GCC 15.1 Lang items 100% 100% - 1st Jul 2024 10th Jan 2025 21st Nov 2024 GCC 15.1 alloc parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 15.1 std parser issues 100% 100% - 7th Jan 2025 31st Jun 2024 28th Jan 2025 GCC 16.1 Question mark operator 100% 100% - 15th Dec 2024 21st Feb 2025 21st Feb 2025 GCC 15.1 Name resolution 2.0 rework 100% 100% - 1st Jun 2024 - 1st Apr 2025 GCC 15.1 Macro expansion 100% 100% - 1st Jun 2024 - 1st Jan 2025 GCC 15.1 Remaining typecheck issues 100% 100% - 21st Oct 2024 - 1st Mar 2025 GCC 15.1 cfg-core 100% 100% - 1st Dec 2024 24th Mar 2025 1st Mar 2025 GCC 15.1 Codegen fixes 100% 100% - 7th Oct 2024 1st Apr 2025 1st Mar 2025 GCC 15.1 blackbox intrinsic 100% 100% - 28th Oct 2024 - 28th Jan 2025 GCC 15.1 let-else 100% 100% - 28th Jan 2025 - 28th Feb 2025 GCC 15.1 Specialization 100% 100% - 1st Jan 2025 1st Apr 2025 1st Mar 2025 GCC 15.1 cfg-rfl 100% 100% - 7th Jan 2025 19th Mar 2025 15th Feb 2025 GCC 15.1 Downgrade to Rust 1.49 100% 100% - 14th Mar 2025 26th Mar 2025 1st Apr 2025 GCC 15.1 Planned Activities Start working on try blocks and while-let loops Finish name resolution and macro expansion issues Risks We must establish the list of GCC-common changes we need, as we will have to send them upstream before the start of Stage 3 around November. This is the only risk which could incur further problems and prevent more gccrs features from landing in 16.1.]]></summary></entry></feed>