Thanks again to Open Source Security, inc and Embecosm for their ongoing support for this project.
We have had an influx of potential GSoC applicants this month, with lots of new people joining our Zulip channel and GitHub repository. They have submitted a large number of pull-requests, and have started heavily participating in the compiler development chat - which we are really happy about! The potential applicants seem very motivated and eager to work on the project, which is very nice to see. Thank you all for your interest!
As a consequence, the amount of contributions has picked up - similarly to past years around this period. This increases our review load, but is also very productive.
On the upstream side, the tooling we had been working on is working nicely and speeding up the creation and testing of these commits. We are still going to improve it, but it is already proving to be useful. Since last month, we have upstreamed two patchsets in three weeks, with one more patchset being prepared for this week. This has enabled us to catch some minor issues we would not have discovered until much later, thanks to the wide range of architectures used by the GCC community.
Regarding technical contributions, progress continued on the borrow
checker with multiple large pull-requests from Jakub currently being
reviewed. These pull-requests concern the addition of variance analysis
to the project, as well as the emission of more facts for the
polonius-engine
crate.
We have also made great progress on format_args!()
, with the proper
expansion of these macro invocations to their runtime components. Once
these components are properly generated, it is relatively easy to
implement the famous println!()
macro - iterate on those components,
calling the associated formatting function each time, and using stdout
as a writer. Thanks to the work done by Philip on iterators, we are now
able to have a functioning, but unoptimized println!()
with gccrs -
which is a huge milestone! Please note that the real println!()
macro
is a member of the std
crate, not core
, as it relies on dynamic
allocation and locking in order to ensure a fast and safe access to the
global operating system output streams.
A couple issues remain around the parsing of the format_args!()
arguments, but we are expecting to take care of them soon. We will have
to polish the integration of the Rust component responsible for parsing
the format_args!()
invocation, as there are build system subtleties to
take in account.
We will soon get in touch with the GCC release maintainers in order to prepare this upcoming release, with the expectation of our frontend being part of GCC 14.1.
We would like to remind our readers that Jakub
Dupak, one of our contributors working on
integrating the polonius
borrow-checker to gccrs, is currently
finishing studying for his Master’s Degree and is looking for
sponsorship to continue his work on the borrow checker. Please get in
touch if you or your company would be interested in funding his work!
We will have our next monthly community call on the 18th of March 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.
This is a new section for particularly easy or interesting issues we would like folks external to the project to contribute to. We are available for mentoring and guiding you on their resolution. This is a great way to start making your mark on a complex project such as this one and to learn a lot in the process!
Derive macros (invoked through the #[derive(...)]
attribute) should
only be applied on type declarations - new structures, enumerations or
unions. We need to report an error to the user when they try using such
a macro on a non-type-declaration element - such as a function or trait.
The provided playground link (see the issue) showcases the expected behavior. The code it contains will need to be added as a test case to the project, with other test cases welcome.
This contribution will touch on our AST, our highest level intermediate representation in the compiler.
Check out our Contributing guidelines to get started on them or feel free to send us a message on Zulip or IRC!
Category | Last Month | This Month | Delta |
---|---|---|---|
TODO | 266 | 276 | +10 |
In Progress | 66 | 74 | +8 |
Completed | 798 | 812 | +14 |
TestCases | Last Month | This Month | Delta |
---|---|---|---|
Passing | 8365 | 8402 | +37 |
Failed | - | - | - |
XFAIL | 69 | 69 | - |
XPASS | - | - | - |
Category | Last Month | This Month | Delta |
---|---|---|---|
TODO | 95 | 97 | +2 |
In Progress | 36 | 37 | +1 |
Completed | 406 | 411 | +5 |
Milestone | Last Month | This Month | Delta | Start Date | Completion Date | Target |
---|---|---|---|---|---|---|
GCC 14.1 Release | 0% | 71% | +71% | TBD | - | 15th Apr 2024 |
AST Pipeline for libcore 1.49 | 78% | 82% | +4% | 13th Apr 2023 | - | 15th Apr 2024 |
HIR Pipeline for libcore 1.49 | 69% | 72% | +3% | 13th Apr 2023 | - | TBD |
core 1.49 functionality [AST] | 4% | 8% | +4% | 1st Jul 2023 | - | 15th Apr 2025 |
formatargs!() support | 0% | 60% | +60% | 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 |
Procedural Macros 2 | 57% | 57% | - | TBD | - | 15th Dec 2024 |
Borrow Checking 2 | 0% | 0% | - | 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 |
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% | - |
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 |