Skip to content

Tracking issue for stabilizing "pipelined compilation" #60988

Closed
@alexcrichton

Description

@alexcrichton

This issue is intended to be an overall tracking issue for stabilizing the recently implemented feature of "pipelined compilation". This tracking issue spans both Cargo and rustc, as support currently lives in both. It also builds on top of a number of other tracking issues, since they're unstable features used to implement pipelined compilation!

For a bit of background, pipelined compilation has an initial set of notes about its implementation and initially had these tracking issues:

Currently today everything is implemented and available in nightly rustc. There is a thread on internals which is tasked with gaining user experience about pipelining and see the performance impact. A collation of these measurements is quite promising and I feel personally is convincing enough to push on stabilizing all the sub-features!

Known blockers for stabilization:

  • -Z emit-artifact-notifications - this is how Cargo learns the moment metadata is ready.
  • --json-rendered - this is how Cargo continues to provide pretty error messages.
  • There is no way to combine --message-format=short in Cargo with pipelining. The compiler currently has --error-format=json|short|human, but for this feature in Cargo we'll need something like --error-format=short-json or something like that. Basically some way to request that the rendered field in the JSON diagnostic is a "short message", not the long one.
  • Cargo pipelining is known to break with sccache, this should be investigated and fixed one way or another. (fixed in Cache rmeta files whenever metadata is present in emit. mozilla/sccache#441)
  • Pipelining fails with the RLS due to multiple --error-format flags (fixed in Update RLS #62176)

Possible future work:

  • Should we game out what a "fully pipelined" story might look like? What if rustc blocked waiting for Cargo to tell it to proceed into the linking phase?

Metadata

Metadata

Assignees

No one assigned

    Labels

    B-unstableBlocker: Implemented in the nightly compiler and unstable.C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCI-compiletimeIssue: Problems and improvements with respect to compile times.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions