|
| 1 | +#+title: Monthly Report for December 2024 |
| 2 | +#+author: Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen |
| 3 | +#+date: 2025-01-06 |
| 4 | + |
| 5 | +** Overview |
| 6 | + |
| 7 | +Thanks again to [[https://opensrcsec.com/][Open Source Security, inc]] and [[https://www.embecosm.com/][Embecosm]] for their ongoing support for this project. |
| 8 | + |
| 9 | +*** Project update |
| 10 | + |
| 11 | +We accomplished a lot of technical changes during the month of December on three major milestones for the compiler: Auto traits, for-loops, and built-in derives. Both for-loops and built-in derives required a major rework of our AST and HIR in order to handle lang-item paths, a special form of path expressions and path types used when refering directly to [[https://rustc-dev-guide.rust-lang.org/lang-items.html][lang-items]]. This had a big impact to most of the compiler pipeline, as we had to adapt most compiler passes to handle these new paths. |
| 12 | + |
| 13 | +*TODO*: Explain why lang item paths are needed for for-loops, with examples. |
| 14 | + |
| 15 | +Path of the into_iter function: |
| 16 | + |
| 17 | +::core::iter::IntoIterator::into_iter(&self); |
| 18 | + |
| 19 | +Once the lang-item fixes were completed, we were able to finish implementing for-loops desugaring, which is currently under review. This then lead to continuing work on built-in derive macros, the last remaining block for macro expansion for core 1.49. These built-in macros often need to refer to other lang-items, such as the ~Clone~ or ~Copy~ trait in order to be expanded properly. |
| 20 | + |
| 21 | +We then focused on setting up the basis for the ~Sync~ and ~Send~ auto-traits, which are used throughout core 1.49 and required for many Rust programs. We are now figuring out the last few details of implementing these auto-traits and will add handling for them in the coming weeks. |
| 22 | + |
| 23 | +*** Community call |
| 24 | + |
| 25 | +*FIXME* |
| 26 | + |
| 27 | +** Call for contribution |
| 28 | + |
| 29 | +- https://github.com/Rust-GCC/gccrs/issues/2500 |
| 30 | + |
| 31 | +- https://github.com/Rust-GCC/gccrs/issues/2376 |
| 32 | + |
| 33 | +** Completed Activities |
| 34 | + |
| 35 | +- gccrs: fix ICE during HIR dump [[https://github.com/rust-gcc/gccrs/pull/3346][PR3346]] |
| 36 | +- ast: Add EnumItem::Kind [[https://github.com/rust-gcc/gccrs/pull/3342][PR3342]] |
| 37 | +- nr2.0: Resolve type aliases inside trait definitions [[https://github.com/rust-gcc/gccrs/pull/3330][PR3330]] |
| 38 | +- Resolve and lower parenthesized types [[https://github.com/rust-gcc/gccrs/pull/3328][PR3328]] |
| 39 | +- parser: Add testcases for multiline strings [[https://github.com/rust-gcc/gccrs/pull/3325][PR3325]] |
| 40 | +- Add resolution for additional trait bounds [[https://github.com/rust-gcc/gccrs/pull/3324][PR3324]] |
| 41 | +- nr2.0: Handle `Self` properly in trait definitions [[https://github.com/rust-gcc/gccrs/pull/3323][PR3323]] |
| 42 | +- ast-builder: Add more methods [[https://github.com/rust-gcc/gccrs/pull/3322][PR3322]] |
| 43 | +- allow ptr to int and int to ptr type casting [[https://github.com/rust-gcc/gccrs/pull/3321][PR3321]] |
| 44 | +- ast: Add new Kind enums for more precise downcasting [[https://github.com/rust-gcc/gccrs/pull/3320][PR3320]] |
| 45 | +- Handle new lang items: `Option::None`, `Option::Some`, `IntoIterator::into_iter`, `Iterator::next` [[https://github.com/rust-gcc/gccrs/pull/3318][PR3318]] |
| 46 | +- typecheck-path: Fix typo (reciever -> receiver) [[https://github.com/rust-gcc/gccrs/pull/3317][PR3317]] |
| 47 | +- gccrs: disable macos github workflow [[https://github.com/rust-gcc/gccrs/pull/3312][PR3312]] |
| 48 | +- Fix name resolution for enums with generics [[https://github.com/rust-gcc/gccrs/pull/3307][PR3307]] |
| 49 | +- refactor(typecheck): StackedContexts for blocks [[https://github.com/rust-gcc/gccrs/pull/3305][PR3305]] |
| 50 | +- gccrs: implement the TuplePattern and use it for function patterns [[https://github.com/rust-gcc/gccrs/pull/3303][PR3303]] |
| 51 | +- gccrs: fix bad not expression in rust [[https://github.com/rust-gcc/gccrs/pull/3301][PR3301]] |
| 52 | +- gccrs: Made changes to AST::TraitImpl constructor for TypePath [[https://github.com/rust-gcc/gccrs/pull/3298][PR3298]] |
| 53 | +- ci: Update expected warnings list for 32 bits build. [[https://github.com/rust-gcc/gccrs/pull/3295][PR3295]] |
| 54 | +- build: update bootstrap req to C++14 [[https://github.com/rust-gcc/gccrs/pull/3294][PR3294]] |
| 55 | +- Use lang items as paths [[https://github.com/rust-gcc/gccrs/pull/3290][PR3290]] |
| 56 | +- Collect lang items in the AST [[https://github.com/rust-gcc/gccrs/pull/3289][PR3289]] |
| 57 | +- type-check: Remove unused capture in nr2.0 [[https://github.com/rust-gcc/gccrs/pull/3288][PR3288]] |
| 58 | +- Remove `Rust::make_unique` [[https://github.com/rust-gcc/gccrs/pull/3278][PR3278]] |
| 59 | +- Fix `ForeverStack::find_starting_point` output parameter [[https://github.com/rust-gcc/gccrs/pull/3247][PR3247]] |
| 60 | + |
| 61 | +*** Contributors this month |
| 62 | + |
| 63 | +- [[http://github.com/sriganeshres][Sri Ganesh Thota]] (new contributor!) |
| 64 | +- [[https://github.com/snprajwal][Prajwal S N]] |
| 65 | +- [[https://github.com/liamnaddell][Liam Naddell]] |
| 66 | +- [[https://github.com/nobel-sh][Nobel Singh]] |
| 67 | +- [[https://github.com/thesamesam][Sam James]] |
| 68 | +- [[https://github.com/powerboat9][Owen Avery]] |
| 69 | +- [[https://github.com/dkm][Marc Poulhiès]] |
| 70 | +- [[https://github.com/tschwinge][Thomas Schwinge]] |
| 71 | +- [[https://github.com/philberty][Philip Herron]] |
| 72 | +- [[https://github.com/P-E-P][Pierre-Emmanuel Patry]] |
| 73 | +- [[https://github.com/CohenArthur][Arthur Cohen]] |
| 74 | + |
| 75 | +*** Overall Task Status |
| 76 | + |
| 77 | +| Category | Last Month | This Month | Delta | |
| 78 | +|-------------+------------+------------+-------| |
| 79 | +| TODO | 316 | 308 | -8 | |
| 80 | +| In Progress | 80 | 88 | +8 | |
| 81 | +| Completed | 907 | 922 | +15 | |
| 82 | + |
| 83 | +*** Bugs |
| 84 | + |
| 85 | +| Category | Last Month | This Month | Delta | |
| 86 | +|-------------+------------+------------+-------| |
| 87 | +| TODO | 112 | 110 | -2 | |
| 88 | +| In Progress | 40 | 38 | -2 | |
| 89 | +| Completed | 450 | 458 | +8 | |
| 90 | + |
| 91 | +*** Test Cases |
| 92 | + |
| 93 | +| TestCases | Last Month | This Month | Delta | |
| 94 | +|-----------+------------+------------+-------| |
| 95 | +| Passing | 9266 | 9329 | +63 | |
| 96 | +| Failed | - | - | - | |
| 97 | +| XFAIL | 264 | 262 | -2 | |
| 98 | +| XPASS | - | - | - | |
| 99 | + |
| 100 | +*** Milestones Progress |
| 101 | + |
| 102 | +| Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC | |
| 103 | +|-----------------------------------|------------|------------|-------|---------------|-----------------|---------------|------------| |
| 104 | +| Name resolution 2.0 rework | 14% | 20% | - | 1st Jun 2024 | - | 1st Apr 2025 | GCC 15.1 | |
| 105 | +| Macro expansion | 29% | 33% | +4% | 1st Jun 2024 | - | 1st Jan 2025 | GCC 15.1 | |
| 106 | +| Lang items | 90% | 90% | - | 1st Jul 2024 | - | 21st Nov 2024 | GCC 15.1 | |
| 107 | +| Indexing fixes | 0% | 100% | +100% | 21st Jul 2024 | 25th Dec 2024 | 15th Nov 2024 | GCC 15.1 | |
| 108 | +| Iterator fixes | 0% | 100% | +100% | 21st Jul 2024 | 25th Dec 2024 | 15th Nov 2024 | GCC 15.1 | |
| 109 | +| Auto traits improvements | 0% | 60% | +60% | 15th Sep 2024 | - | 21st Dec 2024 | GCC 15.1 | |
| 110 | +| Remaining typecheck issues | 88% | 88% | - | 21st Oct 2024 | - | 1st Mar 2025 | GCC 15.1 | |
| 111 | +| cfg-core | 0% | 0% | - | 1st Dec 2024 | - | 1st Mar 2025 | GCC 15.1 | |
| 112 | +| Codegen fixes | 0% | 0% | - | 7th Oct 2024 | - | 1st Mar 2025 | GCC 15.1 | |
| 113 | + |
| 114 | +| Upcoming Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC | |
| 115 | +|-----------------------------------|------------|------------|-------|---------------|-----------------|---------------|------------| |
| 116 | +| Question mark operator | 0% | 0% | - | 15th Dec 2024 | - | 21st Feb 2025 | GCC 15.1 | |
| 117 | +| Specialization | 0% | 0% | - | 1st Jan 2025 | - | 1st Mar 2025 | GCC 15.1 | |
| 118 | +| Inline assembly | 100% | 100% | - | 1st Jun 2024 | 26th Aug 2024 | 15th Sep 2024 | GCC 15.1 | |
| 119 | +| Borrow checker improvements | 100% | 100% | - | 1st Jun 2024 | 26th Aug 2024 | 15th Sep 2024 | GCC 15.1 | |
| 120 | +| Rustc Testsuite Adaptor | 0% | 0% | - | 1st Jun 2024 | - | 15th Sep 2024 | GCC 15.1 | |
| 121 | +| black_box intrinsic | 0% | 0% | - | 28th Oct 2024 | - | 28th Jan 2025 | GCC 15.1 | |
| 122 | +| Unstable RfL features | 0% | 0% | - | 7th Jan 2025 | - | 1st Mar 2025 | GCC 15.1 | |
| 123 | +| cfg-rfl | 0% | 0% | - | 7th Jan 2025 | - | 15th Feb 2025 | GCC 15.1 | |
| 124 | +| alloc parser issues | 100% | 100% | - | 7th Jan 2025 | 31st Jun 2024 | 28th Jan 2025 | GCC 15.1 | |
| 125 | +| let-else | 0% | 0% | - | 28th Jan 2025 | - | 28th Feb 2025 | GCC 15.1 | |
| 126 | +| Explicit generics with impl Trait | 0% | 0% | - | 28th Feb 2025 | - | 28th Mar 2025 | GCC 15.1 | |
| 127 | +| Downgrade to Rust 1.49 | 0% | 0% | - | - | - | 1st Apr 2025 | GCC 15.1 | |
| 128 | +| offset_of!() builtin macro | 0% | 0% | - | 15th Mar 2025 | - | 15th May 2025 | GCC 15.1 | |
| 129 | +| Generic Associated Types | 0% | 0% | - | 15th Mar 2025 | - | 15th Jun 2025 | GCC 16.1 | |
| 130 | +| RfL const generics | 0% | 0% | - | 1st May 2025 | - | 15th Jun 2025 | GCC 16.1 | |
| 131 | +| frontend plugin hooks | 0% | 0% | - | 15th May 2025 | - | 7th Jul 2025 | GCC 16.1 | |
| 132 | +| Handling the testsuite issues | 0% | 0% | - | 15th Sep 2024 | - | 15th Sep 2025 | GCC 16.1 | |
| 133 | +| std parser issues | 100% | 100% | - | 7th Jan 2025 | 31st Jun 2024 | 28th Jan 2025 | GCC 16.1 | |
| 134 | +| main shim | 0% | 0% | - | 28th Jul 2025 | - | 15th Sep 2025 | GCC 16.1 | |
| 135 | + |
| 136 | +| Past Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target | Target GCC | |
| 137 | +|-----------------------------------+------------+------------+-------+---------------+-----------------+---------------|------------| |
| 138 | +| Data Structures 1 - Core | 100% | 100% | - | 30th Nov 2020 | 27th Jan 2021 | 29th Jan 2021 | GCC 14.1 | |
| 139 | +| Control Flow 1 - Core | 100% | 100% | - | 28th Jan 2021 | 10th Feb 2021 | 26th Feb 2021 | GCC 14.1 | |
| 140 | +| Data Structures 2 - Generics | 100% | 100% | - | 11th Feb 2021 | 14th May 2021 | 28th May 2021 | GCC 14.1 | |
| 141 | +| Data Structures 3 - Traits | 100% | 100% | - | 20th May 2021 | 17th Sep 2021 | 27th Aug 2021 | GCC 14.1 | |
| 142 | +| Control Flow 2 - Pattern Matching | 100% | 100% | - | 20th Sep 2021 | 9th Dec 2021 | 29th Nov 2021 | GCC 14.1 | |
| 143 | +| Macros and cfg expansion | 100% | 100% | - | 1st Dec 2021 | 31st Mar 2022 | 28th Mar 2022 | GCC 14.1 | |
| 144 | +| Imports and Visibility | 100% | 100% | - | 29th Mar 2022 | 13th Jul 2022 | 27th May 2022 | GCC 14.1 | |
| 145 | +| Const Generics | 100% | 100% | - | 30th May 2022 | 10th Oct 2022 | 17th Oct 2022 | GCC 14.1 | |
| 146 | +| Initial upstream patches | 100% | 100% | - | 10th Oct 2022 | 13th Nov 2022 | 13th Nov 2022 | GCC 14.1 | |
| 147 | +| Upstream initial patchset | 100% | 100% | - | 13th Nov 2022 | 13th Dec 2022 | 19th Dec 2022 | GCC 14.1 | |
| 148 | +| Update GCC's master branch | 100% | 100% | - | 1st Jan 2023 | 21st Feb 2023 | 3rd Mar 2023 | GCC 14.1 | |
| 149 | +| Final set of upstream patches | 100% | 100% | - | 16th Nov 2022 | 1st May 2023 | 30th Apr 2023 | GCC 14.1 | |
| 150 | +| Borrow Checking 1 | 100% | 100% | - | TBD | 8th Jan 2024 | 15th Aug 2023 | GCC 14.1 | |
| 151 | +| Procedural Macros 1 | 100% | 100% | - | 13th Apr 2023 | 6th Aug 2023 | 6th Aug 2023 | GCC 14.1 | |
| 152 | +| GCC 13.2 Release | 100% | 100% | - | 13th Apr 2023 | 22nd Jul 2023 | 15th Jul 2023 | GCC 14.1 | |
| 153 | +| GCC 14 Stage 3 | 100% | 100% | - | 1st Sep 2023 | 20th Sep 2023 | 1st Nov 2023 | GCC 14.1 | |
| 154 | +| GCC 14.1 Release | 100% | 100% | - | 2nd Jan 2024 | 2nd Jun 2024 | 15th Apr 2024 | GCC 14.1 | |
| 155 | +| format_args!() support | 100% | 100% | - | 15th Feb 2024 | - | 1st Apr 2024 | GCC 14.1 | |
| 156 | +| GCC 14.2 | 100% | 100% | - | 7th Jun 2024 | 15th Jun 2024 | 15th Jun 2024 | GCC 14.2 | |
| 157 | +| GCC 15.1 | 100% | 100% | - | 21st Jun 2024 | 31st Jun 2024 | 1st Jul 2024 | GCC 15.1 | |
| 158 | +| Unhandled attributes | 100% | 100% | - | 1st Jul 2024 | 15th Aug 2024 | 15th Aug 2024 | GCC 15.1 | |
| 159 | +| Deref and DerefMut improvements | 100% | 100% | - | 28th Sep 2024 | 25th Oct 2024 | 28th Dec 2024 | GCC 15.1 | |
| 160 | + |
| 161 | +** Planned Activities |
| 162 | + |
| 163 | +- Implement remaining built-in derive macros |
| 164 | +- Implement Send and Sync auto traits |
| 165 | +- Finish for-loops code expansion |
| 166 | +- Improve our process for updating our github repository with upstream GCC |
| 167 | + |
| 168 | +*** Risks |
| 169 | + |
| 170 | +We have now entered Stage 3 of GCC development, and all of the patches we needed to get upstreamed have been upstreamed. The risk present in this table is no longer present. |
| 171 | + |
| 172 | +| Risk | Impact (1-3) | Likelihood (0-10) | Risk (I * L) | Mitigation | |
| 173 | +|-----------------------------------------------+--------------+-------------------+--------------+-----------------------------------------------------------------| |
| 174 | +| Missing features for GCC 15.1 deadline | 2 | 0 | 0 | Start working on required features as early as July (6mo ahead) | |
| 175 | + |
| 176 | +** Detailed changelog |
0 commit comments