|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "May 2025 Monthly report" |
| 4 | +author: Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen |
| 5 | +tags: |
| 6 | + - monthly-report |
| 7 | +--- |
| 8 | + |
| 9 | +## Overview |
| 10 | + |
| 11 | +Thanks again to [Open Source Security, inc](https://opensrcsec.com/) and |
| 12 | +[Embecosm](https://www.embecosm.com/) for their ongoing support for this |
| 13 | +project. |
| 14 | + |
| 15 | +### Project update |
| 16 | + |
| 17 | +The past month of development was mostly focused on community outreach, |
| 18 | +with a talk from Pierre-Emmanuel and Arthur at RustWeek in Utrecht, |
| 19 | +available |
| 20 | +[here](https://www.youtube.com/live/3clGDj1QR6A?si=hMnbr2QOveW1EIDa&t=18393). |
| 21 | +Here, we met with Miguel Ojeda from the Rust-for-Linux project, who |
| 22 | +informed us that the kernel no longer relies on the `alloc` standard |
| 23 | +crate for its function. This makes our job easier, as we are now tasked |
| 24 | +with compiling `core` and the kernel's implementation of `alloc`, rather |
| 25 | +than having to catch up with the standard library's `alloc` crate. |
| 26 | + |
| 27 | +In practice, this means that `gccrs` should be useful for Rust-for-Linux |
| 28 | +in a shorter span of time than originally planned, and we will start |
| 29 | +integrating the kernel's source code to our testing infrastructure in |
| 30 | +our efforts to target those crates. We spent some time last month |
| 31 | +establishing these milestones, which will be worked on as part of a |
| 32 | +further 6 months of support from [Open Source Security, |
| 33 | +inc](https://opensrcsec.com/), until the end of Stage 1 for GCC 16.1. |
| 34 | + |
| 35 | +Our next efforts will focus on finishing our name resolution pass for |
| 36 | +`core`, and fixing the remaining macro expansion bugs. As part of Google |
| 37 | +Summer of Code, we will work on improving our pattern matching backend |
| 38 | +which will allow us to covers all of the patterns used in `core`. Once |
| 39 | +that work is complete, we will spend time exploring the `Pin` semantics |
| 40 | +and making sure `gccrs` handles them correctly, as this data structure |
| 41 | +is used everywhere in the Linux kernel. This will then allow us to start |
| 42 | +testing the compiler on the kernel crates, hopefully by the end of the |
| 43 | +summer. |
| 44 | + |
| 45 | +Work also continued on the name resolution rewrite, which is now |
| 46 | +frustratingly close to replacing our previous implementation. We are |
| 47 | +resuming work on all areas of the compiler in June. The project received |
| 48 | +contributions from the usual suspects, with around 25 pull requests from |
| 49 | +external contributors this month. We are also starting work with our two |
| 50 | +GSoC students, Zhi Heng and Ryutaro Okada. They will be working on |
| 51 | +improving our pattern matching backend and on reimplementing certain |
| 52 | +Rust lints within our front-end rather than by depending on the GCC |
| 53 | +common compiler framework. |
| 54 | + |
| 55 | +### Community call |
| 56 | + |
| 57 | +We will have our next monthly community call on the 9th of June at 9am |
| 58 | +UTC. You can subscribe to our calendar to see when the next one will be |
| 59 | +held. The call is open to everyone, even if you would just like to |
| 60 | +sit-in and listen. You can also subscribe to our |
| 61 | +[mailing-list](https://gcc.gnu.org/mailman/listinfo/gcc-rust) or join |
| 62 | +our [Zulip chat](https://gcc-rust.zulipchat.com) to be notified of |
| 63 | +upcoming events. |
| 64 | + |
| 65 | +- [Jitsi link](https://meet.jit.si/gccrs-community-call-june) |
| 66 | +- Calendar ID: |
| 67 | + 7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com |
| 68 | +- [Google calendar |
| 69 | + link](https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com) |
| 70 | +- [iCal |
| 71 | + link](https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics) |
| 72 | + |
| 73 | +## Call for contribution |
| 74 | + |
| 75 | +- <https://github.com/Rust-GCC/gccrs/issues/2500> |
| 76 | + |
| 77 | +- <https://github.com/Rust-GCC/gccrs/issues/2376> |
| 78 | + |
| 79 | +## Completed Activities |
| 80 | + |
| 81 | +- gccrs: Always emit the error highest in the type hierarchy |
| 82 | + [PR3809](https://github.com/rust-gcc/pull/3809) |
| 83 | +- Adjust included headers in \`rust-lang.cc\` |
| 84 | + [PR3808](https://github.com/rust-gcc/pull/3808) |
| 85 | +- gccrs: Initial support for Return Position Impl Trait |
| 86 | + [PR3807](https://github.com/rust-gcc/pull/3807) |
| 87 | +- gccrs: refactor default infer vars to be its own function |
| 88 | + [PR3806](https://github.com/rust-gcc/pull/3806) |
| 89 | +- gccrs: Remove unneeded clones untill we have an arena allocator for |
| 90 | + these temps [PR3805](https://github.com/rust-gcc/pull/3805) |
| 91 | +- nr2.0: Fix some paths in test files |
| 92 | + [PR3803](https://github.com/rust-gcc/pull/3803) |
| 93 | +- nr2.0: Fix \`IfLet\` pattern handling |
| 94 | + [PR3802](https://github.com/rust-gcc/pull/3802) |
| 95 | +- nr2.0: Fix test \`builtin<sub>abort</sub>.rs\` |
| 96 | + [PR3800](https://github.com/rust-gcc/pull/3800) |
| 97 | +- Remove rvalue reference binding |
| 98 | + [PR3795](https://github.com/rust-gcc/pull/3795) |
| 99 | +- Remove unused file [PR3794](https://github.com/rust-gcc/pull/3794) |
| 100 | +- gccrs: Fix NR2 ICE in visit<sub>attributes</sub> |
| 101 | + [PR3793](https://github.com/rust-gcc/pull/3793) |
| 102 | +- gccrs: We cant clone types as it will dup the node-id |
| 103 | + [PR3792](https://github.com/rust-gcc/pull/3792) |
| 104 | +- Fix \`Attr\` metavariable binding |
| 105 | + [PR3790](https://github.com/rust-gcc/pull/3790) |
| 106 | +- nr2.0: Fix borrow checking |
| 107 | + [PR3789](https://github.com/rust-gcc/pull/3789) |
| 108 | +- Fix test \`same<sub>fieldname</sub>.rs\` |
| 109 | + [PR3788](https://github.com/rust-gcc/pull/3788) |
| 110 | +- Adapt attribute lang hook and do some cleanup |
| 111 | + [PR3786](https://github.com/rust-gcc/pull/3786) |
| 112 | +- Small improvements to \`DefaultASTVisitor\` and nr2.0 |
| 113 | + [PR3784](https://github.com/rust-gcc/pull/3784) |
| 114 | +- Fix ICE segfault on empty static loops |
| 115 | + [PR3781](https://github.com/rust-gcc/pull/3781) |
| 116 | +- gccrs: Prevent passing generic arguments to impl traits in argument |
| 117 | + position [PR3780](https://github.com/rust-gcc/pull/3780) |
| 118 | +- ast: collect InlineAsm node dump |
| 119 | + [PR3779](https://github.com/rust-gcc/pull/3779) |
| 120 | +- gccrs: desugar APIT impl traits |
| 121 | + [PR3778](https://github.com/rust-gcc/pull/3778) |
| 122 | +- gccrs: Emit error diagnostic for bad impl type usage |
| 123 | + [PR3777](https://github.com/rust-gcc/pull/3777) |
| 124 | +- nr2.0: Adjust enum item visitors |
| 125 | + [PR3775](https://github.com/rust-gcc/pull/3775) |
| 126 | +- Improve canonical path handling for impl items |
| 127 | + [PR3774](https://github.com/rust-gcc/pull/3774) |
| 128 | +- Improve struct pattern compilation |
| 129 | + [PR3773](https://github.com/rust-gcc/pull/3773) |
| 130 | +- nr2.0: Adjust resolution of impl items |
| 131 | + [PR3768](https://github.com/rust-gcc/pull/3768) |
| 132 | +- Handle const blocks [PR3738](https://github.com/rust-gcc/pull/3738) |
| 133 | + |
| 134 | +### Contributors this month |
| 135 | + |
| 136 | +- [Tom Schollenberger](https://github.com/tommyscholly) (new |
| 137 | + contributor!) |
| 138 | +- [Marc Poulhiès](https://github.com/dkm) |
| 139 | +- [Owen Avery](https://github.com/powerboat9) |
| 140 | +- [Arthur Cohen](https://github.com/CohenArthur) |
| 141 | +- [Pierre-Emmanuel Patry](https://github.com/P-E-P) |
| 142 | +- [Philip Herron](https://github.com/philberty) |
| 143 | +- [Gyanendra Banjare](https://github.com/0xn4utilus) |
| 144 | + |
| 145 | +### Overall Task Status |
| 146 | + |
| 147 | +| Category | Last Month | This Month | Delta | |
| 148 | +|-------------|------------|------------|-------| |
| 149 | +| TODO | 477 | 471 | -6 | |
| 150 | +| In Progress | 118 | 114 | -4 | |
| 151 | +| Completed | 1056 | 1064 | +8 | |
| 152 | + |
| 153 | +### Bugs |
| 154 | + |
| 155 | +| Category | Last Month | This Month | Delta | |
| 156 | +|-------------|------------|------------|-------| |
| 157 | +| TODO | 209 | 207 | -2 | |
| 158 | +| In Progress | 56 | 56 | \- | |
| 159 | +| Completed | 519 | 521 | +2 | |
| 160 | + |
| 161 | +### Test Cases |
| 162 | + |
| 163 | +| TestCases | Last Month | This Month | Delta | |
| 164 | +|-----------|------------|------------|-------| |
| 165 | +| Passing | 10392 | 10631 | +239 | |
| 166 | +| Failed | \- | \- | \- | |
| 167 | +| XFAIL | 73 | 73 | \- | |
| 168 | +| XPASS | \- | \- | \- | |
| 169 | + |
| 170 | +### Milestones Progress |
| 171 | + |
| 172 | +| Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC | |
| 173 | +|-----------------------------------|------------|------------|-------|---------------|-----------------|---------------|------------| |
| 174 | +| Name resolution 2.0 rework | 100% | 100% | \- | 1st Jun 2024 | \- | 1st Apr 2025 | GCC 15.1 | |
| 175 | +| Macro expansion | 100% | 100% | \- | 1st Jun 2024 | \- | 1st Jan 2025 | GCC 15.1 | |
| 176 | +| Remaining typecheck issues | 100% | 100% | \- | 21st Oct 2024 | \- | 1st Mar 2025 | GCC 15.1 | |
| 177 | +| cfg-core | 100% | 100% | \- | 1st Dec 2024 | 24th Mar 2025 | 1st Mar 2025 | GCC 15.1 | |
| 178 | +| Codegen fixes | 100% | 100% | \- | 7th Oct 2024 | 1st Apr 2025 | 1st Mar 2025 | GCC 15.1 | |
| 179 | +| black<sub>box</sub> intrinsic | 100% | 100% | \- | 28th Oct 2024 | \- | 28th Jan 2025 | GCC 15.1 | |
| 180 | +| let-else | 100% | 100% | \- | 28th Jan 2025 | \- | 28th Feb 2025 | GCC 15.1 | |
| 181 | +| Specialization | 100% | 100% | \- | 1st Jan 2025 | 1st Apr 2025 | 1st Mar 2025 | GCC 15.1 | |
| 182 | +| cfg-rfl | 100% | 100% | \- | 7th Jan 2025 | 19th Mar 2025 | 15th Feb 2025 | GCC 15.1 | |
| 183 | +| Downgrade to Rust 1.49 | 100% | 100% | \- | 14th Mar 2025 | 26th Mar 2025 | 1st Apr 2025 | GCC 15.1 | |
| 184 | +| Explicit generics with impl Trait | 40% | 55% | +15% | 28th Feb 2025 | \- | 28th Mar 2025 | GCC 15.1 | |
| 185 | + |
| 186 | +| Upcoming Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC | |
| 187 | +|--------------------------------------|------------|------------|-------|---------------|-----------------|---------------|------------| |
| 188 | +| Unstable RfL features | 0% | 0% | \- | 7th Jan 2025 | \- | 1st Aug 2025 | GCC 16.1 | |
| 189 | +| offset<sub>of</sub>!() builtin macro | 0% | 0% | \- | 15th Mar 2025 | \- | 15th Aug 2025 | GCC 16.1 | |
| 190 | +| Generic Associated Types | 0% | 0% | \- | 15th Mar 2025 | \- | 15th Jun 2025 | GCC 16.1 | |
| 191 | +| RfL const generics | 0% | 0% | \- | 1st May 2025 | \- | 15th Jun 2025 | GCC 16.1 | |
| 192 | +| frontend plugin hooks | 0% | 0% | \- | 15th May 2025 | \- | 7th Jul 2025 | GCC 16.1 | |
| 193 | +| Handling the testsuite issues | 0% | 0% | \- | 15th Sep 2024 | \- | 15th Sep 2025 | GCC 16.1 | |
| 194 | +| main shim | 0% | 0% | \- | 28th Jul 2025 | \- | 15th Sep 2025 | GCC 16.1 | |
| 195 | + |
| 196 | +| Past Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC | |
| 197 | +|-----------------------------------|------------|------------|-------|---------------|-----------------|---------------|------------| |
| 198 | +| Data Structures 1 - Core | 100% | 100% | \- | 30th Nov 2020 | 27th Jan 2021 | 29th Jan 2021 | GCC 14.1 | |
| 199 | +| Control Flow 1 - Core | 100% | 100% | \- | 28th Jan 2021 | 10th Feb 2021 | 26th Feb 2021 | GCC 14.1 | |
| 200 | +| Data Structures 2 - Generics | 100% | 100% | \- | 11th Feb 2021 | 14th May 2021 | 28th May 2021 | GCC 14.1 | |
| 201 | +| Data Structures 3 - Traits | 100% | 100% | \- | 20th May 2021 | 17th Sep 2021 | 27th Aug 2021 | GCC 14.1 | |
| 202 | +| Control Flow 2 - Pattern Matching | 100% | 100% | \- | 20th Sep 2021 | 9th Dec 2021 | 29th Nov 2021 | GCC 14.1 | |
| 203 | +| Macros and cfg expansion | 100% | 100% | \- | 1st Dec 2021 | 31st Mar 2022 | 28th Mar 2022 | GCC 14.1 | |
| 204 | +| Imports and Visibility | 100% | 100% | \- | 29th Mar 2022 | 13th Jul 2022 | 27th May 2022 | GCC 14.1 | |
| 205 | +| Const Generics | 100% | 100% | \- | 30th May 2022 | 10th Oct 2022 | 17th Oct 2022 | GCC 14.1 | |
| 206 | +| Initial upstream patches | 100% | 100% | \- | 10th Oct 2022 | 13th Nov 2022 | 13th Nov 2022 | GCC 14.1 | |
| 207 | +| Upstream initial patchset | 100% | 100% | \- | 13th Nov 2022 | 13th Dec 2022 | 19th Dec 2022 | GCC 14.1 | |
| 208 | +| Update GCC's master branch | 100% | 100% | \- | 1st Jan 2023 | 21st Feb 2023 | 3rd Mar 2023 | GCC 14.1 | |
| 209 | +| Final set of upstream patches | 100% | 100% | \- | 16th Nov 2022 | 1st May 2023 | 30th Apr 2023 | GCC 14.1 | |
| 210 | +| Borrow Checking 1 | 100% | 100% | \- | TBD | 8th Jan 2024 | 15th Aug 2023 | GCC 14.1 | |
| 211 | +| Procedural Macros 1 | 100% | 100% | \- | 13th Apr 2023 | 6th Aug 2023 | 6th Aug 2023 | GCC 14.1 | |
| 212 | +| GCC 13.2 Release | 100% | 100% | \- | 13th Apr 2023 | 22nd Jul 2023 | 15th Jul 2023 | GCC 14.1 | |
| 213 | +| GCC 14 Stage 3 | 100% | 100% | \- | 1st Sep 2023 | 20th Sep 2023 | 1st Nov 2023 | GCC 14.1 | |
| 214 | +| GCC 14.1 Release | 100% | 100% | \- | 2nd Jan 2024 | 2nd Jun 2024 | 15th Apr 2024 | GCC 14.1 | |
| 215 | +| format<sub>args</sub>!() support | 100% | 100% | \- | 15th Feb 2024 | \- | 1st Apr 2024 | GCC 14.1 | |
| 216 | +| GCC 14.2 | 100% | 100% | \- | 7th Jun 2024 | 15th Jun 2024 | 15th Jun 2024 | GCC 14.2 | |
| 217 | +| GCC 15.1 | 100% | 100% | \- | 21st Jun 2024 | 31st Jun 2024 | 1st Jul 2024 | GCC 15.1 | |
| 218 | +| Unhandled attributes | 100% | 100% | \- | 1st Jul 2024 | 15th Aug 2024 | 15th Aug 2024 | GCC 15.1 | |
| 219 | +| Inline assembly | 100% | 100% | \- | 1st Jun 2024 | 26th Aug 2024 | 15th Sep 2024 | GCC 15.1 | |
| 220 | +| Rustc Testsuite Adaptor | 100% | 100% | \- | 1st Jun 2024 | 26th Aug 2024 | 15th Sep 2024 | GCC 15.1 | |
| 221 | +| Borrow checker improvements | 100% | 100% | \- | 1st Jun 2024 | 26th Aug 2024 | 15th Sep 2024 | GCC 15.1 | |
| 222 | +| Deref and DerefMut improvements | 100% | 100% | \- | 28th Sep 2024 | 25th Oct 2024 | 28th Dec 2024 | GCC 15.1 | |
| 223 | +| Indexing fixes | 100% | 100% | \- | 21st Jul 2024 | 25th Dec 2024 | 15th Nov 2024 | GCC 15.1 | |
| 224 | +| Iterator fixes | 100% | 100% | \- | 21st Jul 2024 | 25th Dec 2024 | 15th Nov 2024 | GCC 15.1 | |
| 225 | +| Auto traits improvements | 100% | 100% | \- | 15th Sep 2024 | 20th Jan 2025 | 21st Dec 2024 | GCC 15.1 | |
| 226 | +| Lang items | 100% | 100% | \- | 1st Jul 2024 | 10th Jan 2025 | 21st Nov 2024 | GCC 15.1 | |
| 227 | +| alloc parser issues | 100% | 100% | \- | 7th Jan 2025 | 31st Jun 2024 | 28th Jan 2025 | GCC 15.1 | |
| 228 | +| std parser issues | 100% | 100% | \- | 7th Jan 2025 | 31st Jun 2024 | 28th Jan 2025 | GCC 16.1 | |
| 229 | +| Question mark operator | 100% | 100% | \- | 15th Dec 2024 | 21st Feb 2025 | 21st Feb 2025 | GCC 15.1 | |
| 230 | + |
| 231 | +## Planned Activities |
| 232 | + |
| 233 | +- Merge fixes in 15.2 |
| 234 | +- Continue working towards getting more features in 15.2 |
| 235 | + |
| 236 | +### Risks |
| 237 | + |
| 238 | +We must establish the list of GCC-common changes we need, as we will |
| 239 | +have to send them upstream before the start of Stage 3 around November. |
| 240 | +This is the only risk which could incur further problems and prevent |
| 241 | +more gccrs features from landing in 16.1. |
0 commit comments