build-manifest: strip newline from rustc version
While running the release process for Rust 1.48.0 I discovered a bug in `build-manifest`: it's not trimming the newline from `src/version`, and it tries to inspect tarballs called `rustc-1.48.0\n-x86_64-unknown-linux-gnu.tar.xz`. The bug only affects stable releases so this is why we're only seeing it right now.
r? `@Mark-Simulacrum`
We'll need to backport this to beta and nightly too.
Rust 1.48.0 stable release
This PR bumps the 1.48 beta branch to the 1.48 stable branch, and applies these last minute backports:
* #77939 - Ensure that the source code display is working with DOS backline
* #77508 - Fix capitalization in blog post name
* #78559 - Add LLVM upgrades from 7 to 10 to RELEASES.md
* #78364 - Update RELEASES.md for 1.48.0
r? `@ghost`
cc `@rust-lang/release`
[beta] next
This backports:
* Avoid installing external LLVM dylibs #78986
* Install CI llvm into the library directory #79074
* Revert "Revert "resolve: Avoid "self-confirming" import resolutions in one more case"" #78784
* Bump Rustfmt and RLS #78775
* Enforce no-move rule of ReentrantMutex using Pin and fix UB in stdio #77801
For RLS/rustfmt compilation to succeed:
* change the order of type arguments on ControlFlow #76614
* Add ControlFlow::is_{break,continue} methods #78200
* Replace run_compiler with RunCompiler builder pattern #77649
As a dependency of #77801:
* Add Pin::static_ref, static_mut. #77726
RunCompiler::new takes non-optional params, and optional
params can be set using set_*field_name* method.
finally `run` will forward all fields to `run_compiler`.
The code before this change misused the ReentrantMutexes, by calling
init() on them and moving them afterwards. Now that ReentrantMutex
requires Pin for init(), this mistake is no longer easy to make.
If the LLVM was externally provided, then we don't currently copy artifacts into
the sysroot. This is not necessarily the right choice (in particular, it will
require the LLVM dylib to be in the linker's load path at runtime), but the
common use case for external LLVMs is distribution provided LLVMs, and in that
case they're usually in the standard search path (e.g., /usr/lib) and copying
them here is going to cause problems as we may end up with the wrong files and
isn't what distributions want.
This behavior may be revisited in the future though.
[beta] always disable copy_file_range to avoid EOVERFLOW errors
A bigger hammer as alternative to #79007
Pro: will certainly fix the issue
Cons: will disable copy_file_range for everyone
Resolves#78979
[beta] try to work around type normalization regression
This just removes the offending lines that trigger #78139. I have doubts that this will actually solve the issue but it's simple enough to try.
This PR needs a crater run for the failing crate.
[beta] Revert "Promote missing_fragment_specifier to hard error #75516"
This reverts "Promote missing_fragment_specifier to hard error #75516" on just beta. I would like us to explore a more principled fix, perhaps along the lines `@petrochenkov` suggested in #76605, on master when we have more time to test it but I don't want us shipping the breakage in the meantime. I don't personally feel comfortable immediately backporting anything more than a revert here.
cc `@matklad`
This matches #77456 for 1.47 but targets 1.48 (current beta) instead.
r? `@petrochenkov`
[beta] backports
This backports a number of PRs to beta:
* Add delay_span_bug to no longer ICE #78645
* Do not ICE on invalid input #78422
* revert #75443, update mir validator #78410
* Do not try to report on closures to avoid ICE #78268
* Disable "optimization to avoid load of address" in InstCombine #78195
* Disable MatchBranchSimplification #78151
* Do not ICE with TraitPredicates containing [type error] #77930
* Tweak `if let` suggestion to be more liberal with suggestion and to not ICE #77283
* Use different mirror for linux headers in musl-toolchain CI script. #78316