-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Description
Summary
Original issue: rust-lang/rust-project-goals#332
Documentation: https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#build-analysis
Project goal: rust-lang/rust-project-goals#398
The -Zbuild-analysis feature records and persists detailed build metrics (timings, rebuild reasons, etc.) across runs, with new commands to query past builds.
Considerations for stabilization
- Review the JSON schemas we exposed are reasonable (especially rebuild reason which has lots of variants)
- JSON schema evolution
Unresolved Issues
See the unresolved design questions in the design doc: https://hackmd.io/K5-sGEJeR5mLGsJLXqsHrw?view#Unresolved-questions.
Future Extensions
No response
Implementations
See the design doc: https://hackmd.io/K5-sGEJeR5mLGsJLXqsHrw
- Nightly feature gate and configuration feat(unstable): add -Zbuild-analysis unstable feature #15845
- Storage infrastructure, storage path, migration, etc. feat(build-analysis): JSONL-based logging infra #16150
- Collecting metrics
- Collect build metadata feat(build-analysis): JSONL-based logging infra #16150
- Collect CLI args (so people know what they've run)
- Collect timing data
timing-infoevent feat(build-analysis): emit timing-info log #16179 - Collect rebuild reason data feat(build-analysis): emit rebuild reason log entry #16203
- Set up new unstable
cargo reportsubcommands-
cargo report timing -
cargo report rebuild-reason
-
- benchmark the build performance impact
About tracking issues
Tracking issues are used to record the overall progress of implementation.
They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions.
A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature.
Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status