Commit graph

157775 commits

Author SHA1 Message Date
Jubilee
e2983d843c
Rollup merge of #135094 - joshtriplett:bootstrap-show-nonexistent-dir, r=jieyouxu
bootstrap: If dir_is_empty fails, show the non-existent directory path

This should help when trying to debug issues.
2025-01-04 07:57:36 -08:00
Jubilee
6adcdc368a
Rollup merge of #135070 - klensy:backtrace-deps, r=workingjubilee
std: sync to dep versions of backtrace

Minor versions from backtrace desynced with std (they still differs in patch numbers, but still better):
4d7906bb24/Cargo.toml (L44-L48)

There is hidden bug here, let's see if CI can find it.

cc `@workingjubilee`
2025-01-04 07:57:34 -08:00
Jubilee
7cf3b96a83
Rollup merge of #135046 - RalfJung:rustc_box_intrinsic, r=compiler-errors
turn rustc_box into an intrinsic

I am not entirely sure why this was made a special magic attribute, but an intrinsic seems like a more natural way to add magic expressions to the language.
2025-01-04 07:57:33 -08:00
bors
fd127a3a84 Auto merge of #135031 - RalfJung:intrinsics-without-body, r=oli-obk
rustc_intrinsic: support functions without body

We synthesize a HIR body `loop {}` but such bodyless intrinsics.

Most of the diff is due to turning `ItemKind::Fn` into a brace (named-field) enum variant, because it carries a `bool`-typed field now. This is to remember whether the function has a body. MIR building panics to avoid ever translating the fake `loop {}` body, and the intrinsic logic uses the lack of a body to implicitly mark that intrinsic as must-be-overridden.

I first tried actually having no body rather than generating the fake body, but there's a *lot* of code that assumes that all function items have HIR and MIR, so this didn't work very well. Then I noticed that even `rustc_intrinsic_must_be_overridden` intrinsics have MIR generated (they are filled with an `Unreachable` terminator) so I guess I am not the first to discover this. ;)

r? `@oli-obk`
2025-01-04 12:50:38 +00:00
Ralf Jung
3cd3649c6c rustc_intrinsic: support functions without body; they are implicitly marked as must-be-overridden 2025-01-04 11:41:51 +01:00
Ralf Jung
be65012aa3 turn hir::ItemKind::Fn into a named-field variant 2025-01-04 11:35:31 +01:00
Matthias Krüger
e4cc2db519
Rollup merge of #135066 - jieyouxu:check-run-make-support, r=clubby789
bootstrap: support `./x check run-make-support`

Mostly for working on `src/tools/run-make-support` locally.
2025-01-04 09:54:39 +01:00
Matthias Krüger
8744b44e6b
Rollup merge of #135001 - Kobzol:bootstrap-mcp-510, r=onur-ozkan
Allow using self-contained LLD in bootstrap

In https://github.com/rust-lang/rust/pull/116278, I added a `"self-contained"` mode to the `rust.use-lld` bootstrap option, which was designed for using the built-in LLD for linking compiler artifacts. However, this was later reverted in https://github.com/rust-lang/rust/pull/118810.

This PR brings the old logic back, which switches LLD in bootstrap from `-fuse-ld=lld` to [MCP510](https://github.com/rust-lang/compiler-team/issues/510)'s way of passing linker flags to enable LLD (both external and self-contained). So this does two changes:
1) Goes from `-fuse-ld=lld` to MCP510
2) Actually makes it possible to use the self-contained LLD to compile compiler artifacts

Regarding the second commit: Since https://github.com/rust-lang/rust/pull/86113, we have been passing `-fuse-ld=lld` as a target flag to all tests when `use-lld = true` is enabled. This kind of worked for all tests, since it was just a linker argument, which has bypassed any compiler checks, and probably resulted only in some warning if the given target linker didn't actually support LLD. However, after the first commit, some tests actually start failing with this approach:
```
error: linker flavor `gnu-lld-cc` is incompatible with the current target
   |
   = note: compatible flavors are: llbc, ptx
```
So the second commit removes the passing of LLD flags as target flags to tests. I don't think that it's a good idea to pass specific compiler flags to all tests unconditionally, tbh. The doctest command from #86113 doesn't go through compiletest anymore, and doctests should be quite a lot faster since https://github.com/rust-lang/rust/pull/126245 in general.

