GCC Front-End For Rust

Alternative Rust Compiler for GCC

View the Project on GitHub

January 2023 Monthly report

Overview

Thanks again to Open Source Security, inc and Embecosm for their ongoing support for this project.

Milestone Progress

This month saw an influx of new contributors and pull-requests, which we are extremely happy about. We have opened multiple issues marked as good-first-pr in order to make sure that anyone interested in the project is able to get started. Incidentally, this also caused us to start looking at enhancing the contributing experience regarding GCC ChangeLogs and restrictions earlier than planned. This is fine, as most of the infrastructure was already in place for our work on upstreaming patches to GCC’s master branch. Overall, more than 60 pull-requests were merged this month, with 8 new people contributing to the project!

As a consequence, our continuous integration now checks whether or not your commits contain the proper format of Changelog and respect the Digital Certificate of Origin or were made under an FSF copyright assignment. We are putting together more “interactive” to make it easier for first time contributors to create these ChangeLog entries.

We also submitted our list of Google Summer of Code projects, which you can find here on the GCC wiki, in the Rust frontend section. We put together four different projects, two of them being “short” (175 hours) and the rest being “long” (350 hours) projects.

The project also made the trip to FOSDEM at the beginning of February to give a talk to the Rust devroom about some internal workings of the compiler. You can find the recording of that talk here, on the FOSDEM website.

Finally, the most important news for the project this month is the arrival of Pierre-Emmanuel Patry as a full time contributor to the project. Pierre-Emmanuel is joining us as part of his final year internship for his Masters degree, and will be mostly working on our procedural macros. Notably, his work will consist in working on a reimplementation of libproc_macro as well as the various infrastructure surrounding that crate, such as inter process communication and client/server behavior within the compiler.

Community call

We had our monthly community call on the 13th of February at 10h00 UTC. You can find some notes and minutes about the call in the agenda.

Agenda: https://hackmd.io/@Rust-GCC/ByuPb2Uii

You can subscribe to our newly-created Google calendar to get updates and the dates of events the team will attend. It also contains events for our community calls.

Completed Activities

Contributors this month

Overall Task Status

Category Last Month This Month Delta
TODO 186 211 +25
In Progress 32 43 +12
Completed 500 522 +22

Test Cases

TestCases Last Month This Month Delta
Passing 5467 5483 +16
Failed - - -
XFAIL 40 40 -
XPASS - - -

Bugs

Category Last Month This Month Delta
TODO 55 67 +12
In Progress 16 11 -5
Completed 218 227 +9

Milestones Progress

We are putting together milestones regarding projects such as libproc and will update the Milestone.

Note that the intrinsics milestone percentage on github is not representative: It shows a 69% completion rate, but does not take into account the tracking issues with dozens of unresolved items. Thus the percentage is computed using the sum of issues and tracked items done divided by the sums of issues and tracked items overall. Similarly, the Update GCC’s master branch milestone contains a tracking issue containing over 200 tasks. The percentage shown here takes this into account.

Milestone Last month This month Delta Start Date Completion Date Target
Data Structures 1 - Core 100% 100% - 30th Nov 2020 27th Jan 2021 29th Jan 2021
Control Flow 1 - Core 100% 100% - 28th Jan 2021 10th Feb 2021 26th Feb 2021
Data Structures 2 - Generics 100% 100% - 11th Feb 2021 14th May 2021 28th May 2021
Data Structures 3 - Traits 100% 100% - 20th May 2021 17th Sept 2021 27th Aug 2021
Control Flow 2 - Pattern Matching 100% 100% - 20th Sept 2021 9th Dec 2021 29th Nov 2021
Macros and cfg expansion 0% 100% - 1st Dec 2021 31st Mar 2022 28th Mar 2022
Imports and Visibility 0% 100% - 29th Mar 2022 13th Jul 2022 27th May 2022
Const Generics 0% 100% - 30th May 2022 10th Oct 2022 17th Oct 2022
Initial upstream patches 0% 100% - 10th Oct 2022 13th Nov 2022 13th Nov 2022
Upstream initial patchset 100% 100% - 13th Nov 2022 13th Dec 2022 19th Dec 2022
Update GCC’s master branch 39% 71% +32% 1st Jan 2023 - 3rd Mar 2023
Final set of upstream patches 31% 47% +16% 16th Nov 2022 - 30th Apr 2023
Intrinsics and builtins 0% 18% - 6th Sept 2022 - TBD
Borrow checking 0% 0% - TBD - TBD
Const Generics 2 0% 0% - TBD - TBD
Rust-for-Linux compilation 0% 0% - TBD - TBD

Risks

Risk Impact (1-3) Likelihood (0-10) Risk (I * L) Mitigation
Missing GCC 13 upstream window 2 3 6 Merge in GCC 14 and be proactive about reviews

Testing project

The testing project is on hold as we try and figure out some of the issues we’re running into with GitHub and our various automations around it.

Planned Activities

Detailed changelog