about summary refs log tree commit diff
path: root/src/liballoc_system
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2017-06-15 07:08:18 -0700
committerAlex Crichton <alex@alexcrichton.com>2017-06-21 07:16:43 -0700
commit201f06988fb77c9865b0ddc60a8d7b5701c6dbbe (patch)
tree41eec8d6919522506e874ba924203b18f5a537b8 /src/liballoc_system
parent03198da2add75a0bcec792ffd84fcc8d94e8637e (diff)
downloadrust-201f06988fb77c9865b0ddc60a8d7b5701c6dbbe.tar.gz
rust-201f06988fb77c9865b0ddc60a8d7b5701c6dbbe.zip
Integrate jobserver support to parallel codegen
This commit integrates the `jobserver` crate into the compiler. The crate was
previously integrated in to Cargo as part of rust-lang/cargo#4110. The purpose
here is to two-fold:

* Primarily the compiler can cooperate with Cargo on parallelism. When you run
  `cargo build -j4` then this'll make sure that the entire build process between
  Cargo/rustc won't use more than 4 cores, whereas today you'd get 4 rustc
  instances which may all try to spawn lots of threads.

* Secondarily rustc/Cargo can now integrate with a foreign GNU `make` jobserver.
  This means that if you call cargo/rustc from `make` or another
  jobserver-compatible implementation it'll use foreign parallelism settings
  instead of creating new ones locally.

As the number of parallel codegen instances in the compiler continues to grow
over time with the advent of incremental compilation it's expected that this'll
become more of a problem, so this is intended to nip concurrent concerns in the
bud by having all the tools to cooperate!

Note that while rustc has support for itself creating a jobserver it's far more
likely that rustc will always use the jobserver configured by Cargo. Cargo today
will now set a jobserver unconditionally for rustc to use.
Diffstat (limited to 'src/liballoc_system')
0 files changed, 0 insertions, 0 deletions