GCC Rust Weekly Status Report 52

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

Milestone Progress

This week we saw major improvements in our name resolution pass, which got improved with many new features and refactored greatly. This is the result of a long standing issue regarding super, crate and self paths, which Philip decided to tackle this week. On the other hand, Arthur worked on making an online dashboard, whose goal is to provide an easy way to view and track our progress using our testing project. The application will be unveiled as early as possible, once some more issues have been figured out.

Our GSoC students have done very good work integrating with the community and have started working on their respective projects. We are really excited to see what they’ll produce and hope they’ll have fun.

Philip will be on vacation for the next two weeks, taking some well-deserved rest in order to come back even stronger.

The Imports and Visibility milestone is in a reasonable state and we are starting work on the various const expressions and contexts we are expected to support. We are also moving away slightly from the “milestone” project model, as we would like to get closer and closer to compiling an earlier version of libcore this summer.

Completed Activities

  • Handler super and crate in path resolution PR1307
  • Fix lexing of empty comments continuing till next line PR1309
  • docker: Fix GCCRS_BUILD info PR1300
  • rust/lex: skip broken string expression PR1299
  • rust/intrinsic: add a basic size check for `transmute` PR1298
  • AST Dump impl traits PR1295
  • Add new mappings for items within a module PR1294
  • Fixup name canonicalization for impl blocks PR1293
  • Add name resolution to for loops PR1292
  • Fix bad impl item overlap check PR1291
  • Reformat copyright header in rust-parse-impl.h PR1290
  • docker: Add commit information to Docker image PR1288
  • Add AST dump visitor PR1287
  • Marklive: support arrayindex PR1284
  • Add mirror branch for gccrs on https://gcc.gnu.org/git/ Issue #143
  • Add new rust component and new version rust/master to GCC Bugzilla: Bug List

Contributors this week

Overall Task Status

CategoryLast WeekThis WeekDelta
TODO146147+1
In Progress2629+3
Completed381387+5
GitHub Issues

Test Cases

CategoryLast WeekThis WeekDelta
Passing63016353+52
Failed
XFAIL2530+7
XPASS
make check-rust

Bugs

CategoryLast WeekThis WeekDelta
TODO5454
In Progress1212
Completed163167+4
GitHub Bugs

Milestone Progress

MilestoneLast WeekThis WeekDeltaStart DateCompletion DateTarget
Data Structures 1 – Core100%100%30th Nov 202027th Jan 202129th Jan 2021
Control Flow 1 – Core100%100%28th Jan 202110th Feb 202126th Feb 2021
Data Structures 2 – Generics100%100%11th Feb 202114th May 202128th May 2021
Data Structures 3 – Traits100%100%20th May 202117th Sept 202127th Aug 2021
Control Flow 2 – Pattern Matching100%100%20th Sept 20219th Dec 202129th Nov 2021
Macros and cfg expansion100100%1st Dec 202131st Mar 202228th Mar 2022
Imports and Visibility72%83%+12%29th Mar 202227th May 2022
Const Generics0%0%30th May 202229th Aug 2022
Intrinsics0%0%6th Sept 202230th Sept 2022
GitHub Milestones

Planned Activities

  • GSoC: Keep porting more const evaluation functions
  • GSoC: Keep working on improving our HIR dump
  • Keep working on our testsuite dashboard
  • Look into const generics parsing issues

Detailed changelog

super and crate path handling

Our name resolution and module handling components could previously not resolve complex relative paths such as crate::foo::bar or super::super::super::foo. This is now fixed by adding proper module tree handling and improving our path resolution pass.

mod a {
    pub fn foo() {}
}

mod b {
    pub fn foo() {
        // go UP in the hierarchy, then DOWN and DOWN
        super::a::foo();
    }
}

mod foo {
    pub struct bar(pub i32);
}

             // Go to the root of the module tree, then DOWN and DOWN
fn test() -> crate::foo::bar {
    foo::bar(123)
}

Leave a Reply

Your email address will not be published.