-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Open
Labels
A-build-executionArea: anything dealing with executing the compilerArea: anything dealing with executing the compilerA-layoutArea: target output directory layout, naming, and organizationArea: target output directory layout, naming, and organizationC-feature-requestCategory: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted`Category: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted`C-tracking-issueCategory: A tracking issue for something unstable.Category: A tracking issue for something unstable.PerformanceGotta go fast!Gotta go fast!S-needs-mentorStatus: Issue or feature is accepted, but needs a team member to commit to helping and reviewing.Status: Issue or feature is accepted, but needs a team member to commit to helping and reviewing.
Description
Summary
Implementation:
- Do not lock the artifact-dir for check builds + fix uplifting #16307
- Implement fine grain locking for
build-dir#16155
Known issues
- Only non-artifact-producing commands (like
check) can run in parallel
Unresolved Issues
- Stabilization of Re-organize build-dir by package + hash, rather than artifact type #15010
- Do we need rlimit checks and dynamic rlimits? Implement fine grain locking for
build-dir#16155 (comment) - If there is shared build unit (same ID) with a dirty fingerprint when two
checks run, one will block until the other has finished (all units, not just the shared unit) and will rebuild that unit - Blocking prevents other units from being built on that thread
- Proper handling of blocking message (Implement fine grain locking for
build-dir#16155 (comment))- We get the blocking message when taking the initial shared lock, but we get no message when taking the exclusive lock right before compiling.
Future Extensions
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.
Original issue:
Right now whenever a build happens we lock the entirety of the target directory for the whole build, but it may be possible for us to have a more granular locking strategy which allows multiple instances of Cargo to proceed in parallel instead of serializing them.
Expurple, stefnotch, appleGun22, mar1o9 and CathalMullan
Metadata
Metadata
Assignees
Labels
A-build-executionArea: anything dealing with executing the compilerArea: anything dealing with executing the compilerA-layoutArea: target output directory layout, naming, and organizationArea: target output directory layout, naming, and organizationC-feature-requestCategory: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted`Category: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted`C-tracking-issueCategory: A tracking issue for something unstable.Category: A tracking issue for something unstable.PerformanceGotta go fast!Gotta go fast!S-needs-mentorStatus: Issue or feature is accepted, but needs a team member to commit to helping and reviewing.Status: Issue or feature is accepted, but needs a team member to commit to helping and reviewing.
Type
Projects
Status
No status