Fix race condition in local registry crate unpacking
Copy crate and keep exclusive lock to it with local registries. Ensures
that only one instance will try to extract the source of a new package.
Fixes#6588.
$cargo fmt --all
It is just PR using the rustfmt command.
I have nothing to do with this PR, but do not you introduce format checks by clippy or rustfmt into CI?
Some CI setups are much slower then the equipment used by Cargo itself
This adds a "CARGO_TEST_SLOW_CPU_MULTIPLIER" that increases all the time outs used in the tests, and disables Proptest shrinking on non tty cases.
Closes: #6491
CC: #6490, @infinity0
Make incremental compilation the default for all profiles.
This PR makes incremental compilation the default for all profiles, that is, also `release` and `bench`. `rustc` performs ThinLTO by default for incremental release builds for a while now and the [data we've gathered so far](https://github.com/rust-lang/rust/pull/56678) indicates that the generated binaries exhibit roughly the same runtime performance as non-incrementally compiled ones. At the same time, incremental release builds can be 2-5 times as fast as non-incremental ones.
Making incremental compilation (temporarily) the default in `cargo` would be a simple way of gathering more data about runtime performance via [lolbench.rs](https://lolbench.rs). If the results look acceptable, we can just leave it on and give a massive compile time reduction to everyone. If not, we can revert the change and think about a plan B.
This strategy assumes that lolbench will actually use the nightly `cargo` version. Is that true, @anp?
r? @alexcrichton
Copy crate and keep exclusive lock to it with local registries. Ensures
that only one instance will try to extract the source of a new package.
Fixes#6588.
Add builds.sr.ht CI config to book
This adds a CI configuration for [builds.sr.ht](https://builds.sr.ht) to the book alongside the existing configurations for Travis and GitLab CI.
The config in question is broadly similar to those two, except that I also opted to build the docs as I commonly find markdown oddities this way from the warnings it spits out.
I picked Arch Linux as the base image because it's easy to install rustup there (since there's a package for it in the Arch repos), but it could have been Debian or FreeBSD or something else just as easily if you have strong opinions about manually installing rustup.
**EDIT:** None of the other build configs had it, so I didn't add publishing tagged commits to crates.io using its secrets mechanism to log cargo in. However, if that's something you think would be beneficial, I can add it.
Put mtime-on-use behind a feature flag.
This places #6477 behind the `-Z mtime-on-use` feature flag.
The change to update the mtime each time a crate is used has caused a performance regression on the rust playground (rust-lang/rust#57774). It is using about 241 pre-built crates in a Docker container. Due to the copy-on-write nature of Docker, it can take a significant amount of time to update the timestamps (over 10 seconds on slower systems).
cc @Mark-Simulacrum
Perhaps you meant: foo, bar or foobar
Hi! Rust project is very cool, but I noticed some minor issues. In every place `did you mean: bla bla` end with the question mark, so I decided to include it here too.