Commit graph

143798 commits

Author SHA1 Message Date
bors
9fbd593a56 Auto merge of #116353 - Kobzol:new-bors-event, r=Mark-Simulacrum
Add new bors try branches to CI

Workflows for the new bors weren't launching, because its branches weren't whitelisted here.

r? `@Mark-Simulacrum`
2023-10-04 07:46:03 +00:00
bors
dd513e1150 Auto merge of #116406 - weihanglo:update-cargo, r=weihanglo
Update cargo

9 commits in 59596f0f31a94fde48b5aa7e945cd0b7ceca9620..794d0a82547f3081044c0aca7b6083733ce51344
2023-09-29 19:29:17 +0000 to 2023-10-03 23:19:33 +0000
- Prep for automating MSRV management (rust-lang/cargo#12767)
- chore(deps): update rust crate itertools to 0.11.0 (rust-lang/cargo#12759)
- fix bug: corruption when cargo killed while writing (rust-lang/cargo#12744)
- Disable custom_target::custom_bin_target on windows-gnu (rust-lang/cargo#12763)
- chore(deps): update compatible (rust-lang/cargo#12757)
- Add more missing `strip` info to docs. (rust-lang/cargo#12754)
- chore(deps): update actions/checkout action to v4 (rust-lang/cargo#12762)
- chore(deps): update rust crate cargo_metadata to 0.18.0 (rust-lang/cargo#12758)
- fix(test): Add back in newlines to diffs (rust-lang/cargo#12753)

r? ghost
2023-10-04 05:29:56 +00:00
Matthias Krüger
3e293634e2
Rollup merge of #116388 - fmease:rustdoc-fix-n-clean-up-x-crate-higher-ranked-params, r=notriddle
rustdoc: fix & clean up handling of cross-crate higher-ranked parameters

Preparatory work for the refactoring planned in #113015 (for correctness & maintainability).

---

1. Render the higher-ranked parameters of cross-crate function pointer types **(*)**.
2. Replace occurrences of `collect_referenced_late_bound_regions()` (CRLBR) with `bound_vars()`.
  The former is quite problematic and the use of the latter allows us to yank a lot of hacky code **(†)**
  as you can tell from the diff! :)
3. Add support for cross-crate higher-ranked types (`#![feature(non_lifetime_binders)]`).
  We were previously ICE'ing on them (see `inline_cross/non_lifetime_binders.rs`).

---

**(*)**: Extracted from test `inline_cross/fn-type.rs`:

```diff
- fn(_: &'z fn(_: &'b str), _: &'a ()) -> &'a ()
+ for<'z, 'a, '_unused> fn(_: &'z for<'b> fn(_: &'b str), _: &'a ()) -> &'a ()
```

**(†)**: It returns an `FxHashSet` which isn't *predictable* or *stable* wrt. source code (`.rmeta`) changes. To elaborate, the ordering of late-bound regions doesn't necessarily reflect the ordering found in the source code. It does seem to be stable across compilations but modifying the source code of the to-be-documented crates (like adding or renaming items) may result in a different order:

<details><summary>Example</summary>

Let's assume that we're documenting the cross-crate re-export of `produce` from the code below. On `master`, rustdoc would render the list of binders as `for<'x, 'y, 'z>`. However, once you add back the functions `a`–`l`, it would be rendered as `for<'z, 'y, 'x>` (reverse order)! Results may vary. `bound_vars()` fixes this as it returns them in source order.

```rs
// pub fn a() {}
// pub fn b() {}
// pub fn c() {}
// pub fn d() {}
// pub fn e() {}
// pub fn f() {}
// pub fn g() {}
// pub fn h() {}
// pub fn i() {}
// pub fn j() {}
// pub fn k() {}
// pub fn l() {}

pub fn produce() -> impl for<'x, 'y, 'z> Trait<'z, 'y, 'x> {}

pub trait Trait<'a, 'b, 'c> {}

impl Trait<'_, '_, '_> for () {}
```

</details>

Further, as the name suggests, CRLBR only collects *referenced* regions and thus we drop unused binders. `bound_vars()` contains unused binders on the other hand. Let's stay closer to the source where possible and keep unused binders.

Lastly, using `bound_vars()` allows us to get rid of

* the deduplication and alphabetical sorting hack in `simplify.rs`
* the weird field `bound_params` on `EqPredicate`

both of which were introduced by me in #102707 back when I didn't know better.

To illustrate, let's look at the cross-crate bound `T: for<'a, 'b> Trait<A<'a> = (), B<'b> = ()>`.

* With CRLBR + `EqPredicate.bound_params`, *before* bounds simplification we would have the bounds `T: Trait`, `for<'a> <T as Trait>::A<'a> == ()` and `for<'b> <T as Trait>::B<'b> == ()` which required us to merge `for<>`, `for<'a>` and `for<'b>` into `for<'a, 'b>` in a deterministic manner and without introducing duplicate binders.
* With `bound_vars()`, we now have the bounds `for<'a, b> T: Trait`, `<T as Trait>::A<'a> == ()` and `<T as Trait>::B<'b> == ()` before bound simplification similar to rustc itself. This obviously no longer requires any funny merging of `for<>`s. On top of that `for<'a, 'b>` is guaranteed to be in source order.
2023-10-04 05:02:06 +02:00
Matthias Krüger
e6a9bb11fb
Rollup merge of #116365 - P1n3appl3:master, r=onur-ozkan
bootstrap: make copying linker binaries conditional

The change in #116276 breaks bootstrapping if you don't use `lld` for linking with your stage0 compiler. Making this copy conditional should be enough to fix it.
2023-10-04 05:02:06 +02:00
Weihang Lo
d4370cc00c
Update cargo 2023-10-04 10:33:52 +08:00
Joseph Ryan
f55c879669 bootstrap: make copying linker binaries conditional 2023-10-03 11:25:07 -07:00
León Orell Valerian Liehr
ace85f0ae3
rustdoc: add support for cross-crate higher-ranked types 2023-10-03 17:41:25 +02:00
León Orell Valerian Liehr
67de1509f3
rustdoc: fix & clean up handling of cross-crate higher-ranked lifetimes 2023-10-03 17:16:51 +02:00
bors
eb0f3ed59c Auto merge of #115025 - ouz-a:ouz_testing, r=lcnr
Make subtyping explicit in MIR

This adds new mir-opt that pushes new `ProjectionElem` called `ProjectionElem::Subtype(T)` to `Rvalue` of a subtyped assignment so we can unsoundness issues like https://github.com/rust-lang/rust/issues/107205

Addresses https://github.com/rust-lang/rust/issues/112651

r? `@lcnr`
2023-10-03 10:02:52 +00:00
Matthias Krüger
9eb87c39a0
Rollup merge of #113053 - RalfJung:x86_32-float, r=workingjubilee
add notes about non-compliant FP behavior on 32bit x86 targets

Based on ton of prior discussion (see all the issues linked from https://github.com/rust-lang/unsafe-code-guidelines/issues/237), the consensus seems to be that these targets are simply cursed and we cannot implement the desired semantics for them. I hope I properly understood what exactly the extent of the curse is here, let's make sure people with more in-depth FP knowledge take a close look!

In particular for the tier 3 targets I have no clue which target is affected by which particular variant of the x86_32 FP curse. I assumed that `i686` meant SSE is used so the "floating point return value" is the only problem, while everything lower (`i586`, `i386`) meant x87 is used.

I opened https://github.com/rust-lang/rust/issues/114479 to concisely describe and track the issue.

Cc `@workingjubilee` `@thomcc` `@chorman0773`  `@rust-lang/opsem`
Fixes https://github.com/rust-lang/rust/issues/73288
Fixes https://github.com/rust-lang/rust/issues/72327
2023-10-03 08:58:47 +02:00
Ralf Jung
df911dfdd6 add notes about non-compliant FP behavior on 32bit x86 targets 2023-10-03 07:52:40 +02:00
ouz-a
5d753abb30 have better explanation for relate_types 2023-10-02 23:39:45 +03:00
ouz-a
6f0c5ee2d4 change is_subtype to relate_types 2023-10-02 23:39:45 +03:00
ouz-a
3148e6a993 subtyping_projections 2023-10-02 23:37:49 +03:00
Tyler Mandry
d7621cdb19
Rollup merge of #116349 - onur-ozkan:hfix, r=tmandry
ensure the parent path's existence on `x install`

fixes https://github.com/rust-lang/rust/pull/116127#issuecomment-1743454109

cc `@tmandry`
2023-10-02 16:09:43 -04:00
Tyler Mandry
14f6249018
Rollup merge of #114453 - Kobzol:ci-group-stdout, r=onur-ozkan
Print GHA log groups to stdout instead of stderr

In all other places (e.g. `bootstrap.py`, `opt-dist`), we use stdout instead of stderr. I think that using stderr might be causing some discrepancies in the log, where sometimes the contents of a group "leak" outside the group. Let's see what happens if we use stdout instead. It's possible that it will be worse, since we print most stuff to stderr (?).

r? `@ghost`
2023-10-02 16:09:41 -04:00
Jakub Beránek
76b70eb033
Add new bors try branches to CI 2023-10-02 21:38:50 +02:00
onur-ozkan
2c8759ef8a ensure the parent path's existence on x install
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-02 20:48:53 +03:00
bors
b0889cb4ed Auto merge of #116276 - lqd:lld-sysroot, r=onur-ozkan
bootstrap: copy self-contained linking components to `stage0-sysroot`

I hit this issue while trying to bootstrap using a rustc where `rust-lld` is used by default: this was the cause of the failure to profile rustc-perf's bootstrap benchmark in https://github.com/rust-lang/rust/pull/113382.

`stage0-sysroot` currently only has libs and self-contained objects, not the other self-contained linking components yet. Most notably, it does not contain the linker and wrappers that we build, and that rustup distributes.

If you try to bootstrap using the bootstrap compiler's `rust-lld`, it will fail to link std at stage0 because `rust-lld` and the `gcc-ld` wrappers, will not be found in `stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/bin`.

This PR copies the `bin` directory next to the `lib` directory when `rust.lld` is enabled in the config (though maybe it could be done unconditionally, the fact that we need it to link does not necessarily mean that we'd want to build and provide it at stage1).

cc `@Kobzol` who also encountered this issue while using lld during bootstrap.
2023-10-02 09:41:42 +00:00
bors
781ebbec8a Auto merge of #115898 - onur-ozkan:config-change-tracking, r=Mark-Simulacrum
bootstrap major change detection implementation

The use of `changelog-seen` and `bootstrap/CHANGELOG.md` has not been functional in any way for many years. We often do major/breaking changes but never update the changelog file or the `changelog-seen`. This is an alternative method for tracking major or breaking changes and informing developers when such changes occur.

Example output when bootstrap detects a major change:
![image](https://github.com/rust-lang/rust/assets/39852038/ee802dfa-a02b-488b-a433-f853ce079b8a)
2023-10-02 07:41:52 +00:00
bors
79bfd93d5a Auto merge of #116207 - Ayush1325:uefi_stdio, r=Mark-Simulacrum
Stdio support for UEFI

- Uses Simple Text Output Protocol and Simple Text Input Protocol
- Reading is done one character at a time
- Writing is done with max 4096 characters

# Quirks
## Output Newline
- UEFI uses CRLF for newline. So when running the application in UEFI shell (qemu VGA), the output of `println` looks weird.
- However, since the UEFI shell supports piping output, I am unsure if doing any output post-processing is a good idea. UEFI shell `cat` command seems to work fine with just LF.

## Input Newline
- `Stdin.read_line()` method is broken in UEFI shell. Pressing enter seems to be read as CR, which means LF is never encountered.
- Works fine with input redirection from file.

CC `@dvdhrm`
2023-10-02 00:03:52 +00:00
Ayush Singh
b0a72173bb
Update UEFI docs
- Mention stdio support
- Update the example

Signed-off-by: Ayush Singh <ayushdevel1325@gmail.com>
2023-10-02 00:06:09 +05:30
onur-ozkan
78eed2dfe1 add Changelog topic to bootstrap/README.md
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-01 16:55:27 +03:00
onur-ozkan
957de61594 implement major change tracking for the bootstrap configuration
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-01 16:54:52 +03:00
bors
871407a034 Auto merge of #115554 - Kobzol:single-cgu, r=Mark-Simulacrum
Build `rustc` with a single CGU on x64 Linux

This PR adds the `rust.codegen-units=1` setting when compiling the 64-bit Linux `rustc` artifact (the one used for try builds and Linux rustup distribution). This had mixed results in the past, however after the bump to LLVM 17, the results now seem pretty [incredible](https://github.com/rust-lang/rust/pull/115554#issuecomment-1706518199). Instruction counts, cycles, wall time, max RSS and even artifact sizes see large improvements.

The last [try build](https://github.com/rust-lang-ci/rust/actions/runs/6077686494/job/16487768049) with this setting took 1h 8m, which is basically the same duration for try builds that we have seen recently. So there shouldn't be any large hit to CI/build time.

I hope that this could potentially also reduce codegen noise of `rustc` a little bit, since small changes within a single `rustc` crate should no longer perturb optimizations because of CGU movement. We still do cross-crate LTO, so it won't eliminate it though.

r? `@Mark-Simulacrum`
2023-10-01 12:49:29 +00:00
Rémy Rakic
82d23a6275 bootstrap: copy self-contained linking components to stage0-sysroot
otherwise bootstrap will fail to link the stdlib on a target using the
self-contained linker: rust-lld will not be found since it's currently
not in the stage0-sysroot.
2023-10-01 10:35:30 +00:00
Matthias Krüger
bcba369004
Rollup merge of #116299 - emmanuel-ferdman:wip, r=albertlarsan68
Update location of `auxiliary/lint-plugin-test.rs`

**PR Summary**:
PR updates the location of  `auxiliary/lint-plugin-test.rs` file which was moved in PR #110478.
2023-10-01 12:18:12 +02:00
Matthias Krüger
cb4e2994c2
Rollup merge of #116292 - onur-ozkan:warn-wrong-sources, r=clubby789
warn if source is not either a git clone or a dist tarball

When the repository is downloaded directly via HTTP(as in #115041), builds may fail due to missing submodules.

This PR adds a check that warns people in such cases.
2023-10-01 12:18:11 +02:00
bors
7c3eeb92a5 Auto merge of #116307 - RalfJung:miri, r=RalfJung
Miri subtree update

r? `@ghost`
2023-10-01 07:43:21 +00:00
bors
8fa7bdf191 Auto merge of #115670 - Zoxc:outline-panic-macro-1, r=Mark-Simulacrum
Partially outline code inside the panic! macro

This outlines code inside the panic! macro in some cases. This is split out from https://github.com/rust-lang/rust/pull/115562 to exclude changes to rustc.
2023-10-01 05:56:47 +00:00
bors
361096fa4b Auto merge of #116225 - Kobzol:newbors-integration, r=Mark-Simulacrum
Add integration for new bors

I think that the best way to test the [new bors](https://github.com/rust-lang/bors/tree/staging) implementation is to start using it in the wild. This PR integrates this repo with the bot (some more integration has to be done externally through GitHub). For now, I would suggest to integrate it e.g. under the ``@borsnew`` name, and start testing its try build functionality. The bot cannot do merges or approvals yet, and it doesn't touch `master` in any way, so hopefully it shouldn't cause any troubles for this repo.

r? `@Mark-Simulacrum`
2023-10-01 04:00:34 +00:00
bors
18f0299153 Auto merge of #116302 - Mark-Simulacrum:bump-version, r=Mark-Simulacrum
Bump to 1.75.0

Step 1 of the [release process](https://forge.rust-lang.org/release/process.html#bump-the-stable-version-number-t-6-days-friday-the-week-before).
2023-10-01 02:09:48 +00:00
bors
b11431edc1 Auto merge of #116108 - onur-ozkan:support-make-jobs-flag, r=Mark-Simulacrum
Pass `-jN` from Make to `BOOTSTRAP_ARGS`

Enables the same functionality as `x -jN` in Make by passing the `-jN` arg from Make to the `BOOTSTRAP_ARGS` if it is specified.
2023-10-01 00:25:26 +00:00
Mark Rousskov
a89cfc1dd1 Bump to 1.75.0 2023-09-30 19:09:22 -04:00
Ralf Jung
119113114c clippy 2023-09-30 23:32:23 +02:00
Ralf Jung
45d5733ccb fmt 2023-09-30 23:30:51 +02:00
Ralf Jung
9a86bba831 Merge from rustc 2023-09-30 23:29:17 +02:00
Ralf Jung
d628338615 Preparing for merge from rustc 2023-09-30 23:29:13 +02:00
Emmanuel Ferdman
544d2b370e
Update location of language-features/plugin.md 2023-09-30 23:45:32 +03:00
bors
a456149187 Auto merge of #3086 - eduardosm:x86-sse3-intrinsics, r=RalfJung
Implement SSE3 and SSSE3 intrinsics
2023-09-30 20:29:22 +00:00
bors
bb6c66be37 Auto merge of #116127 - onur-ozkan:sanity-checks-on-install, r=Mark-Simulacrum
add sanity checks for user write access on `x install`

Resolves #113580
2023-09-30 18:00:23 +00:00
onur-ozkan
88e7718ec3 warn if source is not either a git clone or a dist tarball
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-09-30 20:03:26 +03:00
Samuel Thibault
97bb8c80ed Bump libloading to 0.8 2023-09-30 15:59:14 +02:00
bors
75d731eee9 Auto merge of #116254 - WaffleLapkin:nicen-traversal, r=cjgillot
Assorted improvements for `rustc_middle::mir::traversal`

r? `@cjgillot`

I'm not _entirely_ sure about all changes, although I do like all of them. If you'd like I can drop some commits. Best reviewed on a commit-by-commit basis, I think, since they are fairly isolated.
2023-09-30 12:38:12 +00:00
Eduardo Sánchez Muñoz
2c13713de4 Implement llvm.x86.ssse3.* intrinsics 2023-09-30 11:30:03 +02:00
Eduardo Sánchez Muñoz
4b2b0eaff2 Implement llvm.x86.sse3.* intrinsics 2023-09-30 11:30:03 +02:00
bors
5282e5e120 Auto merge of #116195 - fmease:rustdoc-investigate-perf-regression, r=GuillaumeGomez
rustdoc: speed up processing of cross-crate fns to fix a perf regression

* The first commit doesn't affect perf but get's rid of a `.clone()` and a bunch of lines of code. I can drop it if you'd like me to
* The second commit, *“reduce the amount of `asyncness` query executions”*, addresses the perf regression introduced in #116084

r? `@ghost`
2023-09-30 09:18:06 +00:00
bors
177091258c Auto merge of #116280 - weihanglo:update-cargo, r=weihanglo
Update cargo

4 commits in e6aabe8b3fcf639be3a5bf68e77853bd7b3fa27d..59596f0f31a94fde48b5aa7e945cd0b7ceca9620
2023-09-26 16:31:53 +0000 to 2023-09-29 19:29:17 +0000
- refactor: Switch from termcolor to anstream (rust-lang/cargo#12751)
- Add missing `strip` entries in `dev` and `release` profiles. (rust-lang/cargo#12748)
- Add better suggestion for the unsupported silent flag (rust-lang/cargo#12723)
- docs(ref): Establish publish best practices (rust-lang/cargo#12745)

r? ghost
2023-09-30 05:53:30 +00:00
bors
9136560d32 Auto merge of #115933 - oli-obk:simd_shuffle_const, r=workingjubilee
Prototype using const generic for simd_shuffle IDX array

cc https://github.com/rust-lang/rust/issues/85229

r? `@workingjubilee` on the design

TLDR: there is now a `fn simd_shuffle_generic<T, U, const IDX: &'static [u32]>(x: T, y: T) -> U;` intrinsic that allows replacing

```rust
simd_shuffle(a, b, const { stuff })
```

with

```rust
simd_shuffle_generic::<_, _, {&stuff}>(a, b)
```

which makes the compiler implementations much simpler, if we manage to at some point eliminate `simd_shuffle`.

There are some issues with this today though (can't do math without bubbling it up in the generic arguments). With this change, we can start porting the simple cases and get better data on the others.
2023-09-30 04:05:26 +00:00
Weihang Lo
1ad3bb971b
Update cargo 2023-09-30 09:06:06 +08:00