Skip to main content
Thank you for your interest in contributing to Rust! There are many ways to contribute and we appreciate all of them.

Getting Started

The best way to get started is by asking for help in the #new members Zulip stream. We have extensive documentation on how to get started on your own, but the Zulip stream is the best place to ask for help.
New to Rust development? The rustc-dev-guide is your comprehensive resource for understanding how the compiler works and how to contribute effectively.

Essential Resources

rustc-dev-guide

Documentation for contributing to the compiler or tooling

std-dev-guide

Documentation for the standard library development

Rust Zulip

Chat platform for getting help and finding mentors

Internals Forum

Discuss Rust internals and development

Understanding the Ecosystem

The rustc-dev-guide is meant to help document how rustc (the Rust compiler) works, as well as to help new contributors get involved in rustc development. It is recommended that you read and understand the rustc-dev-guide before making a contribution.
The guide talks about the different bots in the Rust ecosystem, the Rust development tools, bootstrapping, the compiler architecture, source code representation, and more.

Key Topics Covered

  • Bots and Automation: Understanding the various bots like bors that manage the Rust development workflow
  • Development Tools: Learning about x.py, the build system, and other essential tools
  • Bootstrapping: How the Rust compiler builds itself
  • Compiler Architecture: The structure and design of rustc
  • Source Code Representation: How Rust code is represented internally

Ways to Contribute

Code Contributions

  • Fix bugs and implement features in the compiler
  • Improve the standard library
  • Enhance tooling (Cargo, rustfmt, Clippy, rust-analyzer)
  • Add platform support

Non-Code Contributions

  • Improve documentation
  • Write tests
  • Triage issues
  • Review pull requests
  • Help others in the community

Working with Subtrees and Submodules

For submodules, changes need to be made against the repository corresponding to the submodule, and not the main rust-lang/rust repository.
For subtrees, prefer sending a PR against the subtree’s repository if it does not need to be made against the main rust-lang/rust repository (e.g., a rustc-dev-guide change that does not accompany a compiler change).

Getting Help

There are multiple platforms where you can get help when you’re stuck: The Rust Zulip is the recommended platform for asking questions. Key streams include:
  • #new members: Perfect for newcomers
  • #t-compiler: Compiler development discussions
  • #contribute: General contribution questions

Internals Forum

The Rust Internals forum is great for longer-form discussions and RFCs.
You can learn more about asking questions and getting help in the Asking Questions chapter of the rustc-dev-guide.

Bug Reports

Did a compiler error message tell you to come here? If you want to create an ICE (Internal Compiler Error) report:
1

Gather Information

Collect the error message, your Rust version, and a minimal reproducible example
2

Check Existing Issues

Search the issue tracker to see if it’s already reported
3

Open an Issue

Use the issue template to create a detailed bug report
For more details, refer to the bug reports section in the rustc-dev-guide.

Next Steps

Development Setup

Set up your development environment

Contribution Workflow

Learn the workflow for submitting changes

Testing Guidelines

Understand how to write and run tests

Code of Conduct

Review our community standards

Build docs developers (and LLMs) love