|
| 1 | +## Overview |
| 2 | + |
| 3 | +Thanks again to [Open Source Security, inc](https://opensrcsec.com/) and |
| 4 | +[Embecosm](https://www.embecosm.com/) for their ongoing support for this |
| 5 | +project. |
| 6 | + |
| 7 | +### Project update |
| 8 | + |
| 9 | +37 pull-requests were merged this month, which makes October one of the |
| 10 | +most productive months of this year for `gccrs`. Most of the changes |
| 11 | +concerned our name resolution rewrite, and more specifically its |
| 12 | +integration to the rest of the compiler pipeline. This paves the way for |
| 13 | +the removal of our old name resolution algorithm, which will happen as |
| 14 | +soon as all testcases pass using the new algorithm. Some long standing |
| 15 | +type system bugs were also fixed, which brings us closer and closer |
| 16 | +towards typechecking `core` and being able to compile it. We are now |
| 17 | +approaching the end of the Stage 1 period for GCC 15.1, which means we |
| 18 | +will soon no longer be able to push changes to common GCC |
| 19 | +infrastructure. As such, we are spending some time making sure all of |
| 20 | +these changes are properly sent upstream and are being reviewed. Changes |
| 21 | +made specifically to the Rust frontend will be upstreamable until the |
| 22 | +release of GCC 15.1, in spring of 2025. We are also working towards a |
| 23 | +rework of our fork-updating process, in order to make it easier to |
| 24 | +develop `gccrs` on the most recent version of GCC. This process is |
| 25 | +currently manual, and hard to automate - which is not fair to the |
| 26 | +contributor in charge of this task. Spending this time will make it |
| 27 | +easier for us to upstream our changes, which will speed up that process. |
| 28 | + |
| 29 | +The technical blogpost from last month was well-received, with positive |
| 30 | +comments and conversations on Reddit. It has been linked in the |
| 31 | +blog.rust-lang.org blogpost, which has been reviewed and approved, and |
| 32 | +should release shortly. |
| 33 | + |
| 34 | +### Community call |
| 35 | + |
| 36 | +We will have our next monthly community call on the 12th of November at |
| 37 | +10am UTC. You can subscribe to our calendar to see when the next one |
| 38 | +will be held. The call is open to everyone, even if you would just like |
| 39 | +to sit-in and listen. You can also subscribe to our |
| 40 | +[mailing-list](https://gcc.gnu.org/mailman/listinfo/gcc-rust) or join |
| 41 | +our [Zulip chat](https://gcc-rust.zulipchat.com) to be notified of |
| 42 | +upcoming events. |
| 43 | + |
| 44 | +- [Jitsi link](https://meet.jit.si/gccrs-community-call-august) |
| 45 | +- Calendar ID: |
| 46 | + 7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com |
| 47 | +- [Google calendar |
| 48 | + link](https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com) |
| 49 | +- [iCal |
| 50 | + link](https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics) |
| 51 | + |
| 52 | +## Call for contribution |
| 53 | + |
| 54 | +There are no calls for contribution this month, as we do not have a lot |
| 55 | +of good first issues available. Still, feel free to take a look at them |
| 56 | +[here](https://github.com/Rust-GCC/gccrs/issues?q=is%3Aopen+is%3Aissue+label%3Agood-first-pr) |
| 57 | +and get in touch with us for some mentoring or help! |
| 58 | + |
| 59 | +## Completed Activities |
| 60 | + |
| 61 | +- Remove usage of \`Resolver::get<sub>builtintypes</sub>\` |
| 62 | + [PR3236](https://github.com/rust-gcc/gccrs/pull/3236) |
| 63 | +- gccrs: fix bad type inferencing on path's |
| 64 | + [PR3235](https://github.com/rust-gcc/gccrs/pull/3235) |
| 65 | +- gccrs: add test case to show method resolution is working |
| 66 | + [PR3234](https://github.com/rust-gcc/gccrs/pull/3234) |
| 67 | +- Make \`TyTy::TupleType::get<sub>unittype</sub>\` cache its return |
| 68 | + value [PR3232](https://github.com/rust-gcc/gccrs/pull/3232) |
| 69 | +- Use name resolution 2.0 in \`TraitItemReference\` |
| 70 | + [PR3228](https://github.com/rust-gcc/gccrs/pull/3228) |
| 71 | +- Insert trait names during toplevel resolution 2.0 |
| 72 | + [PR3227](https://github.com/rust-gcc/gccrs/pull/3227) |
| 73 | +- Fix variable shadowing in late resolution 2.0 |
| 74 | + [PR3226](https://github.com/rust-gcc/gccrs/pull/3226) |
| 75 | +- Use name resolver 2.0 in \`CompileTraitItem\` |
| 76 | + [PR3223](https://github.com/rust-gcc/gccrs/pull/3223) |
| 77 | +- Use name resolution 2.0 in \`TraitResolver\` |
| 78 | + [PR3222](https://github.com/rust-gcc/gccrs/pull/3222) |
| 79 | +- Resolve \`SelfParam\` in name resolution 2.0 |
| 80 | + [PR3221](https://github.com/rust-gcc/gccrs/pull/3221) |
| 81 | +- Rename some \`PathIdentSegment\` functions |
| 82 | + [PR3219](https://github.com/rust-gcc/gccrs/pull/3219) |
| 83 | +- Fix name resolution 2.0 definition lookups in unsafe checker |
| 84 | + [PR3217](https://github.com/rust-gcc/gccrs/pull/3217) |
| 85 | +- Add a newline to the end of \`nr2/exclude\` |
| 86 | + [PR3216](https://github.com/rust-gcc/gccrs/pull/3216) |
| 87 | +- gccrs: Fix bad recursive operator overload call |
| 88 | + [PR3214](https://github.com/rust-gcc/gccrs/pull/3214) |
| 89 | +- Make \`const\` references to \`ForeverStack\` more useful |
| 90 | + [PR3211](https://github.com/rust-gcc/gccrs/pull/3211) |
| 91 | +- Use name resolver 2.0 in const checker |
| 92 | + [PR3207](https://github.com/rust-gcc/gccrs/pull/3207) |
| 93 | +- Use name resolver 2.0 for compiling break/continue |
| 94 | + [PR3206](https://github.com/rust-gcc/gccrs/pull/3206) |
| 95 | +- Load unloaded modules during toplevel resolution 2.0 |
| 96 | + [PR3205](https://github.com/rust-gcc/gccrs/pull/3205) |
| 97 | +- Use name resolver 2.0 in pattern checker |
| 98 | + [PR3204](https://github.com/rust-gcc/gccrs/pull/3204) |
| 99 | +- Improve path handling while testing name resolution 2.0 |
| 100 | + [PR3203](https://github.com/rust-gcc/gccrs/pull/3203) |
| 101 | +- Handle const generic parameters during resolution 2.0 |
| 102 | + [PR3202](https://github.com/rust-gcc/gccrs/pull/3202) |
| 103 | +- Handle external static items in toplevel resolver 2.0 |
| 104 | + [PR3201](https://github.com/rust-gcc/gccrs/pull/3201) |
| 105 | +- Disambiguate generic args during name resolution 2.0 |
| 106 | + [PR3200](https://github.com/rust-gcc/gccrs/pull/3200) |
| 107 | +- Use name resolver 2.0 in \`MarkLive\` |
| 108 | + [PR3199](https://github.com/rust-gcc/gccrs/pull/3199) |
| 109 | +- Use name resolver 2.0 during pattern typechecking |
| 110 | + [PR3198](https://github.com/rust-gcc/gccrs/pull/3198) |
| 111 | +- Allow identifiers and paths to reference types during nr2.0 |
| 112 | + [PR3197](https://github.com/rust-gcc/gccrs/pull/3197) |
| 113 | +- Insert static items into the value namespace |
| 114 | + [PR3194](https://github.com/rust-gcc/gccrs/pull/3194) |
| 115 | +- Improve \`InlineAsmOperand\` |
| 116 | + [PR3193](https://github.com/rust-gcc/gccrs/pull/3193) |
| 117 | +- Handle \`TypeAlias\` during toplevel resolution 2.0 |
| 118 | + [PR3192](https://github.com/rust-gcc/gccrs/pull/3192) |
| 119 | +- Improve handling of \`InlineAsm\` in \`DefaultASTVisitor\` |
| 120 | + [PR3191](https://github.com/rust-gcc/gccrs/pull/3191) |
| 121 | +- Fix some issues with canonical path fetching in name resolution 2.0 |
| 122 | + [PR3190](https://github.com/rust-gcc/gccrs/pull/3190) |
| 123 | +- Improve \`Rib::Definition\` shadowing |
| 124 | + [PR3188](https://github.com/rust-gcc/gccrs/pull/3188) |
| 125 | +- gccrs: Fix ICE when typechecking non-trait item when we expect one |
| 126 | + [PR3187](https://github.com/rust-gcc/gccrs/pull/3187) |
| 127 | +- gccrs: Add test case to show ICE is fixed |
| 128 | + [PR3186](https://github.com/rust-gcc/gccrs/pull/3186) |
| 129 | +- Provide input operand for gccrs |
| 130 | + [PR3151](https://github.com/rust-gcc/gccrs/pull/3151) |
| 131 | +- Desugar IfLet\* expr to match |
| 132 | + [PR3064](https://github.com/rust-gcc/gccrs/pull/3064) |
| 133 | +- Check for writes outside of the build directory |
| 134 | + [PR2974](https://github.com/rust-gcc/gccrs/pull/2974) |
| 135 | + |
| 136 | +### Contributors this month |
| 137 | + |
| 138 | +- [Philip Herron](https://github.com/philberty) |
| 139 | +- [Owen Avery](https://github.com/powerboat9) |
| 140 | +- [Marc Poulhiès](https://github.com/dkm) |
| 141 | +- [Jasmine Tang](https://github.com/badumbatish) |
| 142 | + |
| 143 | +### Overall Task Status |
| 144 | + |
| 145 | +| Category | Last Month | This Month | Delta | |
| 146 | +|-------------|------------|------------|-------| |
| 147 | +| TODO | 327 | 327 | \- | |
| 148 | +| In Progress | 75 | 75 | \- | |
| 149 | +| Completed | 888 | 897 | +9 | |
| 150 | + |
| 151 | +### Test Cases |
| 152 | + |
| 153 | +| TestCases | Last Month | This Month | Delta | |
| 154 | +|-----------|------------|------------|-------| |
| 155 | +| Passing | 9144 | 9212 | +67 | |
| 156 | +| Failed | \- | \- | \- | |
| 157 | +| XFAIL | 323 | 294 | -29 | |
| 158 | +| XPASS | \- | \- | \- | |
| 159 | + |
| 160 | +### Bugs |
| 161 | + |
| 162 | +| Category | Last Month | This Month | Delta | |
| 163 | +|-------------|------------|------------|-------| |
| 164 | +| TODO | 120 | 119 | -1 | |
| 165 | +| In Progress | 40 | 48 | +8 | |
| 166 | +| Completed | 437 | 441 | +4 | |
| 167 | + |
| 168 | +### Milestones Progress |
| 169 | + |
| 170 | +| Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC | |
| 171 | +|---------------------------------|------------|------------|-------|---------------|-----------------|---------------|------------| |
| 172 | +| GCC 14.2 | 100% | 100% | \- | 7th Jun 2024 | 15th Jun 2024 | 15th Jun 2024 | GCC 14.2 | |
| 173 | +| GCC 15.1 | 100% | 100% | \- | 21st Jun 2024 | 31st Jun 2024 | 1st Jul 2024 | GCC 15.1 | |
| 174 | +| Name resolution 2.0 rework | 6% | 6% | \- | 1st Jun 2024 | \- | 1st Apr 2025 | GCC 15.1 | |
| 175 | +| Macro expansion | 18% | 29% | +9% | 1st Jun 2024 | \- | 1st Jan 2025 | GCC 15.1 | |
| 176 | +| Unhandled attributes | 100% | 100% | \- | 1st Jul 2024 | 15th Aug 2024 | 15th Aug 2024 | GCC 15.1 | |
| 177 | +| Lang items | 66% | 66% | \- | 1st Jul 2024 | \- | 21st Nov 2024 | GCC 15.1 | |
| 178 | +| Deref and DerefMut improvements | 0% | 100% | +100% | 28th Sep 2024 | 25th Oct 2024 | 28th Dec 2024 | GCC 15.1 | |
| 179 | +| Indexing fixes | 0% | 0% | \- | 21st Jul 2024 | \- | 15th Nov 2024 | GCC 15.1 | |
| 180 | +| Iterator fixes | 0% | 0% | \- | 21st Jul 2024 | \- | 15th Nov 2024 | GCC 15.1 | |
| 181 | + |
| 182 | +| Upcoming Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC | |
| 183 | +|--------------------------------------|------------|------------|-------|---------------|-----------------|---------------|------------| |
| 184 | +| Auto traits improvements | 0% | 0% | \- | 15th Sep 2024 | \- | 21st Dec 2024 | GCC 15.1 | |
| 185 | +| Remaining typecheck issues | 0% | 85% | +85% | 21st Oct 2024 | \- | 1st Mar 2025 | GCC 15.1 | |
| 186 | +| cfg-core | 0% | 0% | \- | 1st Dec 2024 | \- | 1st Mar 2025 | GCC 15.1 | |
| 187 | +| Question mark operator | 0% | 0% | \- | 15th Dec 2024 | \- | 21st Feb 2025 | GCC 15.1 | |
| 188 | +| Codegen fixes | 0% | 0% | \- | 7th Oct 2024 | \- | 1st Mar 2025 | GCC 15.1 | |
| 189 | +| Specialization | 0% | 0% | \- | 1st Jan 2025 | \- | 1st Mar 2025 | GCC 15.1 | |
| 190 | +| Inline assembly | 100% | 100% | \- | 1st Jun 2024 | 26th Aug 2024 | 15th Sep 2024 | GCC 15.1 | |
| 191 | +| Borrow checker improvements | 100% | 100% | \- | 1st Jun 2024 | 26th Aug 2024 | 15th Sep 2024 | GCC 15.1 | |
| 192 | +| Rustc Testsuite Adaptor | 0% | 0% | \- | 1st Jun 2024 | \- | 15th Sep 2024 | GCC 15.1 | |
| 193 | +| black<sub>box</sub> intrinsic | 0% | 0% | \- | 28th Oct 2024 | \- | 28th Jan 2025 | GCC 15.1 | |
| 194 | +| Unstable RfL features | 0% | 0% | \- | 7th Jan 2025 | \- | 1st Mar 2025 | GCC 15.1 | |
| 195 | +| cfg-rfl | 0% | 0% | \- | 7th Jan 2025 | \- | 15th Feb 2025 | GCC 15.1 | |
| 196 | +| alloc parser issues | 100% | 100% | \- | 7th Jan 2025 | 31st Jun 2024 | 28th Jan 2025 | GCC 15.1 | |
| 197 | +| let-else | 0% | 0% | \- | 28th Jan 2025 | \- | 28th Feb 2025 | GCC 15.1 | |
| 198 | +| Explicit generics with impl Trait | 0% | 0% | \- | 28th Feb 2025 | \- | 28th Mar 2025 | GCC 15.1 | |
| 199 | +| offset<sub>of</sub>!() builtin macro | 0% | 0% | \- | 15th Mar 2025 | \- | 15th May 2025 | GCC 15.1 | |
| 200 | +| Generic Associated Types | 0% | 0% | \- | 15th Mar 2025 | \- | 15th Jun 2025 | GCC 16.1 | |
| 201 | +| RfL const generics | 0% | 0% | \- | 1st May 2025 | \- | 15th Jun 2025 | GCC 16.1 | |
| 202 | +| frontend plugin hooks | 0% | 0% | \- | 15th May 2025 | \- | 7th Jul 2025 | GCC 16.1 | |
| 203 | +| Handling the testsuite issues | 0% | 0% | \- | 15th Sep 2024 | \- | 15th Sep 2025 | GCC 16.1 | |
| 204 | +| std parser issues | 100% | 100% | \- | 7th Jan 2025 | 31st Jun 2024 | 28th Jan 2025 | GCC 16.1 | |
| 205 | +| main shim | 0% | 0% | \- | 28th Jul 2025 | \- | 15th Sep 2025 | GCC 16.1 | |
| 206 | + |
| 207 | +| Past Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC | |
| 208 | +|-----------------------------------|------------|------------|-------|---------------|-----------------|---------------|------------| |
| 209 | +| Data Structures 1 - Core | 100% | 100% | \- | 30th Nov 2020 | 27th Jan 2021 | 29th Jan 2021 | GCC 14.1 | |
| 210 | +| Control Flow 1 - Core | 100% | 100% | \- | 28th Jan 2021 | 10th Feb 2021 | 26th Feb 2021 | GCC 14.1 | |
| 211 | +| Data Structures 2 - Generics | 100% | 100% | \- | 11th Feb 2021 | 14th May 2021 | 28th May 2021 | GCC 14.1 | |
| 212 | +| Data Structures 3 - Traits | 100% | 100% | \- | 20th May 2021 | 17th Sep 2021 | 27th Aug 2021 | GCC 14.1 | |
| 213 | +| Control Flow 2 - Pattern Matching | 100% | 100% | \- | 20th Sep 2021 | 9th Dec 2021 | 29th Nov 2021 | GCC 14.1 | |
| 214 | +| Macros and cfg expansion | 100% | 100% | \- | 1st Dec 2021 | 31st Mar 2022 | 28th Mar 2022 | GCC 14.1 | |
| 215 | +| Imports and Visibility | 100% | 100% | \- | 29th Mar 2022 | 13th Jul 2022 | 27th May 2022 | GCC 14.1 | |
| 216 | +| Const Generics | 100% | 100% | \- | 30th May 2022 | 10th Oct 2022 | 17th Oct 2022 | GCC 14.1 | |
| 217 | +| Initial upstream patches | 100% | 100% | \- | 10th Oct 2022 | 13th Nov 2022 | 13th Nov 2022 | GCC 14.1 | |
| 218 | +| Upstream initial patchset | 100% | 100% | \- | 13th Nov 2022 | 13th Dec 2022 | 19th Dec 2022 | GCC 14.1 | |
| 219 | +| Update GCC's master branch | 100% | 100% | \- | 1st Jan 2023 | 21st Feb 2023 | 3rd Mar 2023 | GCC 14.1 | |
| 220 | +| Final set of upstream patches | 100% | 100% | \- | 16th Nov 2022 | 1st May 2023 | 30th Apr 2023 | GCC 14.1 | |
| 221 | +| Borrow Checking 1 | 100% | 100% | \- | TBD | 8th Jan 2024 | 15th Aug 2023 | GCC 14.1 | |
| 222 | +| Procedural Macros 1 | 100% | 100% | \- | 13th Apr 2023 | 6th Aug 2023 | 6th Aug 2023 | GCC 14.1 | |
| 223 | +| GCC 13.2 Release | 100% | 100% | \- | 13th Apr 2023 | 22nd Jul 2023 | 15th Jul 2023 | GCC 14.1 | |
| 224 | +| GCC 14 Stage 3 | 100% | 100% | \- | 1st Sep 2023 | 20th Sep 2023 | 1st Nov 2023 | GCC 14.1 | |
| 225 | +| GCC 14.1 Release | 100% | 100% | \- | 2nd Jan 2024 | 2nd Jun 2024 | 15th Apr 2024 | GCC 14.1 | |
| 226 | +| format<sub>args</sub>!() support | 100% | 100% | \- | 15th Feb 2024 | \- | 1st Apr 2024 | GCC 14.1 | |
| 227 | + |
| 228 | +## Planned Activities |
| 229 | + |
| 230 | +- Finish usage of lang items for codegen |
| 231 | +- Finish for-loops code expansion |
| 232 | +- Improve our process for updating our github repository with upstream |
| 233 | + GCC |
| 234 | + |
| 235 | +### Risks |
| 236 | + |
| 237 | +There have been no changes to the Risk table this month |
| 238 | + |
| 239 | +| Risk | Impact (1-3) | Likelihood (0-10) | Risk (I \* L) | Mitigation | |
| 240 | +|----------------------------------------|--------------|-------------------|---------------|-----------------------------------------------------------------| |
| 241 | +| Missing features for GCC 15.1 deadline | 2 | 1 | 2 | Start working on required features as early as July (6mo ahead) | |
| 242 | + |
| 243 | +## Detailed changelog |
0 commit comments