Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Communicate over stderr jobserver token acquiring/releasing #67398

Closed

Conversation

Mark-Simulacrum
Copy link
Member

@Mark-Simulacrum Mark-Simulacrum commented Dec 18, 2019

This set of commits revises the jobserver communication inside rustc to always go through a shim around the real jobserver crate to allow us to inform Cargo of when tokens are intended to be acquired/released.

The Cargo side of this hasn't yet been implemented at all yet.

@Mark-Simulacrum Mark-Simulacrum added the WG-compiler-parallel Working group: Parallelizing the compiler label Dec 18, 2019
@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Dec 18, 2019
@Mark-Simulacrum
Copy link
Member Author

In theory we can land this as-is (it doesn't do anything except if -Zjobserver-token-requests is passed), but for now let's at least get a try build going so it's easier to play around with Cargo integration.

A sample run on a tiny crate with the parallel compiler enabled looks something like this; it doesn't terminate in this case as we run out of jobserver tokens (if the -Z flag is passed, they're never released by rustc itself, as it expects Cargo to handle that).

$ rustc +stage1 -Zjobserver-token-requests --error-format=json hello.rs
{"jobserver_event":"WillAcquire"}
{"jobserver_event":"WillAcquire"}
{"jobserver_event":"WillAcquire"}
{"jobserver_event":"Release"}
{"jobserver_event":"WillAcquire"}
{"jobserver_event":"Release"}
{"jobserver_event":"Release"}
...

@bors try

@bors
Copy link
Contributor

bors commented Dec 18, 2019

⌛ Trying commit 0689914 with merge db9d3a5...

bors added a commit that referenced this pull request Dec 18, 2019
Communicate over stderr jobserver token acquiring/releasing

This set of commits revises the jobserver communication inside rustc to always go through a shim around the real jobserver crate to allow us to inform Cargo of when tokens are intended to be acquired/released.

The Cargo side of this hasn't yet been implemented at all yet.
@rust-highfive
Copy link
Collaborator

