Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Repositories maintained by the Compiler Team

While the rust-lang/rust repository has the majority of the code for the compiler, there are a handful of additional repositories with other crates/dependencies that the compiler team are responsible for:

To ensure that the team is able to respond to urgent issues that originate in any of these repositories, all members of the compiler team have access to create and merge pull requests. However, each repository typically has team members who are the most familiar with the repository and act as its primary maintainers.

  • The rustc development guide, the entrypoint documentation for those interested in hacking the compiler.
  • The repository of the team itself, used to register proposals for changes to the compiler or adjacent tooling and components.
  • A cranelift experimental rustc backend, based on Cranelift. This has the potential to improve compilation times in debug mode. Currently maintained by bjorn3.
  • A Rust port of the LLVM::APFloat library, maintained by the compiler team. As a port of an LLVM library, this repository has subtly different licensing arrangements than our other repositories, see rustc_apfloat#licensing.
  • A fork of Enzyme, a high-performance automatic differentiator of LLVM and MLIR (more info at this link). This fork is maintained by ZuseZ4.
  • thorin, a DWARF packaging utility supporting GNU extension and DWARF 5 package formats. Primarily maintained by davidtwco.
  • The Rust Forge, the documentation website you’re reading. Co-maintained by the Rust project collectively.
  • ar_archive_writer: Like the other LLVM::APFloat library, its license is slightly different than our other repositories, see ar_archive_writer#licensing.
  • datafrog, a lightweight Datalog engine intended to be embedded in other Rust programs (TODO: status?)
  • ena is an implementation of union-find / congruence-closure in Rust, contains the underlying implementation of our inference variable tables: it’s responsible to track the instantiation and merging of inference variables.
  • literal-escaper is a library to unescape string literals. It is used by rustc_lexer and proc_macro.
  • miri is the interpreter for Rust’s mid-level intermediate representation. Detects unsafe code that fails to uphold its safety requirements.
  • measureme is a library for recording and serializing rustc events to a binary format. Currently only for internal use within rustc itself.
  • odht is a crate for hash tables that can be mapped from disk into memory without up-front decoding. Currently only for internal use within rustc itself.
  • rustc-demangle: Demangling for rustc symbols (documentation).
  • rustc-hash is a non-cryptographic hashing algorithm used by rustc
  • rustc-rayon is a fork of the Rayon data parallelism library for Rust. This is part of an ongoing effort to parallelize the rustc compilation, see our working areas.
  • rustc-stable-hash is a cross-platform, deterministic and not secure hashing algorithm used by rustc.
  • stacker a library to help grow the stack when it runs out of space, see documentation.

Other repositories with tools for internal use:

  • cargo-bisect: a tool to bisect regressions in the rust compiler, very useful to find where a bug was introduced.
  • We have a calendar where we all teams register their meetings. Calendar clients can pull the .ics files and receive updates.
  • jobserver-rs: an implementation of the GNU Make jobserver for Rust, see documentation.
  • josh-sync: a library to perform Just One Single History synchronizations (pull and push) of Josh subtrees in the rust-lang/rust repository.

If you want to start (or are already) contributing to the Rust project and you have expertise or interest in any of these repositories, feel free to get in touch!