GCC Rust Weekly Status Report 47

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

Milestone Progress

Last week we had several streams of work Philbert focused on bug fixing, new contributors added missing built-in attributes and macros; finally, Arthur continued his work on the privacy pass. More privacy pass primitives are being implemented, which will crossover with the handling of use statements since we need to support restricted visibility modifiers (~pub (in <path>)~).

Completed Activities

  • Implement the builtin include! macro PR1096
  • Don’t do docker image builds on forks PR1124
  • Bug fix projection substitution PR1121
  • Fix ICE during HIR lowering PR1134
  • Refactor header and cleanup PR1137
  • Support patterns in function signatures PR1138
  • Add tests for cfg! macro PR1119
  • Add name and type resolution to TuplePatterns PR1144
  • Improve doc attribute support PR1139
  • Fix bug with generic parameters in extern declarations PR1145
  • Add missing coercion rule from array to slice PR1147
  • Handle cold attribute PR1148
  • Add support for isize and usize type hints on literals PR1154
  • Add base for visibility pass PR1155
  • Support link_section attribute PR1150
  • Add support for simple visibility checks PR1157
  • Support the no_mangle attribute PR1149

Contributors this week

Overall Task Status

CategoryLast WeekThis WeekDelta
TODO128127-1
In Progress2326+3
Completed346353+7
GitHub Issues

Test Cases

CategoryLast WeekThis WeekDelta
Passing58455932+87
Failed
XFAIL2225+1
XPASS
make check-rust

Bugs

CategoryLast WeekThis WeekDelta
TODO4947-2
In Progress1313
Completed133139+6
GitHub Bugs

Milestones 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 Visibility35%45%+10%29th Mar 202227th May 2022
Const Generics0%0%30th May 202225th Jul 2022
Intrinsics0%0%6th Sept 202130th Sept 2022
GitHub Milestones

Risks

RiskImpact (1-3)Likelihood (0-10)Risk (I * L)Mitigation
Rust Language Changes3721Keep up to date with the Rust language on a regular basis
Going over target dates2510Maintain status reports and issue tracking to stakeholders

Planned Activities

  • Continue work into privacy pass
  • Continue work on metadata exports

Detailed changelog

Patterns in function parameters

As part of our bug fixing this week, we realise we could unify the code paths for handling match arms such that we can support patterns everywhere. There are bugs in code-generation for more complex patterns which need to be fixed but we are correctly name and type resolving them which is the starting point. As our support for Match Expression improves over time so will our support for patterns.

struct Pattern(i32);

fn pattern_as_arg(Pattern(value): Pattern) -> i32 {
    value
}

fn main() -> i32 {
    pattern_as_arg(Pattern(15)) - 15
}

Leave a Reply

Your email address will not be published. Required fields are marked *