The job dist-x86_64-linux-alt of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-12-18T16:00:14.1503629Z    Compiling flate2 v1.0.12
2019-12-18T16:00:16.6226463Z    Compiling rls-span v0.5.1
2019-12-18T16:00:18.4101597Z    Compiling serde_json v1.0.40
2019-12-18T16:00:22.7814766Z    Compiling rand_core v0.5.1
2019-12-18T16:00:23.3881918Z    Compiling rustc_jobserver v0.0.0 (/checkout/src/librustc_jobserver)
2019-12-18T16:00:26.4136714Z    Compiling polonius-engine v0.11.0
2019-12-18T16:00:28.4901644Z    Compiling backtrace v0.3.40
2019-12-18T16:00:30.3857576Z    Compiling rls-data v0.19.0
2019-12-18T16:00:33.9364973Z    Compiling rand_chacha v0.2.1
---
2019-12-18T16:25:45.1188695Z    Compiling flate2 v1.0.12
2019-12-18T16:25:47.4262082Z    Compiling crossbeam-deque v0.7.1
2019-12-18T16:25:48.3921265Z    Compiling polonius-engine v0.11.0
2019-12-18T16:25:48.5212961Z    Compiling chalk-engine v0.9.0
2019-12-18T16:25:49.0670451Z    Compiling rustc_jobserver v0.0.0 (/checkout/src/librustc_jobserver)
2019-12-18T16:25:50.2339892Z    Compiling backtrace v0.3.40
2019-12-18T16:25:50.2644040Z    Compiling rand_chacha v0.2.1
2019-12-18T16:25:52.4909576Z    Compiling quote v1.0.2
2019-12-18T16:25:55.8298766Z    Compiling rand v0.7.0
---
2019-12-18T16:57:53.9049093Z    Compiling rustdoc-tool v0.0.0 (/checkout/src/tools/rustdoc)
2019-12-18T16:57:54.0351869Z     Finished release [optimized] target(s) in 3m 50s
2019-12-18T16:57:54.0680354Z thread '<unnamed>' panicked at 'assertion failed: `(left != right)`
2019-12-18T16:57:54.0681945Z   left: `0`,
2019-12-18T16:57:54.0683441Z  right: `0`: jobserver must be initialized', src/librustc_jobserver/lib.rs:41:5
2019-12-18T16:57:54.0685774Z thread '<unnamed>' panicked at 'assertion failed: `(left != right)`
2019-12-18T16:57:54.0687382Z   left: `0`,
2019-12-18T16:57:54.0687382Z   left: `0`,
2019-12-18T16:57:54.0689127Z  right: `0`: jobserver must be initialized', src/librustc_jobserver/lib.rs:41:5
2019-12-18T16:57:54.0691136Z thread 'rustc' panicked at 'assertion failed: `(left != right)`
2019-12-18T16:57:54.0691767Z   left: `0`,
2019-12-18T16:57:54.0692253Z  right: `0`: jobserver must be initialized', src/librustc_jobserver/lib.rs:41:5
2019-12-18T16:57:54.0692478Z Rayon: detected unexpected panic; aborting
2019-12-18T16:57:54.3178901Z 
2019-12-18T16:57:54.3178901Z 
2019-12-18T16:57:54.3180729Z command did not execute successfully: "/checkout/obj/build/bootstrap/debug/rustdoc" "--html-after-content" "/checkout/src/doc/footer.inc" "--html-before-content" "/checkout/obj/build/x86_64-unknown-linux-gnu/doc/version_info.html" "--html-in-header" "/checkout/src/doc/favicon.inc" "--markdown-no-toc" "--index-page" "/checkout/src/doc/index.md" "--markdown-playground-url" "https://play.rust-lang.org/" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/doc" "/checkout/src/doc/index.md" "--markdown-css" "rust.css"
2019-12-18T16:57:54.3181298Z 
2019-12-18T16:57:54.3181459Z 
2019-12-18T16:57:54.3185186Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap dist --host x86_64-unknown-linux-gnu --target x86_64-unknown-linux-gnu
2019-12-18T16:57:54.3186274Z Build completed unsuccessfully in 1:35:28
2019-12-18T16:57:54.3186274Z Build completed unsuccessfully in 1:35:28
2019-12-18T16:57:54.3238209Z == clock drift check ==
2019-12-18T16:57:54.3261902Z   local time: Wed Dec 18 16:57:54 UTC 2019
2019-12-18T16:57:54.7725171Z   network time: Wed, 18 Dec 2019 16:57:54 GMT
2019-12-18T16:57:54.7726807Z == end clock drift check ==
2019-12-18T16:57:56.1420995Z 
2019-12-18T16:57:56.1521708Z ##[error]Bash exited with code '1'.
2019-12-18T16:57:56.1591109Z ##[section]Starting: Checkout
2019-12-18T16:57:56.1593116Z ==============================================================================
2019-12-18T16:57:56.1593232Z Task         : Get sources
2019-12-18T16:57:56.1593316Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@bors
Copy link
Contributor

bors commented Dec 18, 2019

💔 Test failed - checks-azure

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Dec 18, 2019
@alexcrichton
Copy link
Member

I think this should work for our own internal testing with Cargo and such, but I would be wary of shipping this. I think we'll want more integration with the actual json printing of rustc to ensure that it's all properly synchronized and runs no risk of being jumbled up. I suspect that will require refactorings of the emitter though.

Apart from that, as a separate concern but not blocking this from being shipped, I would like to see the parallelism of the backend and frontend unified, but this is something we've always known and is extremely difficult to do so until we ship parallel-by-default!

@Mark-Simulacrum
Copy link
Member Author

Okay, I will try and refactor this a bit to pull in the emitter as needed, though that'll likely be a pretty sizeable refactor I imagine. I think we should be fine since io::stderr() is what we're using here and that's internally a mutex or so I believe, but I agree that wiring in the emitter is probably a better plan.

However, one blocker for wiring this together with the emitter is that currently the emitter is a Session-specific resource vs. the jobserver Client and such being a process-global resource. I'm not sure if there's a good way to integrate those two, particularly in a situation where we have more than one rustc flying around in one process, but maybe that's not a case we need to care about? I think we don't have anything today that does so in-tree, though maybe miri etc are doing something like that (to my knowledge, rustdoc does not do this after semi-recent refactoring).

I think for proper jobserver <-> emitter support we basically need the emitter to be global but that feels not quite right either :/

@alexcrichton
Copy link
Member

Oh right so to clarify we probably don't need to do this just yet, I think it's fine to test with this.

I don't think that stderr is line-locked though, so it doesn't have quite the same semantics as println! with respect to line buffering. I'd have to double-check though.

@Mark-Simulacrum
Copy link
Member Author

Oh right so to clarify we probably don't need to do this just yet, I think it's fine to test with this.

