-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
2023-12-monthly: Add monthly report for December
- Loading branch information
1 parent
ab240c8
commit 0863382
Showing
1 changed file
with
290 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,290 @@ | ||
--- | ||
layout: post | ||
title: "December 2023 Monthly report" | ||
author: Philip Herron, Pierre-Emmanuel Patry and Arthur Cohen | ||
tags: | ||
- monthly-report | ||
--- | ||
|
||
## Overview | ||
|
||
Thanks again to [Open Source Security, inc](https://opensrcsec.com/) and | ||
[Embecosm](https://www.embecosm.com/) for their ongoing support for this | ||
project. | ||
|
||
### Milestone Progress | ||
|
||
All of the required "common part" patches were reviewed this month and | ||
subsequently pushed to GCC's `trunk` branch. This allows us to move | ||
forward with updating upstream with the latest changes of our | ||
development repository. The commits are currently being tested once | ||
again one last time before a final push, which should happen this week. | ||
We will then resume work on the final parts of name resolution and | ||
handling of `format_args!()`, in order to support the required features | ||
for the GCC 14.1. release. | ||
|
||
Progress on the compiler itself slowed down this month due to holidays. | ||
Both issues we had mentioned in our "Call for Contribution" section last | ||
month are being worked on, which is great. Thanks a lot for the interest | ||
in our project. | ||
|
||
[Jakub](https://github.com/jdupak)'s work on the borrow checker is | ||
continuing, with even more facts being emitted correctly and more | ||
invalid code being caught: | ||
|
||
``` rust | ||
|
||
fn invalid_move() { | ||
// note that `A` is not `Copy` | ||
struct A { | ||
i: i32, | ||
} | ||
|
||
let a = A { i: 1 }; | ||
let b = a; // a is moved here for the first time | ||
let c = a; //~ ERROR `a` moved here for the second time | ||
} | ||
|
||
fn valid_move() { | ||
let a = 1; // integers are `Copy`, so this is allowed | ||
let b = a; | ||
let c = a; | ||
} | ||
|
||
// runtime condition invalid move | ||
fn test_move_conditional(b1: bool, b2:bool) { | ||
struct A { | ||
i: i32 | ||
} | ||
|
||
let a = A { i: 1 }; // `A` cannot be copied | ||
|
||
if b1 { | ||
let b = a; // `a` might be moved here for the first time | ||
} | ||
if b2 { | ||
let c = a; // `a` might be moved here for the second time | ||
} | ||
} | ||
``` | ||
|
||
The work done by Jakub is also starting to enforce proper lifetime | ||
bounds: | ||
|
||
``` rust | ||
|
||
fn lifetime_return_invalid<'a, 'b>(x: &'a u32, y: &'b u32) -> &'a u32 { | ||
y //~ ERROR | ||
} | ||
|
||
fn lifetime_return_valid<'a, 'b>(x: &'a u32, y: &'b u32) -> &'a u32 | ||
where 'b: 'a | ||
{ | ||
y | ||
} | ||
|
||
``` | ||
|
||
And can handle complex expressions and borrow situations: | ||
|
||
``` rust | ||
|
||
struct Reference<'a> { | ||
value: &'a i32, | ||
} | ||
|
||
impl<'a> Reference<'a> { | ||
fn new<'a>(value: &'a i32) -> Reference<'a> { | ||
Reference { value } | ||
} | ||
} | ||
|
||
fn mutable_borrow_while_immutable_borrowed_struct() { | ||
let x = 0; | ||
let y = Reference::new(&x); | ||
let z = &mut x; //~ ERROR | ||
let w = y; | ||
} | ||
``` | ||
|
||
We are looking forward to more progress on this side of the compiler, as | ||
it is an extremely important part of the Rust programming language - it | ||
is absolutely necessary that a borrow checker exists for Linux | ||
developers to start working in Rust using `gccrs`. Note that Jakub 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! | ||
|
||
Finally, Pierre-Emmanuel, Philip and Arthur will all be present at | ||
FOSDEM 2024. We are excited to meet everyone in both the Rust and GCC | ||
rooms. | ||
|
||
### Community call | ||
|
||
We will not have our monthly community call this month as we are | ||
preoccupied with upstreaming patches. 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](https://gcc.gnu.org/mailman/listinfo/gcc-rust) or | ||
join our [Zulip chat](https://gcc-rust.zulipchat.com) to be notified of | ||
upcoming events. | ||
|
||
- Calendar ID: | ||
7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894@group.calendar.google.com | ||
- [Google calendar | ||
link](https://calendar.google.com/calendar/embed?src=7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com) | ||
- [iCal | ||
link](https://calendar.google.com/calendar/ical/7060a0923ffebd3cb52b1afef35a28ff7b64f05962c9af84c23b1847f1f5f894%40group.calendar.google.com/public/basic.ics) | ||
|
||
## Call for contribution | ||
|
||
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! | ||
|
||
- No fields in initializer - Internal Compiler Error [Issue | ||
2389](https://github.com/Rust-GCC/gccrs/issues/2389) | ||
|
||
When an instance of a struct is created with missing fields, the | ||
compiler should error out and report an error - indicating which fields | ||
are missing (<https://doc.rust-lang.org/error_codes/E0063.html>). This | ||
is currently unimplemented in `gccrs`, and working on this issue will | ||
enable you to look at multiple parts of the compiler such as error | ||
reporting and typechecking. | ||
|
||
- Missing type error on function pointers with different ABIs [Issue | ||
2034](https://github.com/Rust-GCC/gccrs/issues/2034) | ||
|
||
`gccrs` should produce an error when passing a function pointer argument | ||
with a different ABI than the one expected. It is a simple check to add | ||
into our typechecker, as we already encode all necessary ABI information | ||
in our HIR. | ||
|
||
Check out our [Contributing | ||
guidelines](https://github.com/Rust-GCC/gccrs/blob/master/CONTRIBUTING.md) | ||
to get started on them or feel free to send us a message on Zulip or | ||
IRC! | ||
|
||
## Completed Activities | ||
|
||
- Refactor mangler | ||
[PR2781](https://github.com/rust-gcc/gccrs/pull/2781) | ||
- Handle \`async\` qualifier inside trait | ||
[PR2779](https://github.com/rust-gcc/gccrs/pull/2779) | ||
- TyTy: Remove deprecated FnDef API | ||
[PR2776](https://github.com/rust-gcc/gccrs/pull/2776) | ||
- Renamed \`WIN64\` to \`WIN<sub>64</sub>\` | ||
[PR2774](https://github.com/rust-gcc/gccrs/pull/2774) | ||
- Allow enabling \`\`\`lang<sub>items</sub>\`\`\` and | ||
\`\`\`no<sub>core</sub>\`\`\` features | ||
[PR2773](https://github.com/rust-gcc/gccrs/pull/2773) | ||
- Borrowck ast lifetimes | ||
[PR2771](https://github.com/rust-gcc/gccrs/pull/2771) | ||
- Minor changes needed for borrowck | ||
[PR2770](https://github.com/rust-gcc/gccrs/pull/2770) | ||
- Make default resolver inherit from default visitor | ||
[PR2763](https://github.com/rust-gcc/gccrs/pull/2763) | ||
- Make expand visitor inherit from default visitor | ||
[PR2761](https://github.com/rust-gcc/gccrs/pull/2761) | ||
- Change cfg stripper to use default visitor | ||
[PR2758](https://github.com/rust-gcc/gccrs/pull/2758) | ||
- Make function body optional and reject invalid functions during AST | ||
validation [PR2755](https://github.com/rust-gcc/gccrs/pull/2755) | ||
- Generate error for const trait functions | ||
[PR2754](https://github.com/rust-gcc/gccrs/pull/2754) | ||
- Respin the builtin PR | ||
[PR2693](https://github.com/rust-gcc/gccrs/pull/2693) | ||
- Handle newlines during string parsing while lexing | ||
[PR2684](https://github.com/rust-gcc/gccrs/pull/2684) | ||
|
||
### Contributors this month | ||
|
||
- [Kushal Pal](https://github.com/braw-lee) (new contributor!) | ||
- [Nobel Singh](https://github.com/nobel-sh) | ||
- [Nirmal Patel](https://github.com/nirmal-j-patel) | ||
- [Jakub Dupak](https://github.com/jdupak) | ||
- [Marc Poulhiès](https://github.com/dkm) | ||
- [Owen Avery](https://github.com/powerboat9) | ||
- [Raiki Tamura](https://github.com/tamaroning) | ||
|
||
### Overall Task Status | ||
|
||
| Category | Last Month | This Month | Delta | | ||
|-------------|------------|------------|-------| | ||
| TODO | 271 | 268 | -3 | | ||
| In Progress | 60 | 65 | +5 | | ||
| Completed | 777 | 784 | +7 | | ||
|
||
### Test Cases | ||
|
||
| TestCases | Last Month | This Month | Delta | | ||
|-----------|------------|------------|-------| | ||
| Passing | 8299 | 8347 | +48 | | ||
| Failed | \- | \- | \- | | ||
| XFAIL | 69 | 69 | \- | | ||
| XPASS | \- | \- | \- | | ||
|
||
### Bugs | ||
|
||
| Category | Last Month | This Month | Delta | | ||
|-------------|------------|------------|-------| | ||
| TODO | 102 | 99 | -3 | | ||
| In Progress | 33 | 37 | +4 | | ||
| Completed | 391 | 396 | +5 | | ||
|
||
### Milestones Progress | ||
|
||
| 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 | 0% | 100% | +100% | TBD | 8th Jan 2024 | 15th Aug 2023 | | ||
| AST Pipeline for libcore 1.49 | 78% | 78% | \- | 13th Apr 2023 | \- | 1st Jul 2023 | | ||
| HIR Pipeline for libcore 1.49 | 69% | 69% | \- | 13th Apr 2023 | \- | TBD | | ||
| Procedural Macros 1 | 100% | 100% | \- | 13th Apr 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 | | ||
| core 1.49 functionality \[AST\] | 4% | 4% | \- | 1st Jul 2023 | \- | 1st Nov 2023 | | ||
| Rustc Testsuite Prerequisistes | 0% | 0% | \- | TBD | \- | 1st Feb 2024 | | ||
| Intrinsics and builtins | 18% | 18% | \- | 6th Sep 2022 | \- | TBD | | ||
| Const Generics 2 | 0% | 0% | \- | TBD | \- | TBD | | ||
| Rust-for-Linux compilation | 0% | 0% | \- | TBD | \- | TBD | | ||
| GCC 14.1 Release | 0% | 0% | \- | TBD | \- | 15th Apr 2024 | | ||
| Procedural Macros 2 | 57% | 57% | \- | TBD | \- | TBD | | ||
|
||
### 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 (no<sub>std</sub>) | gccrs | 27.5% | 27.5% | \- | | ||
| rustc testsuite (no<sub>core</sub>) | gccrs | 3.8% | 3.8% | \- | | ||
| blake3 | gccrs | 25.0% | 25.0% | \- | | ||
| libcore | gccrs | 0% | 0% | \- | | ||
|
||
## Planned Activities | ||
|
||
- Opaque types | ||
- Drop marker trait | ||
|
||
### 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 |