Google Summer of Code 2021 - Rust-GCC/gccrs GitHub Wiki

As part of the GCC organisation, GCC-Rust has been accepted as a mentoring organisation within the Google Summer of Code 2021 framework. This is exciting news for eligible students around the world to add compiler development to your resume.

Please see example projects over on the GCC wiki to get started and reach out to the GCC Rust community on Zulip or email the GCC mailing list. Many other students are already there working on their first contributions.

The application period completes on April 13, 2021, where you can apply to the GCC mentoring organisation for a project for the Rust Front-end, so get your compiler hat on and start coding.

Possible Projects:

HIR and Typed HIR Dumps

Improve debugging experience by improving the existing HIR dump to include HIR mappings information akin to rustc. We can leverage work here to then emit a name and type resolution dump. This will greatly improve the debugging experience with gcc-rust. We can use the official rustc compiler as a reference here for the HIR dump. Difficulty Medium

Static Analysis:

Add more deadcode/unreachable static analysis (waqrnings) if a function is unused all functions after that point is unused. In this example bar is unused therefore foo is unused. Difficulty: Medium

fn foo() {
    ...
}

fn bar() {
    foo();
}

fn test() {
    ....
}

fn main() {
    test();
}

Currently the implementation of unused code will warn for bar being unused but we could enhance this to understand that due to bar being unused all reference under that block are unused also marking foo to also be unused. The algorithm is very basic at the moment over in:

https://github.com/Rust-GCC/gccrs/blob/master/gcc/rust/resolve/rust-ast-resolve-unused.h

Mutability warnings

In rust we could write something like:

let mut a = 123;
let b = a;

This is perfectly fine but if we add tracking or read/writes to names in the resolver we can determine that a is never written to apart from its initializer and warn that a could be made immutable.

Freezing

See issue: https://github.com/Rust-GCC/gccrs/issues/114

Mentor

Mentored by Philip Herron. Required Skills include C/C++ and finding a way through a large codebase.

Applications

Applications are submitted to the GCC Organisation over on: https://summerofcode.withgoogle.com/organizations/4718882427764736/

Student application template

Please put this information at the top of your proposal.

  • Your full name
  • University / current enrollment
  • Short bio / overview of your background and or experience
  • How can we contact you (email, GitHub username, etc.)? This information will help us associate all of your various usernames with you.
    • Email
    • GitHub username
    • Any other user name you want us to know about

Also, please use your full real name in your GSoC portal profile, so that it appears in the proposal list.

Include a section about yourself and your experience with programming, git, open-source C++ or Rust

Your project: explain your project idea, provide details and provide a rough week by week timeline it is important to consider the feasibility of your project.