CC `@the8472`

If someone has a beefy machine, it would be nice to test whether this doesn't regress test execution speed. How to do that:
1) Enable `rust.use-lld = true` and `rust.lld = true` in `config.toml`
2) Benchmark `./x test tests/ui --force-rerun` between `master` and this PR

Once this is tested in the wild, I would like to make the self-contained LLD the default in CI, hopefully to make CI builds faster.

r? `@onur-ozkan`
2025-01-04 09:54:37 +01:00
Josh Triplett
2cefd30eff bootstrap: If dir_is_empty fails, show the non-existent directory path
This should help when trying to debug issues.
2025-01-04 10:48:37 +02:00
bors
d13c80a6fd Auto merge of #135089 - weihanglo:update-cargo, r=weihanglo
Update cargo

9 commits in d73d2caf9e41a39daf2a8d6ce60ec80bf354d2a7..fd784878cfa843e3e29a6654ecf564c62fae6735
2024-12-31 20:51:21 +0000 to 2025-01-03 20:06:26 +0000
- chore: bump gix-lock to remove thiserror@1 from `cargo` (rust-lang/cargo#15012)
- refactor(manifest): Clean up field -> env var handling (rust-lang/cargo#15008)
- chore(deps): update rust crate thiserror to v2 (rust-lang/cargo#14998)
- test(git): Clean up shallow fetch tests (rust-lang/cargo#15002)
- fix(schema): Correct and update the JSON Schema (rust-lang/cargo#15000)
- chore(deps): update rust crate itertools to 0.14.0 (rust-lang/cargo#14996)
- fix: env table config can't trigger rebuild with `rerun-if-env-changed`. (rust-lang/cargo#14756)
- chore(deps): update alpine docker tag to v3.21 (rust-lang/cargo#14995)
- fix(package): check dirtiness of symlinks source files (rust-lang/cargo#14981)
2025-01-04 01:26:57 +00:00
Weihang Lo
20a44e64c3
Update cargo 2025-01-03 17:53:10 -05:00
Matthias Krüger
c02499feb1
Rollup merge of #135058 - onur-ozkan:path-resolution, r=jieyouxu
refactor bootstrap path resolution

Previously we removed paths as soon as we found the first intersection, which made it impossible to find other intersecting paths (and that is the reason of https://github.com/rust-lang/rust/issues/135022).

This patch changes that by marking the intersecting paths instead, so we can collect them all and remove them together when needed. Which means, `x build compiler` would compile anything that ends or starts with `"compiler"` instead of picking the first matching `Step` from `builder::get_step_descriptions`.

Fixes https://github.com/rust-lang/rust/issues/135022
2025-01-03 22:12:45 +01:00
Matthias Krüger
f0c03f640a
Rollup merge of #135043 - notriddle:notriddle/allowed-through-unstable-modules-is-a-deprecation-flag, r=GuillaumeGomez
rustdoc: treat `allowed_through_unstable_modules` as deprecation

This ensures `std::intrinsics::transmute` is deemphasized in the search engine and other UI, by cleaning it into a deprecation without propagating it through reexports when the parent module is stable.

Fixes #131676

Related to #135003

r? ``@GuillaumeGomez``

``@RalfJung`` ``@workingjubilee``
2025-01-03 22:12:44 +01:00
Matthias Krüger
564a29dbfb
Rollup merge of #135036 - jieyouxu:rmake-be-quiet, r=compiler-errors
run-make-support: adjust assertion printing, add some basic sanity checks

cc ``@Noratrieb``

I think we may have unintentionally regressed this recently and double-printed (or printed even when the assertions didn't fail). This PR should condition the detail dumps only when the assertions fail.

Added some basic sanity checks for the assertions helpers except for the directory comparisons. That particular helper is not robust against symlinks, and I intend to address it in a follow-up (issue is #135037).

r? bootstrap (or compiler)
2025-01-03 22:12:43 +01:00
bors
6c8347b958 Auto merge of #135063 - pietroalbini:pa-bump-version, r=pietroalbini
Bump version to 1.86.0

Part of the release process.

r? `@ghost`
2025-01-03 14:14:58 +00:00
klensy
4d3a0286e9 tidy 2025-01-03 15:50:11 +03:00
许杰友 Jieyou Xu (Joe)
6175d73862 run-make-support: tidy up assertion failure dumping
Avoid double-dumping or dumping even when assertion is successful.
2025-01-03 20:06:46 +08:00
许杰友 Jieyou Xu (Joe)
7b763031e1 run-make-support: add basic sanity tests for assertion helpers 2025-01-03 19:57:30 +08:00
许杰友 Jieyou Xu (Joe)
f7d0842198 run-make-support: convert assertion_helpers to module 2025-01-03 19:56:30 +08:00
许杰友 Jieyou Xu (Joe)
6628c4b8fb bootstrap: support ./x check run-make-support 2025-01-03 19:53:26 +08:00
Ralf Jung
ac9cb908ac turn rustc_box into an intrinsic 2025-01-03 12:01:31 +01:00
Pietro Albini
22002dbf04
bump version 2025-01-03 10:36:06 +01:00
onur-ozkan
baa7fcec85 add coverage for multiple paths
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-01-03 10:01:22 +03:00
Matthias Krüger
8439ae7422
Rollup merge of #131729 - Urgau:check-cfg-test-userspace, r=petrochenkov
Make the `test` cfg a userspace check-cfg

This PR implements MCP https://github.com/rust-lang/compiler-team/issues/785, which makes the `test` cfg a "userspace" check-cfg, i.e. no longer included in the well known cfg list.

Things to do:

- [x] Accept the MCP (https://github.com/rust-lang/compiler-team/issues/785#issuecomment-2424121886)
- [x] Mark `test` in Cargo (https://github.com/rust-lang/cargo/pull/14963)

`@rustbot` labels +S-waiting-on-MCP +F-check_cfg
r? `@petrochenkov`
2025-01-03 07:57:24 +01:00
onur-ozkan
3807440a00 avoid early return to handle all paths
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-01-03 09:54:36 +03:00
onur-ozkan
be2f75f3b7 Revert "bootstrap: temporarily flip compile::Rustc vs compile::Assemble"
This reverts commit 552c1f5f45.
2025-01-03 08:57:58 +03:00
onur-ozkan
c367c62b27 revert step order from #134919
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-01-03 08:57:19 +03:00
onur-ozkan
00cd943709 adapt bootstrap tests to the new path resolution logic
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-01-03 08:57:16 +03:00
onur-ozkan
a8516c052e refactor bootstrap path resolution
Previously we removed paths as soon as we found the first intersection, which made
it impossible to find other intersecting paths. This patch changes that by marking
the intersecting paths instead, so we can collect them all and remove them together
when needed.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-01-03 08:57:13 +03:00
bors
ab3924b298 Auto merge of #122565 - Zoxc:atomic-panic-msg, r=the8472
Try to write the panic message with a single `write_all` call

This writes the panic message to a buffer before writing to stderr. This allows it to be printed with a single `write_all` call, preventing it from being interleaved with other outputs. It also adds newlines before and after the message ensuring that only the panic message will have its own lines.

Before:
```
thread 'thread 'thread 'thread 'thread '<unnamed>thread 'thread 'thread 'thread '<unnamed><unnamed>thread '<unnamed>' panicked at ' panicked at <unnamed><unnamed><unnamed><unnamed><unnamed>' panicked at <unnamed>' panicked at src\heap.rssrc\heap.rs'
panicked at ' panicked at ' panicked at ' panicked at ' panicked at src\heap.rs' panicked at src\heap.rs::src\heap.rssrc\heap.rssrc\heap.rssrc\heap.rssrc\heap.rs:src\heap.rs:455455:::::455:455::455455455455455:455:99:::::9:9:
:
999:
999:
assertion failed: size <= (*queue).block_size:
:
assertion failed: size <= (*queue).block_size:
assertion failed: size <= (*queue).block_size:
:
:
assertion failed: size <= (*queue).block_sizeassertion failed: size <= (*queue).block_sizeassertion failed: size <= (*queue).block_size

assertion failed: size <= (*queue).block_size
assertion failed: size <= (*queue).block_sizeassertion failed: size <= (*queue).block_sizeerror: process didn't exit successfully: `target\debug\direct_test.exe` (exit code: 0xc0000409, STATUS_STACK_BUFFER_OVERRUN)
```
After:
```

thread '<unnamed>' panicked at src\heap.rs:455:9:
assertion failed: size <= (*queue).block_size

thread '<unnamed>' panicked at src\heap.rs:455:9:
assertion failed: size <= (*queue).block_size

thread '<unnamed>' panicked at src\heap.rs:455:9:
assertion failed: size <= (*queue).block_size

error: process didn't exit successfully: `target\debug\direct_test.exe` (exit code: 0xc0000409, STATUS_STACK_BUFFER_OVERRUN)
```

---

try-jobs: x86_64-gnu-llvm-18
2025-01-02 22:06:09 +00:00
Michael Howell
8af769d1b1
Use is_some_and helper
Co-authored-by: Guillaume Gomez <guillaume1.gomez@gmail.com>
2025-01-02 14:08:43 -07:00
Michael Howell
c7cb8224e2 rustdoc: treat allowed_through_unstable_modules as deprecation
This ensures `std::intrinsics::transmute` is deemphasized
in the search engine and other UI, by cleaning it into a deprecation
without propagating it through reexports when the parent module
is stable.
2025-01-02 12:03:24 -07:00
bors
4363f9b6f6 Auto merge of #135040 - matthiaskrgr:rollup-34vsa8n, r=matthiaskrgr
Rollup of 5 pull requests

Successful merges:

 - #135016 (Ping me for rustc-dev-guide subtree changes on this repo)
 - #135027 (Remove range-metadata amdgpu workaround)
 - #135029 (Update mailmap)
 - #135033 (try to dedup me in the mailmap)
 - #135035 (Fix formatting command)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-01-02 19:02:41 +00:00
Matthias Krüger
666794e5c7
Rollup merge of #135035 - Noratrieb:fixfmt, r=jieyouxu
Fix formatting command

The formatting command previously had two issues:
- if rustfmt failed, it would print the command invocation. this is unnecessarily noisy
- there was a race condition that lead to orphan rustfmts that would print their output after bootstrap exited

We fix this by
- removing the printing, it's not really useful
- threading failure through properly instead of just yoloing exit(1)
2025-01-02 18:27:22 +01:00
Noratrieb
8b73fc5e27 Fix formatting command
The formatting command previously had two issues:
- if rustfmt failed, it would print the command invocation. this is
  unnecessarily noisy
- there was a race condition that lead to orphan rustfmts that would
  print their output after bootstrap exited

We fix this by
- removing the printing, it's not really useful
- threading failure through properly instead of just yoloing exit(1)
2025-01-02 17:26:46 +01:00
bors
1b2745d72a Auto merge of #135014 - Zalathar:tool-build-step, r=jieyouxu
bootstrap: Overhaul and simplify the `tool_extended!` macro

Similar to #134950, but for the macro that declares build steps for some tools.

The main changes are:
- Removing some functionality that isn't needed by any of the tools currently using the macro
- Moving some code out of the macro and into ordinary helper functions
- Switching to one macro invocation per tool, and struct-like syntax so that rustfmt will format them

There should be no functional change.
2025-01-02 16:18:28 +00:00
Urgau
c73d81ec33 Temporarily make the test cfg a well known bootstrap cfg 2025-01-02 16:49:55 +01:00
Urgau
e8a4792b3e Make the test cfg a "userspace" check-cfg 2025-01-02 16:49:55 +01:00
许杰友 Jieyou Xu (Joe)
552c1f5f45 bootstrap: temporarily flip compile::Rustc vs compile::Assemble
The PathSet prefix matching unfortunately also has implications for `./x
build compiler`, because the path filter `"compiler"` gets consumed by
`compile::Rustc` step first after PathSet prefix matching, whereas
before PathSet prefix matching, the later-registered `compile::Assemble`
step would've consumed the `"compiler"` path filter.

This merely papers over the issue with PathSet prefix handling to
unblock contributors for using `./x build compiler`.
2025-01-02 21:00:14 +08:00
Zalathar
5a32a35ab7 Move most of Step::should_run out of tool_extended! 2025-01-02 18:43:34 +11:00
Zalathar
08d70f57e2 Use struct-like syntax in tool_extended!
Using struct-like syntax allows rustfmt to format macro invocations, instead of
giving up and ignoring them.

Using a separate macro invocation per tool makes the macro slightly simpler,
and isolates syntax errors to individual invocations.
2025-01-02 18:43:34 +11:00
Zalathar
725fccda2b Move most of Step::run out of tool_extended! 2025-01-02 18:43:33 +11:00
Zalathar
bba24a2ffe Don't pass (self, builder) identifiers to tool_extended! 2025-01-02 17:47:13 +11:00
Zalathar
b84c54ac87 Remove two unused parameters from tool_extended! 2025-01-02 17:47:13 +11:00
Zalathar
e76c484d6d Remove the unused extra_features field from tool_extended!
This field was introduced in #48097 to support the "clippy" feature of RLS.
2025-01-02 17:47:13 +11:00
bors
c528b8c678 Auto merge of #134907 - Kobzol:rustc-dev-guide-josh, r=ehuss
Turn rustc-dev-guide into a Josh subtree

Discussed on [Zulip](https://rust-lang.zulipchat.com/#narrow/channel/196385-t-compiler.2Fwg-rustc-dev-guide/topic/a.20move.20to.20main.20repo.20.28rust-lang.2Frust.29).

Accompanying rustc-dev-guide PR: https://github.com/rust-lang/rustc-dev-guide/pull/2183

I didn't create a bootstrap step for rustc-dev-guide yet, because the rustc-dev-guide version that we currently use in this repo doesn't have linkcheck enabled and that fails tests.

The subtree starts with commit [ad93c5f1c49f2aeb45f7a4954017b1e607df9f5e](ad93c5f1c4).

What I did:
```
export DIR=src/doc/rustc-dev-guide

# Remove submodule
git submodule status ${DIR}
git submodule deinit ${DIR}
git rm -r --cached ${DIR}
rm -rf ${DIR}
# Remove rustc-dev-guide from .gitmodules
git commit -m"Removed `${DIR}` submodule"

# Import history with josh
git fetch https://github.com/rust-lang/rustc-dev-guide ad93c5f1c49f2aeb45f7a4954017b1e607df9f5e
josh-filter ':prefix=src/doc/rustc-dev-guide' FETCH_HEAD
git merge --allow-unrelated FILTERED_HEAD

# A few follow-up cleanup commits
```

r? ehuss
2025-01-02 03:05:42 +00:00
Matthias Krüger
92f56fc150
Rollup merge of #134973 - ericlehong:fix-typo, r=GuillaumeGomez
Fix typos

This PR fixes typos errors in comments and docs.

Thank you very much.
2025-01-01 22:04:16 +01:00
Matthias Krüger
afdb6270ef
Rollup merge of #134967 - onur-ozkan:auto-submodule-handler, r=jieyouxu
handle submodules automatically on `doc` steps

Helps to make `doc` macros less complicated.
2025-01-01 22:04:15 +01:00
Jakub Beránek
3d69dd1661 Do not pass LLD flags to targets flags of compiletest
Not all targets support these flags, so we cannot just pass them to the tests unconditionally. Before, we were using a linker arg (`-Clink-arg=-fuse-ld=lld`), which circumvented this in a hacky way.
2025-01-01 18:50:03 +01:00
Jakub Beránek
ab5446c992 Actually use self-contained lld in bootstrap when use-lld = "self-contained" is used
Before, we just used the global `lld` anyway.
2025-01-01 18:49:07 +01:00