Do you want to take a stab at implementing the Cargo side of this, or do you want me to try and take a look?

I'll work on getting the try build working regardless.

I don't think that stderr is line-locked though, so it doesn't have quite the same semantics as println! with respect to line buffering. I'd have to double-check though.

I think we don't care about line-locking in this case since we're emitting all messages in one go (i.e., within one lock) but I'd have to check myself as well :)

@alexcrichton
Copy link
Member

If you've got time to work on this in Cargo that'd be great, I'm a bit strapped at the moment!

I also agree that there's not much to worry about with this exact implementation, it's largely future-proofing I'd like to handle, but can always happen at another time.

@bors
Copy link
Contributor

bors commented Dec 20, 2019

☔ The latest upstream changes (presumably #67449) made this pull request unmergeable. Please resolve the merge conflicts.

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-7 of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-12-21T02:49:11.3440188Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-12-21T02:49:11.3455961Z ##[command]git config gc.auto 0
2019-12-21T02:49:11.3460140Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-12-21T02:49:11.3462809Z ##[command]git config --get-all http.proxy
2019-12-21T02:49:11.3474894Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/67398/merge:refs/remotes/pull/67398/merge
---
2019-12-21T02:55:14.8690094Z    Compiling serde_json v1.0.40
2019-12-21T02:55:16.5664524Z    Compiling tidy v0.1.0 (/checkout/src/tools/tidy)
2019-12-21T02:55:27.5955874Z     Finished release [optimized] target(s) in 1m 27s
2019-12-21T02:55:27.6067072Z tidy check
2019-12-21T02:55:27.9102848Z tidy error: /checkout/src/librustc_jobserver/lib.rs:235: line longer than 100 chars
2019-12-21T02:55:30.3999584Z some tidy checks failed
2019-12-21T02:55:30.4002573Z Found 485 error codes
2019-12-21T02:55:30.4004029Z Found 0 error codes with no tests
2019-12-21T02:55:30.4004397Z Done!
2019-12-21T02:55:30.4004397Z Done!
2019-12-21T02:55:30.4004722Z 
2019-12-21T02:55:30.4004986Z 
2019-12-21T02:55:30.4006229Z command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor"
2019-12-21T02:55:30.4009400Z 
2019-12-21T02:55:30.4009991Z 
2019-12-21T02:55:30.4010559Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
2019-12-21T02:55:30.4010938Z Build completed unsuccessfully in 0:01:31
2019-12-21T02:55:30.4010938Z Build completed unsuccessfully in 0:01:31
2019-12-21T02:55:30.4062910Z == clock drift check ==
2019-12-21T02:55:30.4073057Z   local time: Sat Dec 21 02:55:30 UTC 2019
2019-12-21T02:55:30.6878871Z   network time: Sat, 21 Dec 2019 02:55:30 GMT
2019-12-21T02:55:30.6885110Z == end clock drift check ==
2019-12-21T02:55:32.0591595Z 
2019-12-21T02:55:32.0707993Z ##[error]Bash exited with code '1'.
2019-12-21T02:55:32.0739264Z ##[section]Starting: Checkout
2019-12-21T02:55:32.0741496Z ==============================================================================
2019-12-21T02:55:32.0741577Z Task         : Get sources
2019-12-21T02:55:32.0741629Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@bors
Copy link
Contributor

bors commented Dec 23, 2019

☔ The latest upstream changes (presumably #67540) made this pull request unmergeable. Please resolve the merge conflicts.

@Mark-Simulacrum Mark-Simulacrum added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Dec 23, 2019
@rust-highfive
Copy link
Collaborator

The job mingw-check of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-12-23T13:16:37.6123473Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-12-23T13:16:37.6135699Z ##[command]git config gc.auto 0
2019-12-23T13:16:37.6139396Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-12-23T13:16:37.6143309Z ##[command]git config --get-all http.proxy
2019-12-23T13:16:37.6146963Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/67398/merge:refs/remotes/pull/67398/merge
---
2019-12-23T13:22:45.9805256Z     Checking rustc_apfloat v0.0.0 (/checkout/src/librustc_apfloat)
2019-12-23T13:22:46.1989660Z    Compiling quote v1.0.2
2019-12-23T13:22:46.7664173Z     Checking flate2 v1.0.12
2019-12-23T13:22:47.3808908Z     Checking rand_core v0.5.1
2019-12-23T13:22:47.6841254Z     Checking rustc_jobserver v0.0.0 (/checkout/src/librustc_jobserver)
2019-12-23T13:22:48.3889485Z     Checking serde_json v1.0.40
2019-12-23T13:22:48.5144692Z     Checking polonius-engine v0.11.0
2019-12-23T13:22:49.8632322Z     Checking chalk-engine v0.9.0
2019-12-23T13:22:51.8468763Z     Checking backtrace v0.3.40
---
2019-12-23T13:23:52.5340575Z     Checking rustc_errors v0.0.0 (/checkout/src/librustc_errors)
2019-12-23T13:23:52.6377931Z error[E0433]: failed to resolve: could not find `static_assert_size` in `rustc_data_structures`
2019-12-23T13:23:52.6378779Z   --> src/librustc_errors/lib.rs:47:24
2019-12-23T13:23:52.6379282Z    |
2019-12-23T13:23:52.6379612Z 47 | rustc_data_structures::static_assert_size!(PResult<'_, bool>, 16);
2019-12-23T13:23:52.6380076Z 
2019-12-23T13:23:53.2422071Z error: aborting due to previous error
2019-12-23T13:23:53.2423013Z 
2019-12-23T13:23:53.2423382Z For more information about this error, try `rustc --explain E0433`.
2019-12-23T13:23:53.2423382Z For more information about this error, try `rustc --explain E0433`.
2019-12-23T13:23:53.2482712Z error: could not compile `rustc_errors`.
2019-12-23T13:23:53.2505765Z warning: build failed, waiting for other jobs to finish...
2019-12-23T13:23:55.2913485Z error: build failed
2019-12-23T13:23:55.2940928Z command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "check" "-Zconfig-profile" "--target" "x86_64-unknown-linux-gnu" "-Zbinary-dep-depinfo" "-j" "2" "--release" "--color" "always" "--features" " llvm" "--manifest-path" "/checkout/src/rustc/Cargo.toml" "--message-format" "json-render-diagnostics"
2019-12-23T13:23:55.2949266Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap check
2019-12-23T13:23:55.2949649Z Build completed unsuccessfully in 0:03:56
2019-12-23T13:23:55.3001742Z == clock drift check ==
2019-12-23T13:23:55.3015936Z   local time: Mon Dec 23 13:23:55 UTC 2019
2019-12-23T13:23:55.3015936Z   local time: Mon Dec 23 13:23:55 UTC 2019
2019-12-23T13:23:55.3552748Z   network time: Mon, 23 Dec 2019 13:23:55 GMT
2019-12-23T13:23:55.3556882Z == end clock drift check ==
2019-12-23T13:23:56.7048501Z 
2019-12-23T13:23:56.7157458Z ##[error]Bash exited with code '1'.
2019-12-23T13:23:56.7184476Z ##[section]Starting: Checkout
2019-12-23T13:23:56.7185924Z ==============================================================================
2019-12-23T13:23:56.7185976Z Task         : Get sources
2019-12-23T13:23:56.7186037Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@Mark-Simulacrum Mark-Simulacrum force-pushed the no-jobserver-herds branch 2 times, most recently from 0dc0fbc to 9d61a88 Compare December 23, 2019 14:03
@bors
Copy link
Contributor

bors commented Jan 1, 2020

☔ The latest upstream changes (presumably #67763) made this pull request unmergeable. Please resolve the merge conflicts.

We want to restrict access to the raw Client and this is the first step
to doing so; the client is still initialized from the environment at the
same time.
Sending an io::Result of the acquired token is a bit odd as the receiver
can't productively do anything on error (other than panic) and largely
if we've encountered an error when reading from the pipe it's not
something that we expect to happen (i.e., likely indicates something has
gone wrong outside our control or is a rustc programmer error) so a
panic is appropriate.
Future commits will be changing the jobserver integration to have custom
logic to enable it to appropriately talk to Cargo, so we can't have
other code that directly talks to the jobserver.
This adds the -Zjobserver-token-requests debugging flag which Cargo will
pass down to us, but for now that flag doesn't do anything.

We don't really have a good way to deal with multiple initialize calls
so for now this implementation just ignores all but the first
construction's token requesting mode. It's plausible we should assert
that all calls have the same mode, but it's unclear whether that really
brings us any benefits (and it does have a cost of forcing people to
thread things through on their end).
Previously, we were holding a global lock whenever we were waiting for a
requested token, and since the only way to release a token was by acquiring that
lock, we could relatively easily deadlock (at least if `-j1` was passed, or so,
otherwise it's likely we'd just be much slower).
@Mark-Simulacrum
Copy link
Member Author

Outstanding todo items:

I'm still not quite sure how to manage the first one. It feels like we want to integrate into rustc's standard error reporting, but I'm not yet sure how we can manage to make that work. rustc currently has a per-rustc-instance Handler in Session which we'd want to call into, but to do so we'd need to have access inside rustc_jobserver to that resource. My best sketch is to have a public global static Mutex<()> or so that is locked/unlocked around all printing within rustc... but that seems pretty bad, and I'm not sure how to track down all of the printing locations. AFAICT, if we wanted to tie into the normal emitter, we run into the standard problem that the jobserver is a process-global resource but Session (and its Emitter) is a rustc-local resource.

We can also give up on having multiple rustc's in one process, I'm not sure that's actually used today, but that seems unfortunate.

@bors
Copy link
Contributor

bors commented Feb 17, 2020

☔ The latest upstream changes (presumably #67953) made this pull request unmergeable. Please resolve the merge conflicts.

@alexcrichton
Copy link
Member

I would personally prefer to go the route of as few globals as possible and tie things into Session where possible. I don't think it's worthwhile to add global state purely for the goal of supporting multiple rustcs in one process. I think it's fine to have a global for something like the global jobserver, but after we get that Client I think everything else can be instance state after that.

@joelpalmer
Copy link

Triaged

@joelpalmer joelpalmer added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Mar 30, 2020
@Dylan-DPC-zz
Copy link

@alexcrichton any updates?

@Mark-Simulacrum
Copy link
Member Author

I'm going to close this PR for now as realistically I don't have the time to work on it right now and generally speaking the problems it solves have stalled out (along with the parallelization effort).

Likely to unblock we'd need to land the global stderr locked handles or something and that has similar issues to what Alex is commenting on (re:Session).

weihanglo added a commit to weihanglo/cargo that referenced this pull request Feb 24, 2023
`-Zjobserver-per-rustc` has been broken for a long while. My guess is that we
didn't make `-Zjobserver-token-request` into rustc (rust-lang/rust#67398).
To reduce the complexity of the current job queue implementation, I propose to
remove this potion. Cargo doesn't really receive any `jobserver_event`[^1] from
the offical rustc.

We can always bring this back if needed.

[^1]: https://github.com/rust-lang/cargo/blob/65cab34dc75587eeaff68d3c19358c4d79041452/src/cargo/core/compiler/mod.rs#L1704-L1713
weihanglo added a commit to weihanglo/cargo that referenced this pull request Feb 24, 2023
`-Zjobserver-per-rustc` has been broken for a long while. My guess is that we
didn't make `-Zjobserver-token-request` into rustc (rust-lang/rust#67398).
To reduce the complexity of the current job queue implementation, I propose to
remove this portion. Cargo doesn't really receive any `jobserver_event`[^1]
from the offical rustc.

We can always bring this back if needed.

[^1]: https://github.com/rust-lang/cargo/blob/65cab34dc75587eeaff68d3c19358c4d79041452/src/cargo/core/compiler/mod.rs#L1704-L1713
weihanglo added a commit to weihanglo/cargo that referenced this pull request Feb 24, 2023
`-Zjobserver-per-rustc` has been broken for a long while. My guess is that we
didn't make `-Zjobserver-token-request` into rustc (rust-lang/rust#67398).
To reduce the complexity of the current job queue implementation, I propose to
remove this portion. Cargo doesn't really receive any `jobserver_event`[^1]
from the offical rustc.

We can always bring this back if needed.

[^1]: https://github.com/rust-lang/cargo/blob/65cab34dc75587eeaff68d3c19358c4d79041452/src/cargo/core/compiler/mod.rs#L1704-L1713
weihanglo added a commit to weihanglo/cargo that referenced this pull request Feb 24, 2023
`-Zjobserver-per-rustc` has been broken for a long while. My guess is that we
didn't make `-Zjobserver-token-request` into rustc (rust-lang/rust#67398).
To reduce the complexity of the current job queue implementation, I propose to
remove this portion. Cargo doesn't really receive any `jobserver_event`[^1]
from the official rustc.

We can always bring this back if needed.

[^1]: https://github.com/rust-lang/cargo/blob/65cab34dc75587eeaff68d3c19358c4d79041452/src/cargo/core/compiler/mod.rs#L1704-L1713
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. WG-compiler-parallel Working group: Parallelizing the compiler
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants