GCC Front-End For Rust

Alternative Rust Compiler for GCC

View the Project on GitHub

March 2024 Monthly report

Overview

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

Project update

This month saw another influx of new contributors as the start of GSoC approaches. This year looks to be very promising, with a lot of proposals received for the GCC project as a whole, and a lot of them being dedicated specifically to gccrs. 21 proposals were sent to the organization, which is similar to last year with 23 proposals. In the same vein, gccrs proposals totaled 7 submissions, compared to 8 last year.

The proposals we’ve read so far are of high quality and very well written. Our three mentors, Philip, Pierre-Emmanuel and Arthur, are reviewing them and will choose applicants in the next week or so.

The major news this month is the fast approaching release of GCC 14.1. We are hard at work, trying to fix as many bugs as possible and add as many features as we can before that deadline. We are excited for you to be able to try them out, and are looking forward to the numerous bug reports. As a reminder, gccrs will not be suitable for real use cases in its first release yet, and will still require you to pass additional options to ensure you understand the risks of using such an experimental compiler. We are thankful for all of the folks who will try our project out.

We have made last minutes changes to GCC’s build system in order to improve the situation with our new dependency on Rust - the project will now error out early if you do not have Rust installed, so as to prevent this error happening down the line after 75% of the compilation of the project is done. This patch is currently being reviewed and will be upstreamed soon. After this, we will resume upstreaming the technical contributions we’ve made in the past two weeks or so.

These contributions concern the expansion of format_args!() macro invocations, as well as the expansion of for-loops, both necessary for the println!() macro to be implemented. Pierre-Emmanuel has also made great progress on our name resolution rewrite in order to support glob imports, which were previously unhandled in the project. Finally, Jakub Dupak made further progress on the borrow checker, emitting more facts for the polonius-engine library and thus adding more and more infrastructure for more and more borrow-checking static analysis.

Community call

We will have our next monthly community call on the 15th of April at 10am UTC. You can subscribe to our calendar to see when the next one will be held. The call is open to everyone, even if you would just like to sit-in and listen. You can also subscribe to our mailing-list or join our Zulip chat to be notified of upcoming events.

Call for contribution

Completed Activities

Contributors this month

Overall Task Status

Category Last Month This Month Delta
TODO 276 284 +8
In Progress 74 73 -1
Completed 812 821 +9

Test Cases

TestCases Last Month This Month Delta
Passing 8402 8437 +35
Failed - - -
XFAIL 69 69 -
XPASS - - -

Bugs

Category Last Month This Month Delta
TODO 97 105 +8
In Progress 37 37 -
Completed 411 412 +1

Milestones Progress

Milestone Last Month This Month Delta Start Date Completion Date Target
GCC 14.1 Release 71% 72% +1% 2nd Jan 2024 - 15th Apr 2024
AST Pipeline for libcore 1.49 82% 82% - 13th Apr 2023 - 15th Apr 2024
HIR Pipeline for libcore 1.49 72% 72% - 13th Apr 2023 - TBD
core 1.49 functionality [AST] 8% 11% +3% 1st Jul 2023 - 15th Apr 2025
formatargs!() support 70% 100% +30% 15th Feb 2024 - 1st Apr 2024
Name Resolution rework 0% 0% - 15th Feb 2024 - 1st Apr 2024
Upcoming Milestone Last Month This Month Delta Start Date Completion Date Target
Rustc Testsuite Prerequisistes 0% 0% - TBD - 1st Feb 2024
Intrinsics and builtins 18% 18% - 6th Sep 2022 - 1st Apr 2025
Const Generics 2 0% 0% - TBD - 15th Dec 2024
Rust-for-Linux compilation 0% 0% - TBD - 1st Apr 2025
Borrow Checking 2 0% 0% - TBD - 15th Apr 2025
Procedural Macros 2 53% 53% - TBD - 15th Apr 2025
Past 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 Sep 2021 27th Aug 2021
Control Flow 2 - Pattern Matching 100% 100% - 20th Sep 2021 9th Dec 2021 29th Nov 2021
Macros and cfg expansion 100% 100% - 1st Dec 2021 31st Mar 2022 28th Mar 2022
Imports and Visibility 100% 100% - 29th Mar 2022 13th Jul 2022 27th May 2022
Const Generics 100% 100% - 30th May 2022 10th Oct 2022 17th Oct 2022
Initial upstream patches 100% 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 100% 100% - 1st Jan 2023 21st Feb 2023 3rd Mar 2023
Final set of upstream patches 100% 100% - 16th Nov 2022 1st May 2023 30th Apr 2023
Borrow Checking 1 100% 100% - TBD 8th Jan 2024 15th Aug 2023
Procedural Macros 1 100% 100% - 13th Apr 2023 6th Aug 2023 6th Aug 2023
GCC 13.2 Release 100% 100% - 13th Apr 2023 22nd Jul 2023 15th Jul 2023
GCC 14 Stage 3 100% 100% - 1st Sep 2023 20th Sep 2023 1st Nov 2023

Testing project

Testsuite Compiler Last month This month Success delta
rustc testsuite gccrs -fsyntax-only 92.7% 92.7% -
gccrs testsuite rustc stable 59.2% 59.2% -
rustc testsuite passing tests gccrs 14.0% 14.0% -
rustc testsuite (nostd) gccrs 27.5% 27.5% -
rustc testsuite (nocore) gccrs 3.8% 3.8% -
blake3 gccrs 25.0% 25.0% -
libcore gccrs 0% 0% -

Planned Activities

Risks

Risk Impact (1-3) Likelihood (0-10) Risk (I * L) Mitigation
Missing features for GCC 14.1 deadline 2 3 6 Start working on required features early

Detailed changelog