-
Notifications
You must be signed in to change notification settings - Fork 71
Open
Labels
T-compilerAdd this label so rfcbot knows to poll the compiler teamAdd this label so rfcbot knows to poll the compiler teammajor-changeA proposal to make a major change to rustcA proposal to make a major change to rustc
Description
Proposal
I propose adding a new in-tree tool, repro-check, to the rust-lang/rust repository. It allows developers to easily verify if Rust compiler builds are reproducible.
This is an MCP because it adds a new tool to src/tools/ and integrates with the bootstrap system (x.py).
The implementation is available in PR rust-lang/rust#149888.
Motivation
Currently, checking if compiler builds are reproducible is a manual, error-prone process. We lack an in-tree tool to automatically compare builds and pinpoint differences. This tool aims to solve that by automating the comparison.
Design and Usage
The source is located at src/tools/repro-check.
The tool is registered in x.py, allowing it to run within the existing workflow. When executed, it:
- Builds the compiler twice (Stage 2 by default) in separate directories.
- Compares artifacts byte-for-byte (SHA-256).
- Generates an HTML report highlighting identical vs. differing files.
Impact and Maintenance
- Status: Experimental, opt-in tool for local development.
- CI Impact: None. It does not run on PR CI.
- Future direction: Eventually, we want to run this automatically to detect regressions (e.g., in Nightly or Release builds). We will gather data and evaluate infrastructure costs before proposing any automation.
- Maintenance: Discussed with @Kobzol and the Infra team. We plan to merge this as an experiment.
Non-goals (for now)
- No automatic execution in CI.
- Does not block PRs or releases.
- Does not analyze the root cause of differences, only reports them.
References
- Implementation PR: #149888
- Tracking Issues: #134589, #139793
- Zulip: Checking reproducibility of rustc
sundeep-kokkonda
Metadata
Metadata
Assignees
Labels
T-compilerAdd this label so rfcbot knows to poll the compiler teamAdd this label so rfcbot knows to poll the compiler teammajor-changeA proposal to make a major change to rustcA proposal to make a major change to rustc