|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "September 2025 Monthly report" |
| 4 | +author: Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen |
| 5 | +tags: |
| 6 | + - monthly-report |
| 7 | +--- |
| 8 | + |
| 9 | + |
| 10 | +## Overview |
| 11 | + |
| 12 | +Thanks again to [Open Source Security, inc](https://opensrcsec.com/) and |
| 13 | +[Embecosm](https://www.embecosm.com/) for their ongoing support for this |
| 14 | +project. |
| 15 | + |
| 16 | +### Project update |
| 17 | + |
| 18 | +Most of the time this month was dedicated to preparing and attending |
| 19 | +three conferences: Oxidize in Berlin, Kangrejos in Oviedo and GNU |
| 20 | +Cauldron in Porto. Pierre-Emmanuel and Arthur also started working on |
| 21 | +another project for Embecosm, thus reducing the time spent on `gccrs` |
| 22 | +this month. |
| 23 | + |
| 24 | +Oxidize was a nice experience and a good way to meet with some people |
| 25 | +using Rust in the embedded industry. We were able to present the project |
| 26 | +to many people who had not heard of it, and show the advantages of using |
| 27 | +the GCC static analyzers on unsafe Rust code. |
| 28 | + |
| 29 | +Kangrejos was a great way for Pierre-Emmanuel to meet with a lot of |
| 30 | +folks working on the Linux kernel. A lot of them expressed interest in |
| 31 | +our progress, and a few mentioned their personal requirement for |
| 32 | +sticking with a GCC toolchain for compiling the kernel. |
| 33 | + |
| 34 | +In Porto for Cauldron, a lot of GNU folks were interested in the |
| 35 | +frontend's experimental status and the projects' roadmap. There were |
| 36 | +comments about removing the dependency on `cargo` and `rustc`, which we |
| 37 | +are currently working towards with our goal of getting the standard |
| 38 | +library to compile under `gccrs`. |
| 39 | + |
| 40 | +On that point, the entirety of `core` was added as a testcase to our |
| 41 | +testsuite - we are slowly but surely getting it to go through more and |
| 42 | +more passes of our pipeline. There is currently one bug left for our |
| 43 | +entire pipeline to pass, which concerns the resolution of const items |
| 44 | +associated with built-in types, such as `i8::MAX`. |
| 45 | + |
| 46 | +After communicating with the GCC release managers, we have also worked |
| 47 | +on implementing a new CI process whose goal is to send emails to the GCC |
| 48 | +mailing list for each commit merged in our development repository. This |
| 49 | +will allow GCC developers to review patches as they are merged upstream, |
| 50 | +instead of seeing them in batches every week when we upstream them. |
| 51 | + |
| 52 | +### Community call |
| 53 | + |
| 54 | +We will have our next monthly community call on the 15th of October at |
| 55 | +9am UTC. You can subscribe to our calendar to see when the next one will |
| 56 | +be held. The call is open to everyone, even if you would just like to |
| 57 | +sit-in and listen. You can also subscribe to our |
| 58 | +[mailing-list](https://gcc.gnu.org/mailman/listinfo/gcc-rust) or join |
| 59 | +our [Zulip chat](https://gcc-rust.zulipchat.com) to be notified of |
| 60 | +upcoming events. |
| 61 | + |
| 62 | +- [Jitsi link](https://meet.jit.si/gccrs-community-call-october) |
| 63 | +- Calendar ID: |
| 64 | + 7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com |
| 65 | +- [Google calendar |
| 66 | + link](https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com) |
| 67 | +- [iCal |
| 68 | + link](https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics) |
| 69 | + |
| 70 | +## Call for contribution |
| 71 | + |
| 72 | +- <https://github.com/Rust-GCC/gccrs/issues/2500> |
| 73 | + |
| 74 | +- <https://github.com/Rust-GCC/gccrs/issues/2376> |
| 75 | + |
| 76 | +## Completed Activities |
| 77 | + |
| 78 | +- ci: yet another fix for the conditionnal steps |
| 79 | + [PR4197](https://github.com/rust-gcc/gccrs/pull/4197) |
| 80 | +- ci: fix step condition |
| 81 | + [PR4196](https://github.com/rust-gcc/gccrs/pull/4196) |
| 82 | +- Add doc attribute checking on traits |
| 83 | + [PR4195](https://github.com/rust-gcc/gccrs/pull/4195) |
| 84 | +- Fix malformed path segfault in attributes |
| 85 | + [PR4194](https://github.com/rust-gcc/gccrs/pull/4194) |
| 86 | +- ci: fix early exit |
| 87 | + [PR4193](https://github.com/rust-gcc/gccrs/pull/4193) |
| 88 | +- Add support for lowering rest patterns present in struct patterns to |
| 89 | + HIR. [PR4192](https://github.com/rust-gcc/gccrs/pull/4192) |
| 90 | +- ci: handle empty commit list |
| 91 | + [PR4191](https://github.com/rust-gcc/gccrs/pull/4191) |
| 92 | +- ci: adjust again the workflow for sending emails |
| 93 | + [PR4190](https://github.com/rust-gcc/gccrs/pull/4190) |
| 94 | +- ci: don't do cover letter, don't group by PR |
| 95 | + [PR4189](https://github.com/rust-gcc/gccrs/pull/4189) |
| 96 | +- ci: new workflow for sending emails after merging a PR |
| 97 | + [PR4184](https://github.com/rust-gcc/gccrs/pull/4184) |
| 98 | +- gccrs: Fix ICE where we expect a num enum variant |
| 99 | + [PR4183](https://github.com/rust-gcc/gccrs/pull/4183) |
| 100 | +- gccrs: Add error diag for self params on plain functions |
| 101 | + [PR4182](https://github.com/rust-gcc/gccrs/pull/4182) |
| 102 | +- gccrs: Fix ICE on copied array expressions |
| 103 | + [PR4181](https://github.com/rust-gcc/gccrs/pull/4181) |
| 104 | +- gccrs: Remove old hack from resolve operator overload |
| 105 | + [PR4180](https://github.com/rust-gcc/gccrs/pull/4180) |
| 106 | +- gccrs: fnptr types can hold onto generic params so it needs to |
| 107 | + handle substs [PR4179](https://github.com/rust-gcc/gccrs/pull/4179) |
| 108 | +- Metavar segfault |
| 109 | + [PR4178](https://github.com/rust-gcc/gccrs/pull/4178) |
| 110 | +- gccrs: Fix ICE for invalid const capacity expression handling |
| 111 | + [PR4177](https://github.com/rust-gcc/gccrs/pull/4177) |
| 112 | +- Test \`libcore\` |
| 113 | + [PR4176](https://github.com/rust-gcc/gccrs/pull/4176) |
| 114 | +- Import \`stdarch 1.49.0\` |
| 115 | + [PR4175](https://github.com/rust-gcc/gccrs/pull/4175) |
| 116 | +- Improve \`FFIOpt\` |
| 117 | + [PR4174](https://github.com/rust-gcc/gccrs/pull/4174) |
| 118 | +- gccrs: Fix ICE handling division by zero in const eval |
| 119 | + [PR4172](https://github.com/rust-gcc/gccrs/pull/4172) |
| 120 | +- Remove \`AST::TraitItemConst\` |
| 121 | + [PR4170](https://github.com/rust-gcc/gccrs/pull/4170) |
| 122 | +- Protect from errors in alternate pattern parsing |
| 123 | + [PR4169](https://github.com/rust-gcc/gccrs/pull/4169) |
| 124 | +- gccrs: Fix ICE with invalid const expression |
| 125 | + [PR4150](https://github.com/rust-gcc/gccrs/pull/4150) |
| 126 | +- tests: added extra parens compile test |
| 127 | + [PR4137](https://github.com/rust-gcc/gccrs/pull/4137) |
| 128 | +- Sync with upstream (2025-09-08): |
| 129 | + 4eb12ddd32d53ef55c2bd9bb03db057f096fff8f |
| 130 | + [PR4136](https://github.com/rust-gcc/gccrs/pull/4136) |
| 131 | +- Implement \`TokenCollector::visit(AST::FormatArgs&)\` |
| 132 | + [PR4135](https://github.com/rust-gcc/gccrs/pull/4135) |
| 133 | +- gccrs: track abi and unsafety on fnptrs for proper type checking |
| 134 | + [PR4132](https://github.com/rust-gcc/gccrs/pull/4132) |
| 135 | +- gccrs: Revert "nr1.0: Remove support in expansion phase" |
| 136 | + [PR4130](https://github.com/rust-gcc/gccrs/pull/4130) |
| 137 | +- gccrs: Revert "gccrs: Remove the template parameter |
| 138 | + [PR4129](https://github.com/rust-gcc/gccrs/pull/4129) |
| 139 | +- gccrs: get rid of more clones in unify path |
| 140 | + [PR4128](https://github.com/rust-gcc/gccrs/pull/4128) |
| 141 | +- gccrs: remove docker github workflow |
| 142 | + [PR4127](https://github.com/rust-gcc/gccrs/pull/4127) |
| 143 | +- gccrs: Remove the template parameter so clang format stops barfing |
| 144 | + this [PR4126](https://github.com/rust-gcc/gccrs/pull/4126) |
| 145 | +- Add test to confirm Rust-GCC/gccrs#3922 fix |
| 146 | + [PR4125](https://github.com/rust-gcc/gccrs/pull/4125) |
| 147 | +- Add test to confirm Rust-GCC/gccrs#3924 fix |
| 148 | + [PR4124](https://github.com/rust-gcc/gccrs/pull/4124) |
| 149 | +- nr1.0: Remove \`EarlyNameResolver\` |
| 150 | + [PR4123](https://github.com/rust-gcc/gccrs/pull/4123) |
| 151 | +- ci: Bump commit to merge in arm64 ci |
| 152 | + [PR4121](https://github.com/rust-gcc/gccrs/pull/4121) |
| 153 | +- Unify path-to-type handling in \`Late\` resolver |
| 154 | + [PR4113](https://github.com/rust-gcc/gccrs/pull/4113) |
| 155 | +- nr1.0: Remove chunks of resolution phase |
| 156 | + [PR4110](https://github.com/rust-gcc/gccrs/pull/4110) |
| 157 | +- Create subdirectory \`checks/errors/feature\` |
| 158 | + [PR4107](https://github.com/rust-gcc/gccrs/pull/4107) |
| 159 | +- Implement compilation support for rest patterns in tuple struct |
| 160 | + patterns [PR4102](https://github.com/rust-gcc/gccrs/pull/4102) |
| 161 | +- Improve ExpandVisitor's completeness |
| 162 | + [PR4099](https://github.com/rust-gcc/gccrs/pull/4099) |
| 163 | +- Vendor \`libcore 1.49\` |
| 164 | + [PR4060](https://github.com/rust-gcc/gccrs/pull/4060) |
| 165 | +- Handle \`link<sub>name</sub>\` attribute |
| 166 | + [PR4031](https://github.com/rust-gcc/gccrs/pull/4031) |
| 167 | + |
| 168 | +### Contributors this month |
| 169 | + |
| 170 | +- [elle](https://github.com/0xllx0) (new contributor!) |
| 171 | +- [Magnus](https://github.com/Magnus-Mage) (new contributor!) |
| 172 | +- [Zhi Heng](https://github.com/Polygonalr) |
| 173 | +- [Marc Poulhiès](https://github.com/dkm) |
| 174 | +- [Owen Avery](https://github.com/powerboat9) |
| 175 | +- [Pierre-Emmanuel Patry](https://github.com/P-E-P) |
| 176 | +- [Philip Herron](https://github.com/philberty) |
| 177 | +- [Arthur Cohen](https://github.com/CohenArthur) |
| 178 | + |
| 179 | +### Overall Task Status |
| 180 | + |
| 181 | +| Category | Last Month | This Month | Delta | |
| 182 | +|-------------|------------|------------|-------| |
| 183 | +| TODO | 396 | 406 | +10 | |
| 184 | +| In Progress | 110 | 115 | +5 | |
| 185 | +| Completed | 1135 | 1154 | +19 | |
| 186 | + |
| 187 | +### Bugs |
| 188 | + |
| 189 | +| Category | Last Month | This Month | Delta | |
| 190 | +|-------------|------------|------------|-------| |
| 191 | +| TODO | 198 | 207 | +9 | |
| 192 | +| In Progress | 49 | 55 | +6 | |
| 193 | +| Completed | 558 | 572 | +14 | |
| 194 | + |
| 195 | +### Test Cases |
| 196 | + |
| 197 | +| TestCases | Last Month | This Month | Delta | |
| 198 | +|-----------|------------|------------|-------| |
| 199 | +| Passing | 10189 | 10304 | +115 | |
| 200 | +| Failed | \- | \- | \- | |
| 201 | +| XFAIL | 64 | 72 | +8 | |
| 202 | +| XPASS | \- | \- | \- | |
| 203 | + |
| 204 | +### Milestones Progress |
| 205 | + |
| 206 | +| Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC | |
| 207 | +|-----------|------------|------------|-------|------------|-----------------|--------|------------| |
| 208 | + |
| 209 | +| Upcoming Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC | |
| 210 | +|-------------------------------|------------|------------|-------|---------------|-----------------|---------------|------------| |
| 211 | +| Unstable RfL features | 0% | 0% | \- | 7th Jan 2025 | \- | 1st Aug 2025 | GCC 16.1 | |
| 212 | +| Generic Associated Types | 0% | 0% | \- | 15th Mar 2025 | \- | 15th Jun 2025 | GCC 16.1 | |
| 213 | +| RfL const generics | 0% | 0% | \- | 1st May 2025 | \- | 15th Jun 2025 | GCC 16.1 | |
| 214 | +| frontend plugin hooks | 0% | 0% | \- | 15th May 2025 | \- | 7th Jul 2025 | GCC 16.1 | |
| 215 | +| Handling the testsuite issues | 0% | 0% | \- | 15th Sep 2024 | \- | 15th Sep 2025 | GCC 16.1 | |
| 216 | +| main shim | 0% | 0% | \- | 28th Jul 2025 | \- | 15th Sep 2025 | GCC 16.1 | |
| 217 | +| Final core attributes | 0% | 0% | \- | | \- | | GCC 16.1 | |
| 218 | +| Core nightly features | 0% | 0% | \- | | \- | | GCC 16.1 | |
| 219 | +| Defered inference | 0% | 0% | \- | | \- | | GCC 16.1 | |
| 220 | +| Fn traits fixes | 0% | 0% | \- | | \- | | GCC 16.1 | |
| 221 | +| Recursive types | 0% | 0% | \- | | \- | | GCC 16.1 | |
| 222 | +| Drop | 0% | 0% | \- | | \- | | GCC 16.1 | |
| 223 | +| Pin, PinInit | 0% | 0% | \- | | \- | | GCC 16.1 | |
| 224 | + |
| 225 | +| Past Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC | |
| 226 | +|--------------------------------------|------------|------------|-------|---------------|-----------------|---------------|------------| |
| 227 | +| Data Structures 1 - Core | 100% | 100% | \- | 30th Nov 2020 | 27th Jan 2021 | 29th Jan 2021 | GCC 14.1 | |
| 228 | +| Control Flow 1 - Core | 100% | 100% | \- | 28th Jan 2021 | 10th Feb 2021 | 26th Feb 2021 | GCC 14.1 | |
| 229 | +| Data Structures 2 - Generics | 100% | 100% | \- | 11th Feb 2021 | 14th May 2021 | 28th May 2021 | GCC 14.1 | |
| 230 | +| Data Structures 3 - Traits | 100% | 100% | \- | 20th May 2021 | 17th Sep 2021 | 27th Aug 2021 | GCC 14.1 | |
| 231 | +| Control Flow 2 - Pattern Matching | 100% | 100% | \- | 20th Sep 2021 | 9th Dec 2021 | 29th Nov 2021 | GCC 14.1 | |
| 232 | +| Macros and cfg expansion | 100% | 100% | \- | 1st Dec 2021 | 31st Mar 2022 | 28th Mar 2022 | GCC 14.1 | |
| 233 | +| Imports and Visibility | 100% | 100% | \- | 29th Mar 2022 | 13th Jul 2022 | 27th May 2022 | GCC 14.1 | |
| 234 | +| Const Generics | 100% | 100% | \- | 30th May 2022 | 10th Oct 2022 | 17th Oct 2022 | GCC 14.1 | |
| 235 | +| Initial upstream patches | 100% | 100% | \- | 10th Oct 2022 | 13th Nov 2022 | 13th Nov 2022 | GCC 14.1 | |
| 236 | +| Upstream initial patchset | 100% | 100% | \- | 13th Nov 2022 | 13th Dec 2022 | 19th Dec 2022 | GCC 14.1 | |
| 237 | +| Update GCC's master branch | 100% | 100% | \- | 1st Jan 2023 | 21st Feb 2023 | 3rd Mar 2023 | GCC 14.1 | |
| 238 | +| Final set of upstream patches | 100% | 100% | \- | 16th Nov 2022 | 1st May 2023 | 30th Apr 2023 | GCC 14.1 | |
| 239 | +| Borrow Checking 1 | 100% | 100% | \- | TBD | 8th Jan 2024 | 15th Aug 2023 | GCC 14.1 | |
| 240 | +| Procedural Macros 1 | 100% | 100% | \- | 13th Apr 2023 | 6th Aug 2023 | 6th Aug 2023 | GCC 14.1 | |
| 241 | +| GCC 13.2 Release | 100% | 100% | \- | 13th Apr 2023 | 22nd Jul 2023 | 15th Jul 2023 | GCC 14.1 | |
| 242 | +| GCC 14 Stage 3 | 100% | 100% | \- | 1st Sep 2023 | 20th Sep 2023 | 1st Nov 2023 | GCC 14.1 | |
| 243 | +| GCC 14.1 Release | 100% | 100% | \- | 2nd Jan 2024 | 2nd Jun 2024 | 15th Apr 2024 | GCC 14.1 | |
| 244 | +| format<sub>args</sub>!() support | 100% | 100% | \- | 15th Feb 2024 | \- | 1st Apr 2024 | GCC 14.1 | |
| 245 | +| GCC 14.2 | 100% | 100% | \- | 7th Jun 2024 | 15th Jun 2024 | 15th Jun 2024 | GCC 14.2 | |
| 246 | +| GCC 15.1 | 100% | 100% | \- | 21st Jun 2024 | 31st Jun 2024 | 1st Jul 2024 | GCC 15.1 | |
| 247 | +| Unhandled attributes | 100% | 100% | \- | 1st Jul 2024 | 15th Aug 2024 | 15th Aug 2024 | GCC 15.1 | |
| 248 | +| Inline assembly | 100% | 100% | \- | 1st Jun 2024 | 26th Aug 2024 | 15th Sep 2024 | GCC 15.1 | |
| 249 | +| Rustc Testsuite Adaptor | 100% | 100% | \- | 1st Jun 2024 | 26th Aug 2024 | 15th Sep 2024 | GCC 15.1 | |
| 250 | +| Borrow checker improvements | 100% | 100% | \- | 1st Jun 2024 | 26th Aug 2024 | 15th Sep 2024 | GCC 15.1 | |
| 251 | +| Deref and DerefMut improvements | 100% | 100% | \- | 28th Sep 2024 | 25th Oct 2024 | 28th Dec 2024 | GCC 15.1 | |
| 252 | +| Indexing fixes | 100% | 100% | \- | 21st Jul 2024 | 25th Dec 2024 | 15th Nov 2024 | GCC 15.1 | |
| 253 | +| Iterator fixes | 100% | 100% | \- | 21st Jul 2024 | 25th Dec 2024 | 15th Nov 2024 | GCC 15.1 | |
| 254 | +| Auto traits improvements | 100% | 100% | \- | 15th Sep 2024 | 20th Jan 2025 | 21st Dec 2024 | GCC 15.1 | |
| 255 | +| Lang items | 100% | 100% | \- | 1st Jul 2024 | 10th Jan 2025 | 21st Nov 2024 | GCC 15.1 | |
| 256 | +| alloc parser issues | 100% | 100% | \- | 7th Jan 2025 | 31st Jun 2024 | 28th Jan 2025 | GCC 15.1 | |
| 257 | +| std parser issues | 100% | 100% | \- | 7th Jan 2025 | 31st Jun 2024 | 28th Jan 2025 | GCC 16.1 | |
| 258 | +| Question mark operator | 100% | 100% | \- | 15th Dec 2024 | 21st Feb 2025 | 21st Feb 2025 | GCC 15.1 | |
| 259 | +| Name resolution 2.0 rework | 100% | 100% | \- | 1st Jun 2024 | \- | 1st Apr 2025 | GCC 15.1 | |
| 260 | +| Macro expansion | 100% | 100% | \- | 1st Jun 2024 | \- | 1st Jan 2025 | GCC 15.1 | |
| 261 | +| Remaining typecheck issues | 100% | 100% | \- | 21st Oct 2024 | \- | 1st Mar 2025 | GCC 15.1 | |
| 262 | +| cfg-core | 100% | 100% | \- | 1st Dec 2024 | 24th Mar 2025 | 1st Mar 2025 | GCC 15.1 | |
| 263 | +| Codegen fixes | 100% | 100% | \- | 7th Oct 2024 | 1st Apr 2025 | 1st Mar 2025 | GCC 15.1 | |
| 264 | +| black<sub>box</sub> intrinsic | 100% | 100% | \- | 28th Oct 2024 | \- | 28th Jan 2025 | GCC 15.1 | |
| 265 | +| let-else | 100% | 100% | \- | 28th Jan 2025 | \- | 28th Feb 2025 | GCC 15.1 | |
| 266 | +| Specialization | 100% | 100% | \- | 1st Jan 2025 | 1st Apr 2025 | 1st Mar 2025 | GCC 15.1 | |
| 267 | +| cfg-rfl | 100% | 100% | \- | 7th Jan 2025 | 19th Mar 2025 | 15th Feb 2025 | GCC 15.1 | |
| 268 | +| Downgrade to Rust 1.49 | 100% | 100% | \- | 14th Mar 2025 | 26th Mar 2025 | 1st Apr 2025 | GCC 15.1 | |
| 269 | +| try blocks | 100% | 100% | \- | | 30th Jul 2025 | | GCC 16.1 | |
| 270 | +| while-let loops | 100% | 100% | \- | | 30th Jul 2025 | | GCC 16.1 | |
| 271 | +| offset<sub>of</sub>!() builtin macro | 100% | 100% | \- | 15th Mar 2025 | 4th Aug 2025 | 15th Aug 2025 | GCC 16.1 | |
| 272 | +| Explicit generics with impl Trait | 100% | 100% | \- | 28th Feb 2025 | 21st Jul 2025 | 28th Mar 2025 | GCC 16.1 | |
| 273 | +| Final Inline assembly fixes | 100% | 100% | \- | | \- | | GCC 16.1 | |
| 274 | + |
| 275 | +## Planned Activities |
| 276 | + |
| 277 | +- Finish debugging `core` |
| 278 | +- Start experimenting with the kernel's Rust code |
0 commit comments