Rust-GCC

@Rust-GCC

GCC Front-End for Rust

Public team

Joined on Apr 9, 2021

  • 🟢 🟠 🔴 Goals for 15.1 We need to prioritize and milestone-ize what is absolutely needed for compiling core and RfL. For example, Issue 2032 concerns invalid Rust code that should be checked against, but that is not present in either core or RfL as these two projects only contain valid Rust code - hence, it is low priority and will not appear on this document. Rust for Linux We want to be able to provide an experimentation platform for RfL developers. This means that the compiler may not be completely able to compile RfL, but at least able to be experimented with. This requires core support.
     Like  Bookmark
  • 🟢 🟠 🔴 Goals for 15.1 We need to prioritize and milestone-ize what is absolutely needed for compiling core and RfL. For example, Issue 2032 concerns invalid Rust code that should be checked against, but that is not present in either core or RfL as these two projects only contain valid Rust code - hence, it is low priority and will not appear on this document. Rust for Linux We want to be able to provide an experimentation platform for RfL developers. This means that the compiler may not be completely able to compile RfL, but at least able to be experimented with. This requires core support.
     Like  Bookmark
  • Rewrite Rust lints to operate on our frontend's HIR instead of using GCC's existing infrastructure Our frontend has mutliple lint passes (mark-live, scanning for dead code, unused variables...) which are currently implemented by making use of existing GCC middle-end passes. However, this approach poses certain issues for our frontend, and we would like to instead implement these passes using our frontend's internal representation, and more specifically our HIR. To facilitate writing these lints, you will first need to introduce a new base HIR visitor class which will allow you to avoid repeating yourself with boilerplate visitor pattern code. Once this is done, you will need to reimplement existing lints to work using this new base visitor class. If time permits, it would be helpful to rewrite other HIR passes to make use of the new visitor framework you will introduce. This can be both a medium-sized or large project. Complete name resolution pass rewrite In order to handle complex imports and exports in the Rust programming language, we have started a rewrite of our name-resolution pass with a new data-structure and a new algorithm for resolving uses. We are planning to get the new algorithm to a working state by Spring 2025, but this rewrite will still be missing some of the features of the old name-resolver. Your goal will be to take care of these features and help us get the name-resolution rewrite to feature-parity with our old algorithm.
     Like  Bookmark
  • Mailing list: https://gcc.gnu.org/mailman/listinfo/gcc-rust Zulip: https://gcc-rust.zulipchat.com/ IRC: irc.oftc.net #gccrust Video Link: https://meet.jit.si/gccrs-community-call-february Agenda Project Reporthttps://rust-gcc.github.io/2025/02/06/2025-01-monthly-report.html What are we working on
     Like  Bookmark
  • Mailing list: https://gcc.gnu.org/mailman/listinfo/gcc-rust Zulip: https://gcc-rust.zulipchat.com/ IRC: irc.oftc.net #gccrust Video Link: https://meet.jit.si/gccrs-community-call-january Agenda Project updatehttps://rust-gcc.github.io/2025/01/07/2024-12-monthly-report.html Milestones Future work
     Like  Bookmark
  • Mailing list: https://gcc.gnu.org/mailman/listinfo/gcc-rust Zulip: https://gcc-rust.zulipchat.com/ IRC: irc.oftc.net #gccrust Video Link: https://meet.jit.si/gccrs-community-call-december Agenda Project ReportsMonthly reporthttps://rust-gcc.github.io/2024/12/02/2024-11-monthly-report.html What are we working on
     Like  Bookmark
  • Rolling agenda. 2024-11-18 repr(align) and repr(packed) do not workhttps://godbolt.org/z/rornPra3c Nobel will open issues on gccrs repo Cannot convert pointer types to integer types ptr as usize doesn't work Same for float to integer and vice versa
     Like  Bookmark
  • Mailing list: https://gcc.gnu.org/mailman/listinfo/gcc-rust Zulip: https://gcc-rust.zulipchat.com/ IRC: irc.oftc.net #gccrust Video Link: https://meet.jit.si/gccrs-community-call-november Agenda Changing the repository's structure for easier fork updates Project ReportsMonthly report What are we working on
     Like  Bookmark
  • This is a guest post from the gccrs project, at the invitation of Rust Project, to clarify the relationship with the Rust Project and the opportunities for collaboration. gccrs is a work-in-progress alternative compiler for Rust being developed as part of the GCC project. GCC is a collection of compilers for various programming languages that all share a common compilation framework. You may have heard about gccgo, gfortran, or g++, which are all binaries within that project, the GNU Compiler Collection. The aim of gccrs is to add support for the Rust programming language to that collection, with the goal of having the exact same behavior as rustc. First and foremost, gccrs was started as a project because it is fun. Compilers are incredibly rewarding pieces of software, and are great fun to put together. The project was started back in 2014, before Rust 1.0 was released, but was quickly put aside due to the shifting nature of the language back then. Around 2019, work on the compiler started again, led by Philip Herron and funded by Open Source Security and Embecosm. Since then, we have kept steadily progressing towards support for the Rust language as a whole, and our team has kept growing with around a dozen contributors working regularly on the project. We have participated in the Google Summer of Code program for the past four years, and multiple students have joined the effort. The main goal of gccrs is to provide an alternative option for compiling Rust. GCC is an old project, as it was first released in 1987. Over the years, it has accumulated numerous contributions and support for multiple targets, including some not supported by LLVM, the main backend used by rustc. A practical example of that reach is the homebrew Dreamcast scene, where passionate engineers develop games for the Dreamcast console. Its processor architecture, SuperH, is supported by GCC but not by LLVM. This means that Rust is not able to be used on those platforms, except through efforts like gccrs or the rustc-codegen-gcc backend - whose main differences will be explained later. GCC also benefits from the decades of software written in unsafe languages. As such, a high amount of safety features have been developed for the project as external plugins, or even within the project as static analyzers. These analyzers and plugins are executed on GCC's internal representations, meaning that they are language-agnostic, and can thus be used on all the programming languages supported by GCC. Likewise, many GCC plugins are used for increasing the safety of critical projects such as the Linux kernel, which has recently gained support for the Rust programming language. This makes gccrs a useful tool for analyzing unsafe Rust code, and more generally Rust code which has to interact with existing C code. We also want gccrs to be a useful tool for rustc itself by helping pan out the Rust specification effort with a unique viewpoint - that of a tool trying to replicate another's functionality, oftentimes through careful experimentation and source reading where the existing documentation did not go into enough detail. We are also in the process of developing various tools around gccrs and rustc, for the sole purpose of ensuring gccrs is as correct as rustc - which could help in discovering surprising behavior, unexpected functionality, or unspoken assumptions.
     Like  Bookmark
  • Mailing list: https://gcc.gnu.org/mailman/listinfo/gcc-rust Zulip: https://gcc-rust.zulipchat.com/ IRC: irc.oftc.net #gccrust Video Link: https://meet.jit.si/gccrs-community-call-september Agenda Project ReportsMonthly report What are we working on Questions
     Like  Bookmark
  • Rolling agenda. Proposal Upcoming absences: Pierre-Emmanuel: 2024-06-24 Thomas: 2024-08-14/26 Goals
     Like 1 Bookmark
  • Rolling agenda. 2024-08-23 Actions: Arthur to review #3122 2024-08-16 PR 3130rebased with master recently let's add it to the merge queue
     Like  Bookmark
  • Rolling agenda. 2024-08-14 Jasmine to put together a hackmd to ask GCC community for help on debugging the GENERIC/GIMPLE issue 2024-08-08 Investigate side-effect 2024-08-01 bdbt: failure on CompileExpr::Compile for asm_construct_outputs in resolve paths, why do we need to resolve path of an expr? and why typecheck
     Like  Bookmark
  • Mailing list: https://gcc.gnu.org/mailman/listinfo/gcc-rust Zulip: https://gcc-rust.zulipchat.com/ IRC: irc.oftc.net #gccrust Video Link: https://meet.jit.si/gccrs-community-call-august Agenda Project ReportsMonthly report What are we working on Questions
     Like 1 Bookmark
  •  Like  Bookmark
  • Add new sections at the top of the file, to avoid having to scroll down 3 kilometers of text in a couple weeks. Add a new section for each weekly meeting if necessary. If you would like to bring up a topic to the next weekly meeting, create the section for this meeting and add your topic to it. Actions are a list of actions we will establish at the end of the weekly meeting, if any, for us to handle during the next weekly call. 2024-07-22 Oof, 4 months without adding to the agenda :grimacing: Nobel Singh to start working on the gccrs semantics GSoC project, not as a GSoC student but as a regular contributorWill have bi-weekly syncups for that project, on monday mornings work this week: lang items and name resolution
     Like  Bookmark
  • Mailing list: https://gcc.gnu.org/mailman/listinfo/gcc-rust Zulip: https://gcc-rust.zulipchat.com/ IRC: irc.oftc.net #gccrust Video Link: https://meet.jit.si/gccrs-community-call-july Agenda Project ReportsMonthly report What are we working on Questions
     Like  Bookmark
  • Mailing list: https://gcc.gnu.org/mailman/listinfo/gcc-rust Zulip: https://gcc-rust.zulipchat.com/ IRC: irc.oftc.net #gccrust Video Link: https://meet.jit.si/gccrs-community-call-june Agenda Project ReportsMonthly report What are we working on Questions
     Like  Bookmark
  • Mailing list: https://gcc.gnu.org/mailman/listinfo/gcc-rust Zulip: https://gcc-rust.zulipchat.com/ IRC: irc.oftc.net #gccrust Video Link: https://meet.jit.si/gccrs-community-call-april Agenda Project ReportsMonthly report What are we working on Questions
     Like  Bookmark
  • Mailing list: https://gcc.gnu.org/mailman/listinfo/gcc-rust Zulip: https://gcc-rust.zulipchat.com/ IRC: irc.oftc.net #gccrust Video Link: https://meet.jit.si/gccrs-community-call-march Agenda Project ReportsMonthly report What are we working on Monthly report
     Like  Bookmark