Rollup of 9 pull requests
Successful merges:
- #63907 (Add explanation to type mismatch involving type params and assoc types)
- #64615 (rustbuild: Turn down compression on exe installers)
- #64617 (rustbuild: Turn down compression on msi installers)
- #64618 (rustbuild: Improve output of `dist` step)
- #64619 (Fixes#63962. Hint about missing tuple parentheses in patterns)
- #64634 (Update to LLVM 9.0.0)
- #64635 (Allow using fn pointers in const fn with unleash miri)
- #64660 (unify errors for tuple/struct variants)
- #64664 (fully remove AstBuilder)
Failed merges:
r? @ghost
Allow using fn pointers in const fn with unleash miri
This allows using function pointers in const fns when `-Zunleash-the-miri-within-you` is enabled.
If the call to the `const fn` happens in a `const`-context, the function pointer is required to point to a `const fn`:
```rust
fn non_const_fn() -> i32 { 42 }
const fn const_fn() -> i32 { 42 }
const fn foo(x: fn() -> i32) -> i32 { x() }
let x: i32 = foo(non_const_fn_ptr); // OK
let y: i32 = foo(const_fn_ptr); // OK
const X: i32 = foo(non_const_fn_ptr); // ERROR: `non_const_fn` is not `const fn`
const Y: i32 = foo(const_fn_ptr); // OK
```
r? @oli-obk
rustbuild: Improve output of `dist` step
* Pass `/Q` to `iscc` on Windows to supress the thousands of lines of
output about compressing documentation.
* Print out what's happening before long steps
* Use `timeit` to print out timing information for long-running
installer assemblies.
* Try to scope output of `Dist ...` to not also encompass actual build steps
rustbuild: Turn down compression on msi installers
This is the same as #64615 except applied to our MSI installers. The
same fix is applied effectively bringing these installers in line with
the gz tarball installers, which are about 3x faster to produce locally
and likely much faster to produce on CI.
rustbuild: Turn down compression on exe installers
The Windows dist builders are the slowest builders right now, and the
distribution phase of them is enormously slow clocking in at around 20
minutes to build all the related installers. This commit starts to
optimize these by turning down the compression level in the `exe`
installers. These aren't super heavily used so there's no great need for
them to be so ultra-compressed, so let's dial back the compression
parameters to get closer to the rest of our xz archives. This brings the
installer in line with the gz tarball installer locally, and also brings
the compression settings on par with the rest of our xz installers.
Rollup of 9 pull requests
Successful merges:
- #64010 (Stabilize `param_attrs` in Rust 1.39.0)
- #64136 (Document From trait for LhsExpr in parser)
- #64342 (factor out pluralisation remains after #64280)
- #64347 (Add long error explanation for E0312)
- #64621 (Add Compatibility Notes to RELEASES.md for 1.38.0)
- #64632 (remove the extra comma after the match arm)
- #64640 (No home directory on vxWorks)
- #64641 (Exempt extern "Rust" from improper_ctypes)
- #64642 (Fix the span used to suggest avoiding for-loop moves)
Failed merges:
r? @ghost
Fix the span used to suggest avoiding for-loop moves
It was using the snippet from the "use" span, which often renders the
same, but with closures that snippet is on the start of the closure
where the value is captured. We should be using the snippet from the
span where it was moved into the `for` loop, which is `move_span`.
Fixes#64559.