Commit Graph

2663 Commits

Author SHA1 Message Date
binarycat f00643aa1c add new section on the `rustdoc` test suite 2025-03-18 12:04:47 -05:00
Jakub Beránek 1bcd02da96
Add Fuchsia ping group page 2025-03-18 16:22:57 +01:00
Jakub Beránek ba77a8030b
Reorder RfL tests page to move the "what if it breaks" section to the top 2025-03-18 16:17:59 +01:00
Jakub Beránek db56758b57
Add Fuchsia ping group notice 2025-03-18 16:16:28 +01:00
许杰友 Jieyou Xu (Joe) c3b9e8ae0a
Merge pull request #2268 from xizheyin/issue-137421
Add issue link for explaining that why rustc_private linker fails
2025-03-18 22:44:16 +08:00
xizheyin e0d9704841 Add chapter Remarks on perma-unstable features
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
2025-03-18 20:49:20 +08:00
Jieyou Xu af667b8696
Merge from rustc 2025-03-18 12:08:38 +08:00
Matthias Krüger 7ceeee7ca4
Rollup merge of #138533 - Kobzol:try-job-auto-tests, r=marcoieni
Only use `DIST_TRY_BUILD` for try jobs that were not selected explicitly

Some CI jobs (x64 Linux, ARM64 Linux and x64 MSVC) use the `opt-dist` tool to build an optimized toolchain using PGO and BOLT. When performing a default try build for x64 Linux, in most cases we want to run perf. on that artifact. To reduce the latency of this common use-case, `opt-dist` skips building several components not needed for perf., and it also skips running post-optimization tests, when it detects that the job is executed as a try job (not a merge/auto job).

This is useful, but it also means that if you *want* to run the tests, you had to go to `jobs.yml` and manually comment this environment variable, create a WIP commit, do a try build, and then remove the WIP commit, which is annoying (in the similar way that modifying what gets run in try builds was annoying before we had the `try-job` annotations).

I thought that we could introduce some additional PR description marker like `try-job-run-tests`, but it's hard to discover that such things exist.

Instead, I think that there's a much simpler heuristic for determining whether `DIST_TRY_BUILD` should be used (that I implemented in this PR):
- If you do just ``@bors` try`, without any custom try jobs selected, `DIST_TRY_BUILD` will be activated, to finish the build as fast as possible.
- If you specify any custom try jobs, you are most likely doing experiments and you want to see if tests pass and everything builds as it should. The `DIST_TRY_BUILD` variable will thus *not* be set in this case.

In this way, if you want to run dist tests, you can just add the `try-job: dist-x86_64-linux` line to the PR description, and you don't need to create any WIP commits.

r? `@marcoieni`
2025-03-17 22:49:06 +01:00
bit-aloo e4ddc21c8a
replace config.toml to bootstrap.toml in src:doc:rustc-dev-guide 2025-03-17 12:56:44 +05:30
jyn bfda715ef4 expand ${workspaceFolder} in sample vim config 2025-03-16 21:06:18 -04:00
Jakub Beránek f6940a6e7c Add a note to rustc-dev-guide 2025-03-16 20:42:37 +01:00
Yang Lin 832299550c Following commit 401dd84 in the Rust project
(https://github.com/rust-lang/rust),
`ErrorGuaranteed` was replaced by fatal errors.
As a result, `tcx.analysis()` now aborts directly
instead of returning an error guard.
To accommodate this change, this update replaces
`tcx.analysis()` with `typeck()`
to perform type checking in the example.
2025-03-16 23:43:17 +08:00
Tshepang Mbambo b04865b8d2 add some copy-paste goodness 2025-03-15 11:35:41 +02:00
Tshepang Mbambo 7d157cb36e make 'mdbook test --chapter "Running tests"' pass 2025-03-15 11:35:15 +02:00
Tshepang Mbambo e068c546a3 those should not get shell highlighting 2025-03-15 11:32:16 +02:00
Jakub Beránek dad3718db8 Fix MCP links 2025-03-14 15:18:58 +01:00
许杰友 Jieyou Xu (Joe) 9975f62f2b
Merge pull request #2283 from jieyouxu/sync
Rustc pull
2025-03-14 16:08:03 +08:00
KonaeAkira c20c046b0f Fix grammar and remove redundant info 2025-03-13 23:56:04 +01:00
Josh Stone 46d4f952c7
Remove the doc for `no-system-llvm`
This compiletest directive was removed in rust-lang/rust#120265.
2025-03-13 12:15:29 -07:00
许杰友 Jieyou Xu (Joe) 3ca2a42b52 Merge from rustc 2025-03-13 15:20:11 +08:00
Tshepang Mbambo bbcfc69027
less text for same effect 2025-03-13 03:51:51 +02:00
Nicholas Nethercote 7f5b5c36f8 Move methods from `Map` to `TyCtxt`, part 4.
Continuing the work from #137350.

Removes the unused methods: `expect_variant`, `expect_field`,
`expect_foreign_item`.

Every method gains a `hir_` prefix.
2025-03-12 08:55:37 +11:00
Jakub Beránek dd0359476d Handle backticks in try job patterns 2025-03-10 14:07:46 +01:00
Jakub Beránek 074e4787bd Modify try-job documentation 2025-03-10 14:07:45 +01:00
Oli Scherer 7119746828
Merge pull request #2258 from fee1-dead-contrib/constck
Rewrite effects checking chapter
2025-03-10 12:35:40 +01:00
许杰友 Jieyou Xu (Joe) 6ae1d4d997
Merge pull request #2273 from rust-lang/tshepang-patch-1
use new terminology
2025-03-10 17:59:15 +08:00
Tshepang Mbambo 53f8a2f1d6
add missing punctuation 2025-03-10 11:15:32 +02:00
Tshepang Mbambo 12b836b37c
clean --bless text 2025-03-10 11:12:44 +02:00
Tshepang Mbambo 916cd09d33
add a pause, for readability 2025-03-10 10:38:30 +02:00
Tshepang Mbambo 20b3dc1ee0
already mentioned before showing code snippet 2025-03-10 10:35:40 +02:00
Tshepang Mbambo 1d3b59fa4a
use new terminology 2025-03-10 10:29:30 +02:00
许杰友 Jieyou Xu (Joe) 9182eb6fe7
Merge pull request #2270 from tshepang/example-llvm-prs
mention llvm 20 in example prs
2025-03-09 08:06:06 +08:00
许杰友 Jieyou Xu (Joe) c37760a674
Merge pull request #2271 from rust-lang/tshepang-patch-1
fix text
2025-03-09 08:04:28 +08:00
Tshepang Mbambo efa11d0d5c
ignore-stage0 and only-stage0 do not exist 2025-03-08 23:51:17 +02:00
Tshepang Mbambo 28b1ec7130
fix text
- There is more than just target and stage
- There is only 3 stages, so don't mention them specially
2025-03-08 22:58:09 +02:00
Tshepang Mbambo ebead304f4 link to latest major llvm update pr 2025-03-08 20:40:44 +02:00
Tshepang Mbambo fc6a11aeb4 only a few are needed as examples 2025-03-08 20:35:42 +02:00
Tshepang Mbambo 723b887eff numbers were not sequential, so stop trying 2025-03-08 20:33:05 +02:00
Deadbeef 79e42cfb0b consider `explicit_implied_const_bounds` 2025-03-08 16:38:44 +08:00
许杰友 Jieyou Xu (Joe) 93eca2b494 Document that `rmake.rs`/`run-make-support` may not use unstable features 2025-03-07 19:09:41 +08:00
moxian aab48065ca Don't suggest explicitly `cfg`-gating `trace!` calls in bootstrap 2025-03-05 15:34:48 -08:00
许杰友 Jieyou Xu (Joe) a1c5c4971c
Rollup merge of #136581 - jieyouxu:makefile-be-gone, r=Kobzol
Retire the legacy `Makefile`-based `run-make` test infra

The final piece of [porting run-make tests to use Rust #121876](https://github.com/rust-lang/rust/issues/121876).
Closes #121876.
Closes #40713.
Closes #81791 (no longer using `wc`).
Closes #56475 (no longer a problem in current form of that test; we don't ignore the test on `aarch64-unknown-linux-gnu`).

### Summary

This PR removes the legacy `Makefile`-based `run-make` test infra which has served us well over the years. The legacy infra is no longer needed since we ported all of `Makefile`-based `run-make` tests to the new `rmake.rs` infra.

Additionally, this PR:

- Removes `tests/run-make/tools.mk` since no more `Makefile`-based tests remain.
- Updates `tests/run-make/README.md` and rustc-dev-guide docs to remove mention about `Makefile`-based `run-make` tests
- Update test suite requirements in rustc-dev-guide on Windows to no longer need MSYS2 (they should also now run successfully on native Windows MSVC).
- Update `triagebot.toml` to stop backlinking to #121876.

**Thanks to everyone who helped in this effort to modernize the `run-make` test infra and test suite!**

r? bootstrap
2025-03-05 21:46:32 +08:00
bors cd733e506e Auto merge of #135695 - Noratrieb:elf-raw-dylib, r=bjorn3
Support raw-dylib link kind on ELF

raw-dylib is a link kind that allows rustc to link against a library without having any library files present.
This currently only exists on Windows. rustc will take all the symbols from raw-dylib link blocks and put them in an import library, where they can then be resolved by the linker.

While import libraries don't exist on ELF, it would still be convenient to have this same functionality. Not having the libraries present at build-time can be convenient for several reasons, especially cross-compilation. With raw-dylib, code linking against a library can be cross-compiled without needing to have these libraries available on the build machine. If the libc crate makes use of this, it would allow cross-compilation without having any libc available on the build machine. This is not yet possible with this implementation, at least against libc's like glibc that use symbol versioning. The raw-dylib kind could be extended with support for symbol versioning in the future.

This implementation is very experimental and I have not tested it very well. I have tested it for a toy example and the lz4-sys crate, where it was able to successfully link a binary despite not having a corresponding library at build-time.

I was inspired by Björn's comments in https://internals.rust-lang.org/t/bundle-zig-cc-in-rustup-by-default/22096/27
Tracking issue: #135694

r? bjorn3

try-job: aarch64-apple
try-job: x86_64-msvc-1
try-job: x86_64-msvc-2
try-job: test-various
2025-03-04 15:39:44 +00:00
Zalathar 4801165af5 Remove some unnecessary aliases from `rustc_data_structures::sync`
With the removal of `cfg(parallel_compiler)`, these are always shared
references and `std::sync::OnceLock`.
2025-03-03 20:20:24 +11:00
bors a522bd04c1 Auto merge of #136864 - Kobzol:citool, r=marcoieni
Rewrite the `ci.py` script in Rust

It would seem that I would learn by now that any script written in Python will become unmaintainable sooner or later, but alas..

r? `@marcoieni`

try-job: aarch64-gnu
try-job: dist-x86_64-linux-alt
try-job: x86_64-msvc-ext2

Fixes: https://github.com/rust-lang/rust/issues/137013
2025-03-02 09:18:02 +00:00
许杰友 Jieyou Xu (Joe) 6a61f6f721 rustc-dev-guide: remove mentions of legacy `Makefile` run-make infra
And remove outdated requirements to run `run-make` tests on Windows.
2025-03-02 05:56:56 +08:00
Noratrieb 8044303cbf Support raw-dylib link kind on ELF
raw-dylib is a link kind that allows rustc to link against a library
without having any library files present.
This currently only exists on Windows. rustc will take all the symbols
from raw-dylib link blocks and put them in an import library, where they
can then be resolved by the linker.

While import libraries don't exist on ELF, it would still be convenient
to have this same functionality. Not having the libraries present at
build-time can be convenient for several reasons, especially
cross-compilation. With raw-dylib, code linking against a library can be
cross-compiled without needing to have these libraries available on the
build machine. If the libc crate makes use of this, it would allow
cross-compilation without having any libc available on the build
machine. This is not yet possible with this implementation, at least
against libc's like glibc that use symbol versioning.
The raw-dylib kind could be extended with support for symbol versioning
in the future.

This implementation is very experimental and I have not tested it very
well. I have tested it for a toy example and the lz4-sys crate, where it
was able to successfully link a binary despite not having a
corresponding library at build-time.
2025-02-26 19:09:51 +01:00
Boxy 3a4c5b0447 Merge from rustc 2025-02-25 21:27:44 +00:00
jyn c5b75dc7bd
use lua locals
Co-authored-by: DianQK <dianqk@dianqk.net>
2025-02-24 00:12:55 -05:00
jyn a55bd19ca7 document how to setup RA for nvim automatically 2025-02-23 22:07:09 -05:00
bors 27dffea545 Auto merge of #137215 - onur-ozkan:rustc-tool-build-stages, r=jieyouxu,Kobzol
stabilize stage management for rustc tools

https://github.com/rust-lang/rust/pull/135990 got out of control due to excessive complexity. This PR aims to achieve the same goal with a simpler approach, likely through multiple smaller PRs. I will keep the other one read-only and open as a reference for future work.

This work stabilizes the staging logic for `ToolRustc` programs, so you no longer need to handle build and target compilers separately in steps. Previously, most tools didn't do this correctly, which was causing the compiler to be built twice (e.g., `x test cargo --stage 1` would compile the stage 2 compiler before, but now it only compiles the stage 1 compiler).

I also tried to document how we should write `ToolRustc` steps as they are quite different and require more attention than other tools.

Next goal is to stabilize how stages are handled for the rustc itself. Currently, `x build --stage 1` builds the stage 1 compiler which is fine, but `x build compiler --stage 1` builds stage 2 compiler.

~~for now, r? ghost~~
2025-02-23 05:03:26 +00:00
Deadbeef 4f88394545 Rewrite effects checking chapter 2025-02-20 21:39:45 +08:00
Matthias Krüger 9d7d3f90be
Rollup merge of #137227 - epage:features_untracked, r=compiler-errors
docs(dev): Update the feature-gate instructions

`features_untracked` was removed in #114723

features are now functions as of  #132027
2025-02-19 18:52:08 +01:00
Matthias Krüger c4d5fa6a0e
Rollup merge of #127793 - ChaiTRex:zed_support, r=Kobzol
Added project-specific Zed IDE settings

This repository currently has project-specific VS Code IDE settings in `.vscode` and `compiler/rustc_codegen_cranelift/.vscode`. Now there are equivalent project-specific Zed IDE settings alongside those.

This fixes `rust-analyzer` not being able to properly handle this project.

Note that:

1. The contents of `src/tools/rust-analyzer/.vscode` could not be translated to Zed, as they aren't basic IDE settings.
2. One of the VS Code settings in `.vscode` has no corresponding setting in Zed, and so this has been noted like this:

    ```json
      "_settings_only_in_vs_code_not_yet_in_zed": {
        "git.detectSubmodulesLimit": 20
      },
    ```
2025-02-19 18:52:03 +01:00
onur-ozkan 97b80c80d1 add rustc-dev doc about bootstrap tools
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-19 09:03:35 +03:00
Ed Page 1520629844 docs(dev): Access features as functions, not members
This was changed in #132027
2025-02-18 10:35:13 -06:00
Ed Page 209dd46dad docs(dev): Remove reference to features_untracked
This was removed in #114723
2025-02-18 10:28:36 -06:00
Chai T. Rex 019264fc55 Add Zed to dev guide suggested workflows page 2025-02-17 23:56:38 -05:00
Jakub Beránek 912575e174
Update documentation 2025-02-17 12:27:44 +01:00
许杰友 Jieyou Xu (Joe) 141a8a1962 rustc-dev-guide: document `COMPILER` and `COMPILER_FOR` tracing targets 2025-02-16 18:47:57 +08:00
Florian Brucker 1979d85189 Fix examples to work with nightly-2025-02-13
While there were comments indicating which nightly versions the examples
were tested with, those versions did not work for me: neither did the
examples compile, nor did they produce the expected output.

This commit fixes the compilation issues, using nightly-2025-02-13 for
all examples (previously the version differed between the examples) and,
in the case of the `rustc_driver` examples, also fixes the argument
passing: rustc ignores the first argument, so we need to pass the
filename as the second (otherwise we only get the help text printed).

Note that the `rustc-interface-getting-diagnostics.rs` example still
does not produce any output, which I assume is not how it is intended.
However, I don't know enough to fix it.

To avoid inconsistencies between the documented version and the actually
required version I've moved the version comment from the Markdown into
the Rust code where it hopefully won't be forgotten as easily.

Finally I've clarified in the examples' README that you also need to use
the proper nightly version when compiling the examples, not just when
running them.
2025-02-15 19:44:32 +01:00
许杰友 Jieyou Xu (Joe) f32fc55183 rustc-dev-guide: document `{ignore,only}-rustc_abi-x86-sse2` 2025-02-15 23:17:07 +08:00
许杰友 Jieyou Xu (Joe) ad2eb5504e
Merge pull request #2252 from chenyukang/fix-perf
Add note for perf issue
2025-02-14 17:56:04 +08:00
Martin Liska 362246d1a8 Fix borked link 2025-02-14 07:23:10 +01:00
yukang b353b6e10a add notes for perf issue 2025-02-14 13:49:02 +08:00
Jubilee 2ddb2f8565
Rollup merge of #136924 - Kobzol:bootstrap-tracing, r=jieyouxu
Add profiling of bootstrap commands using Chrome events

Since we now have support for tracing in bootstrap, and the execution of most commands is centralized within a few functions, it's quite trivial to also trace command execution, and visualize it using the Chrome profiler. This can be helpful both to profile what takes time in bootstrap and also to get a visual idea of what happens in a given bootstrap invocation (since the execution of external commands is usually the most interesting thing).

This is how it looks:
![image](https://github.com/user-attachments/assets/3351489e-3a0f-4729-9082-5bf40c586d4b)

I first tried to use [tracing-flame](https://github.com/tokio-rs/tracing/tree/master/tracing-flame), but the output wasn't very useful, because the event/stackframe names were bootstrap code locations, instead of the command contents.

r? ``@jieyouxu``
2025-02-13 21:37:51 -08:00
bors 812566df01 Auto merge of #136593 - lukas-code:ty-value-perf, r=oli-obk
valtree performance tuning

Summary: This PR makes type checking of code with many type-level constants faster.

After https://github.com/rust-lang/rust/pull/136180 was merged, we observed a small perf regression (https://github.com/rust-lang/rust/pull/136318#issuecomment-2635562821). This happened because that PR introduced additional copies in the fast reject code path for consts, which is very hot for certain crates: 6c1d960d88/compiler/rustc_type_ir/src/fast_reject.rs (L486-L487)

This PR improves the performance again by properly interning the valtrees so that copying and comparing them becomes faster. This will become especially useful with `feature(adt_const_params)`, so the fast reject code doesn't have to do a deep compare of the valtrees.

Note that we can't just compare the interned consts themselves in the fast reject, because sometimes `'static` lifetimes in the type are be replaced with inference variables (due to canonicalization) on one side but not the other.

A less invasive alternative that I considered is simply avoiding copies introduced by https://github.com/rust-lang/rust/pull/136180 and comparing the valtrees it in-place (see commit: 9e91e50ac5 / perf results: https://github.com/rust-lang/rust/pull/136593#issuecomment-2642303245), however that was still measurably slower than interning.

There are some minor regressions in secondary benchmarks: These happen due to changes in memory allocations and seem acceptable to me. The crates that make heavy use of valtrees show no significant changes in memory usage.
2025-02-13 15:27:30 +00:00
Jakub Beránek 470a207ef0 Document bootstrap profiling 2025-02-13 13:36:31 +01:00
Jacob Pratt ae56be98d4
Rollup merge of #136858 - safinaskar:parallel-cleanup-2025-02-11-07-54, r=SparrowLii
Parallel-compiler-related cleanup

Parallel-compiler-related cleanup

I carefully split changes into commits. Commit messages are self-explanatory. Squashing is not recommended.

cc "Parallel Rustc Front-end" https://github.com/rust-lang/rust/issues/113349

r? SparrowLii

``@rustbot`` label: +WG-compiler-parallel
2025-02-13 03:53:31 -05:00
jyn 356e4816b2 document bootstrap logging 2025-02-12 21:03:34 -05:00
Lukas Markeffsky db57a5f454 intern valtrees 2025-02-13 00:38:17 +01:00
Guillaume Gomez b54679e461
Rollup merge of #136871 - madsmtm:link-to-lang-procedures, r=scottmcm
dev-guide: Link to `t-lang` procedures for new features

I was confused in https://github.com/rust-lang/rust/pull/136867, because while I did remember that such a procedure existed, but I couldn't seem to find it in the dev guide.
2025-02-12 20:30:53 +01:00
bors a071c7c0c8 Auto merge of #135336 - tshepang:patch-5, r=jieyouxu
clarify and document needs-dynamic-linking

try-job: test-various
2025-02-12 15:39:48 +00:00
Tshepang Mbambo 5cb9ff172f document the directive 2025-02-11 22:05:40 +02:00
Mads Marquart 66e5b92c31 dev-guide: Link to t-lang procedures for new features 2025-02-11 15:49:04 +01:00
Askar Safin eeec2f4b40 src/doc/rustc-dev-guide/src/parallel-rustc.md: remove Arc and Rc (it seems they are left-over after my PR) 2025-02-11 09:25:46 +03:00
Askar Safin f0bcb73760 compiler/rustc_data_structures/src/sync.rs: remove atomics, but not AtomicU64! 2025-02-11 08:57:36 +03:00
Askar Safin efa3dae1e1 compiler/rustc_data_structures/src/sync.rs: delete Weak 2025-02-11 08:28:28 +03:00
Askar Safin 844a47ab9f compiler/rustc_data_structures/src/sync.rs: delete MappedLockGuard
It seems it is left-over after some refactoring
2025-02-11 08:24:50 +03:00
The rustc-dev-guide Cronjob Bot 26a4c95a7e Merge from rustc 2025-02-10 04:02:38 +00:00
Urgau ce1d055f2f
Rollup merge of #136530 - Kobzol:x-perf, r=onur-ozkan
Implement `x perf` directly in bootstrap

Discussed [here](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Turning.20.60x.20perf.60.20into.20a.20first.20class.20command).

Implementing the command directly in bootstrap let's us correctly build the compiler toolchain based on input arguments (such as include rustdoc in the toolchain [only] when needed), and it also makes the CLI interface nicer.

r? ``@onur-ozkan``
2025-02-09 00:37:27 +01:00
Martin Liska dc919f8296 Remove reference to enum.Reveal 2025-02-07 09:03:22 +01:00
Michael Howell 9143d8d6c8 Update links to type schemas
What used to be in externs.js is now in rustdoc.d.ts.
2025-02-06 08:29:10 -07:00
MarcoIeni 8a6fd47a85
improve CI cache docs 2025-02-06 14:59:43 +01:00
Martin Liska aba092fd08 Replace link with a https based one 2025-02-06 09:12:42 +01:00
Jakub Beránek 0238431e20 Update rustc-dev-guide 2025-02-05 15:33:40 +01:00
许杰友 Jieyou Xu (Joe) b6a1fa4401
Merge pull request #2242 from DuskyElf/master 2025-02-04 04:30:57 +08:00
Tshepang Mbambo b3c5e9c734
overlong line 2025-02-03 22:07:10 +02:00
Rehmatpal Singh 2790e9aed6
Remove "Port run-make tests from Make to Rust" tracking issue from Recurring work 2025-02-04 01:26:15 +05:30
Askar Safin 9f683c9070 tree-wide: parallel: Fully removed all `Lrc`, replaced with `Arc` 2025-02-03 13:25:57 +03:00
Yuki Okushi 9350966973
Merge pull request #2236 from rust-lang/rustc-pull 2025-02-02 17:31:01 +09:00
Yuki Okushi 198de243e1
Apply suggestions from code review 2025-02-02 17:30:30 +09:00
nora cccaff7377
Merge pull request #2233 from chiichen/nix-shell-dev
Use a more convinient way of developing rustc on NixOS
2025-02-02 08:52:17 +01:00
Jakub Beránek c1b96f0f88 Reword submodule handling 2025-02-01 16:42:28 +01:00
bors be693b567c Auto merge of #136350 - matthiaskrgr:rollup-6eqfyvh, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - #134531 ([rustdoc] Add `--extract-doctests` command-line flag)
 - #135860 (Compiler: Finalize dyn compatibility renaming)
 - #135992 (Improve documentation when adding a new target)
 - #136194 (Support clobber_abi in BPF inline assembly)
 - #136325 (Delay a bug when indexing unsized slices)
 - #136326 (Replace our `LLVMRustDIBuilderRef` with LLVM-C's `LLVMDIBuilderRef`)
 - #136330 (Remove unnecessary hooks)
 - #136336 (Overhaul `rustc_middle::util`)
 - #136341 (Remove myself from vacation)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-01-31 20:16:46 +00:00
Matthias Krüger 30c56c6e2b
Rollup merge of #135992 - madsmtm:new-target-docs, r=jieyouxu
Improve documentation when adding a new target

https://github.com/rust-lang/rust/pull/133631#issuecomment-2607877936 shows that it can be a bit difficult process-wise to add a new target.

I've added a bit of text to the docs, suggesting that users add the target defintion/spec first, and later work on `std` support.

I also found that we have two places where we document how to add a new target. I've linked these for now, but they should probably be merged somehow in the future.

`@rustbot` label A-docs
r? compiler
CC `@workingjubilee` who's worked a lot on target specs IIRC.
2025-01-31 12:28:16 +01:00
bors fb72badc0b Auto merge of #136332 - jhpratt:rollup-aa69d0e, r=jhpratt
Rollup of 9 pull requests

Successful merges:

 - #132156 (When encountering unexpected closure return type, point at return type/expression)
 - #133429 (Autodiff Upstreaming - rustc_codegen_ssa, rustc_middle)
 - #136281 (`rustc_hir_analysis` cleanups)
 - #136297 (Fix a typo in profile-guided-optimization.md)
 - #136300 (atomic: extend compare_and_swap migration docs)
 - #136310 (normalize `*.long-type.txt` paths for compare-mode tests)
 - #136312 (Disable `overflow_delimited_expr` in edition 2024)
 - #136313 (Filter out RPITITs when suggesting unconstrained assoc type on too many generics)
 - #136323 (Fix a typo in conventions.md)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-01-31 09:42:28 +00:00
Ryan Cumming 55cd18d5cc
Fix a typo in conventions.md
Introduced in #135950
2025-01-31 10:23:46 +11:00
Jakub Beránek a0505b3e7d Rewrite section on executing Docker tests 2025-01-30 18:33:34 +01:00
Michael Goulet 0cd4069ee4 Rework rustc_dump_vtable 2025-01-30 15:30:04 +00:00
bors 9cefcea1ce Auto merge of #136038 - compiler-errors:outlives, r=lcnr
Simplify and consolidate the way we handle construct `OutlivesEnvironment` for lexical region resolution

This is best reviewed commit-by-commit. I tried to consolidate the API for lexical region resolution *first*, then change the API when it was finally behind a single surface.

r? lcnr or reassign
2025-01-30 11:40:32 +00:00
chiichen 72ceb939b3 feat: modify developing with nix section 2025-01-30 18:03:27 +08:00
chiichen a14bbfbea9 chore: discard padding white space 2025-01-30 18:02:58 +08:00
Boxy f61d56ba4d
Rustc pull 2025-01-29 16:46:09 +00:00
许杰友 Jieyou Xu (Joe) ea884accae
Merge pull request #2227 from Joren-vanGoethem/master 2025-01-29 05:03:36 +00:00
许杰友 Jieyou Xu (Joe) 5000a7027c
Merge pull request #2231 from yegeunyang/#2069 2025-01-29 05:02:55 +00:00
yegeunyang 2332c8e114 Touch up a sentence 2025-01-28 22:56:52 -06:00
许杰友 Jieyou Xu (Joe) ed1fc5d8e1
Merge pull request #2232 from yegeunyang/#2114
Add a link to declare_lint! macro doc in diagnostics.md
2025-01-29 04:08:54 +00:00
yegeunyang 7e74e43eaa Add link to declare_lint! macro 2025-01-28 21:05:12 -06:00
yegeunyang 930c6a61e3 Add "Writing tests" section 2025-01-28 20:42:26 -06:00
Michael Goulet cd9a8cc9c3 Move outlives env computation into methods 2025-01-28 18:55:03 +00:00
Michael Howell bc8f00367e Add some extra pointers for rustdoc frontend devs 2025-01-28 11:04:26 -07:00
Boxy b98da0d8e3 Merge from rustc 2025-01-28 11:57:19 +00:00
Joren-vanGoethem 636c5b1a4d
Update about-this-guide.md 2025-01-28 07:43:16 +01:00
Eric Huss ae3a58a13a
Correct information on dylib compression
Compression of dylibs was removed in https://github.com/rust-lang/rust/pull/113695 (and decompression removed in https://github.com/rust-lang/rust/pull/132402).
2025-01-26 12:08:48 -08:00
许杰友 Jieyou Xu (Joe) a86a368f0f rustc-dev-guide: update bootstrap tracing docs 2025-01-27 01:24:53 +08:00
León Orell Valerian Liehr 3ffcf606a9
Remove accidental leading empty line in code block 2025-01-26 02:42:09 +01:00
Eric Huss 684424aeef Update boring lines to sync with rustdoc 2025-01-25 13:49:32 -08:00
Matthias Krüger eda1e03c12
Rollup merge of #135829 - Kobzol:rustc-push, r=jieyouxu
Rustc dev guide subtree update

r? ``@ghost``
2025-01-24 23:25:44 +01:00
Matthias Krüger 3dcb2ad5d9
Rollup merge of #135950 - Kobzol:tidy-python-improvements, r=onur-ozkan
Tidy Python improvements

Fixes display of Python formatting diffs in tidy, and refactors the code to make it simpler and more robust. Also documents Python formatting and linting in the Rustc dev guide.

Fixes: https://github.com/rust-lang/rust/issues/135942

r? `@onur-ozkan`
2025-01-24 16:25:44 +01:00
Matthias Krüger 2b37fbe050
Rollup merge of #135926 - jieyouxu:needs-subprocess-thread, r=oli-obk
Implement `needs-subprocess` directive, and cleanup a bunch of tests to use `needs-{subprocess,threads}`

### Summary

Closes #128295.

- Implements `//@ needs-subprocess` directive in compiletest as requested in #128295. However, compiletest is a host tool, so we can't just try to spawn process because that spawns the process on *host*, not the *target*, under cross-compilation scenarios.
    - The short-term solution is to add *Yet Another* list of allow-list targets.
    - The long-term solution is to first check if a `$target` supports std, then try to run a binary to do run-time capability detection *on the target*. But that is tricky because you have to build-and-run a binary *for the target*.
    - This PR picks the short-term solution, because the long-term solution is highly non-trivial, and it's already an improvement over individual `ignore-*`s all over the place.
    - Opened an issue about the long-term solution in #135928.
- Documents `//@ needs-subprocess` in rustc-dev-guide.
- Replace `ignore-{wasm,wasm32,emscripten,sgx}` with `needs-{subprocess,threads}` where suitable in tests.
- Some drive-by test changes as I was trying to figure out if I could use `needs-{subprocess,threads}` and found some bits needlessly distracting.

Count of tests that use `ignore-{wasm,wasm32,emscripten,sgx}` before and after this PR:

| State | `ignore-sgx` | `ignore-wasm` | `ignore-emscripten` |
| - | - | - | - |
| Before this PR | 96 | 88 | 207 |
| After this PR | 36 | 38 | 61 |

<details>
<summary>Commands used to find out locally</summary>

```
--- before

[17:40] Joe:rust (fresh) | rg --no-ignore -l "ignore-sgx" tests | wc -l
96
[17:40] Joe:rust (fresh) | rg --no-ignore -l "ignore-wasm" tests | wc -l
88
[17:40] Joe:rust (fresh) | rg --no-ignore -l "ignore-emscripten" tests | wc -l
207

--- after

[17:39] Joe:rust (needs-subprocess-thread) | rg --no-ignore -l "ignore-sgx" tests | wc -l
36
[17:39] Joe:rust (needs-subprocess-thread) | rg --no-ignore -l "ignore-wasm" tests | wc -l
38
[17:39] Joe:rust (needs-subprocess-thread) | rg --no-ignore -l "ignore-emscripten" tests | wc -l
61
```
</details>

### Review advice

- Best reviewed commit-by-commit.
- Non-trivial test changes (not mechanically simple replacements) are split into individual commits to help with review. Their individual commit messages give some basic description of the changes.
- I *could* split some test changes out into another PR, but I found that I needed to change some tests to `needs-threads`, some to `needs-subprocess`, and some needed to use *both*, so they might conflict and become very annoying.

---

r? ``@ghost`` (need to run try jobs)

try-job: x86_64-msvc-1
try-job: i686-msvc-1
try-job: i686-mingw
try-job: x86_64-mingw-1
try-job: x86_64-apple-1
try-job: aarch64-apple
try-job: aarch64-gnu
try-job: test-various
try-job: armhf-gnu
2025-01-24 16:25:43 +01:00
Mads Marquart 2e060866f0 Cross-link documentation for adding a new target
Both the target tier policy and the rustc-dev-guide has documentation on
this, let's make sure people see both.
2025-01-24 14:40:12 +01:00
Ada Alakbarova 168456e7a3
fix(solve/significant-changes): typo 2025-01-24 14:12:17 +01:00
Jakub Beránek 80aac13e78
Document Python formatting and linting in the rustc-dev-guide 2025-01-24 09:35:46 +01:00
Matthias Krüger 74962603cb
Rollup merge of #135489 - RalfJung:TryFromSliceError, r=tgross35
remove pointless allowed_through_unstable_modules on TryFromSliceError

This got added in https://github.com/rust-lang/rust/pull/132482 but the PR does not explain why. `@lukas-code` do you still remember? Also Cc `@Noratrieb` as reviewer of that PR.

If I understand the issue description correctly, all paths under which this type is exported are stable now: `core::array::TryFromSliceError` and `std::array::TryFromSliceError`. If that is the case, we shouldn't have the attribute; it's a terrible hack that should only be used when needed to maintain backward compatibility. Getting some historic information right is IMO *not* sufficient justification to risk accidentally exposing this type via more unstable paths today or in the future.
2025-01-24 08:08:06 +01:00
Matthias Krüger 520ca6b0da
Rollup merge of #135880 - bjorn3:misc_driver_refactors, r=oli-obk
Get rid of RunCompiler

The various `set_*` methods that have been removed can be replaced by setting the respective fields in the `Callbacks::config` implementation. `set_using_internal_features` was often forgotten and it's equivalent is now done automatically.
2025-01-23 19:54:26 +01:00
许杰友 Jieyou Xu (Joe) 0f175948cd rustc-dev-guide: document `needs-subprocess` directive 2025-01-23 20:51:28 +08:00
bjorn3 76f7584f6a Remove RunCompiler
It has become nothing other than a wrapper around run_compiler.
2025-01-23 09:38:58 +00:00
Jakub Beránek 3543f80951
Add test for checking used glibc symbols 2025-01-21 10:20:24 +01:00
Jakub Beránek 8c5b8fa814
Merge pull request #2215 from Kobzol/pull
rustc pull
2025-01-20 15:54:51 +01:00
Jakub Beránek 1e32114309 Merge from rustc 2025-01-20 14:12:41 +01:00
Jakub Beránek 0ae03351d2 Add portable SIMD to list of subtrees 2025-01-20 13:53:10 +01:00
Noratrieb 166fa3b79e Fix dev guide docs for error-pattern
I know it would have made more sense to make this PR to the dev guide
repo but I had already made the fix before I realized that.
2025-01-19 11:36:41 +01:00
Yuki Okushi c1b4cfaa96
Merge pull request #2211 from patrickoliveira15/patch/inference-invariance 2025-01-18 05:26:20 +09:00
Patrick Oliveira fbceffc7ca
remove outdated text about wfx implies 2025-01-17 12:04:42 -03:00
许杰友 Jieyou Xu (Joe) e9d9b29d06 compiletest: fix outdated `rustdoc-js` test suite name 2025-01-17 08:40:04 +08:00
lcnr 46458edee5 nyaa 2025-01-15 14:23:48 +01:00
Ryan Mehri b4940bbed6 fix some more typos 2025-01-14 23:01:42 -08:00
Noah Lev 7a4c3d3c30 Fix some broken links
* Rename `StringReader -> Lexer`
* Remove deleted `Query` struct
* Update some internal links
2025-01-14 21:52:33 -08:00
Ralf Jung 1cd70aaa2c rustc-dev-guide: add note about not adding rustc_allowed_through_unstable_modules to more items 2025-01-14 17:00:12 +01:00
许杰友 Jieyou Xu (Joe) a58b85a26c rustc-dev-guide: document `BOOTSTRAP_TRACING` and bootstrap `tracing` setup 2025-01-13 13:46:20 +08:00
onur-ozkan eecd68cf55 rustc-dev-guide: update outdated LLVM stamp filename
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-01-12 08:47:57 +03:00
许杰友 Jieyou Xu (Joe) aca4d07e08
Merge pull request #2205 from ehuss/ci-config 2025-01-11 00:34:43 +08:00
Eric Huss cd9705f029 Fix calculate-job-matrix.py link 2025-01-10 08:26:52 -08:00
Eric Huss 42768820fe Document how to find the configuration used in CI
This documents how to determine which settings are used in CI, since I
see this question come up regularly. We currently don't have a great way
to answer the question, but at least there is something.
2025-01-10 08:16:37 -08:00
Samson 8789c2cf9b
Fix rib example
related zulip thread: https://rust-lang.zulipchat.com/#narrow/channel/182449-t-compiler.2Fhelp/topic/Ribs.20in.20name.20resolution
2025-01-07 21:29:45 +01:00
Jakub Beránek 280d73878a Update rustc-dev-guide 2025-01-07 19:10:03 +01:00
Max Heller 0fd52366ca
Fix broken raw HTML (#2198) 2025-01-07 16:00:59 +08:00
许杰友 Jieyou Xu (Joe) 32835d18d8 Only keep label description in Forge docs 2025-01-06 18:59:36 +02:00
Jakub Beránek 1dad69ebd4
Add rustc-dev-guide to the list of repositories managed by josh (#2197) 2025-01-06 18:30:59 +08:00
Boxy 885fd79971 Split stuff out of representing types, and rewrite early/late bound chapter (#2192) 2025-01-05 17:51:45 +01:00
Stuart Cook bb71c99918 Describe how to use rust-analyzer with `rmake.rs` (#2191) 2025-01-05 17:51:45 +01:00
Tshepang Mbambo 027bbb345c fix comment 2025-01-05 17:51:45 +01:00
Tshepang Mbambo b3b1d09278 make paragraph more readable 2025-01-05 17:51:45 +01:00
Tshepang Mbambo 7dbf25b2f8 repetition not needed 2025-01-05 17:51:45 +01:00
Jakub Beránek eb70681870 Document josh subtrees and update subtree repository list (#2182) 2025-01-05 17:51:45 +01:00
Onur Özkan 63548be44e comment out FIXMEs to not display them on UI (#2186) 2025-01-05 17:51:45 +01:00
Max Heller 08b4cd8efc Use `id` attribute for `<a>` tags instead of deprecated `name` attribute (#2184) 2024-12-31 22:02:50 +08:00
Stuart Cook 6637742182 Remove stale implementation details of coverage instrumentation (#2179)
This level of detail in the dev guide is a maintenance burden; better to leave
this sort of thing to in-tree comments.
2024-12-30 12:02:52 +11:00
Martin Liška ddff18e30a Add missing link for [Node] (#2177) 2024-12-30 04:34:34 +08:00
Martin Liška ecad0213d7 Fix 403 received for HEAD request (#2176) 2024-12-30 04:33:45 +08:00
clubby789 5f32a38a3d Document `x test --no-capture` (#2174) 2024-12-28 19:55:20 +08:00
Stuart Cook 9b22375c78 Remove the `-test` suffix from normalize directives (#2172) 2024-12-28 17:32:43 +08:00
bjorn3 e70f551db6 Rework the driver docs (#2162) 2024-12-27 20:40:32 +08:00
clubby789 4e746875ed Document `forbid-output` for UI tests (#2171) 2024-12-27 12:21:52 +00:00
clubby789 b746f63983 completions: Zsh is now supported (#2173) 2024-12-27 09:03:10 +08:00
lcnr 6af30f87b7 region-outlives propagation (#2169)
* region-outlives propagation

* woops

* gamer
2024-12-23 10:17:51 +01:00
clubby789 a49028cf1e Document the `--debugger` flag (#2170) 2024-12-23 08:43:28 +00:00
Marco Ieni b5529ca9ba document the public ci dashboard (#2167) 2024-12-18 19:53:17 +08:00
Chris Bloodsworth 6afff2e610 Fix trivial typo of "query-fied"
"Query-field" should be "Query-fied" - three instances.
2024-12-18 08:01:33 +02:00
Tshepang Mbambo ee9a5845e0 typo, pause 2024-12-18 07:56:30 +02:00
Ryan Mehri 421c7282e1 Fix some typos 2024-12-18 07:56:30 +02:00
Eric Huss 766fbbbe3d Add suggestion for `--keep-stage 0` (#2164) 2024-12-18 01:00:38 +08:00
Connor Tsui 8e495d4b93 specify what a CGU is (#2163) 2024-12-16 15:12:01 +08:00
Tshepang Mbambo 1f2c5e10ff functionality removed from codebase (part 2) (#2160) 2024-12-10 22:27:37 +08:00
Tshepang Mbambo 8f3bf55222 functionality removed from codebase (#2159) 2024-12-10 22:11:11 +08:00
Orion Gonzalez 3ca330e1c3 remove polymorphization 2024-12-10 13:29:13 +00:00
Ralf Jung fcadf9608b squashing: recommend --keep-base when squashing without a conflict (#2157) 2024-12-07 06:59:23 +08:00
lcnr 1f851c0fc5 update section even more (#2156) 2024-12-05 20:30:36 +08:00
lcnr fccf752c1c closure constraints (#2155) 2024-12-05 12:01:46 +01:00
许杰友 Jieyou Xu (Joe) 740947ed6d Remove `//@ compare-output-lines-by-subset` directive (#2151) 2024-12-05 13:02:11 +08:00
许杰友 Jieyou Xu (Joe) df234c0f0e Document `needs-target-has-atomic` directive (#2154) 2024-12-05 13:01:46 +08:00
许杰友 Jieyou Xu (Joe) 8df3580d08 Spell out `git submodule deinit -f --all` (#2153) 2024-12-02 12:45:30 +08:00
许杰友 Jieyou Xu (Joe) 54c6a86858 Explain how to deal with exploded git submodules (#2152) 2024-12-02 12:38:56 +08:00
许杰友 Jieyou Xu (Joe) 67054cce92 Update `//@ proc-macro` aux build directive docs (#2149)
Co-authored-by: Eric Huss <eric@huss.org>
2024-11-29 13:01:15 +08:00
许杰友 Jieyou Xu (Joe) 65a59a3398 Remove `pretty-expanded` as it no longer exists (#2147) 2024-11-28 09:27:28 +08:00
Keith Wansbrough 8d9b40183e Fix trivial typo
"And" should be "An" - one instance.
2024-11-27 18:31:18 -05:00
Camille Gillot 0962f0e058 Remove -Zfuel. (#2032) 2024-11-27 18:31:58 +08:00
Boxy c4737a8d01 Remove constants section as it is outdated 2024-11-22 11:17:57 +00:00
Boxy f71456b753 Flatten generic parameter defs section 2024-11-22 11:17:57 +00:00
Taylor Cramer 6ea822df54 Add instructions to test error code docs (#2145) 2024-11-21 10:58:56 -08:00
Boxy 47a3a1d261 Reorganize the "Source Code Representation" chapters (#2142) 2024-11-21 20:28:23 +08:00
Yutaro Ohno 16e30472c9 Make `Diag` a clickable link in Suggestion section (#2140) 2024-11-20 16:21:27 +08:00
Ralf Jung 544b1fc77d update for rustc_intrinsic_const_stable_indirect (#2138)
Update for rust-lang/rust#133142
2024-11-18 18:16:00 +01:00
许杰友 Jieyou Xu (Joe) 65e7344ebb Mention `RUSTC_BOOTSTRAP` for misc testing (#2136) 2024-11-18 16:18:15 +08:00
许杰友 Jieyou Xu (Joe) 1f42c533c9 Document how to acquire `cdb.exe` (#2137) 2024-11-16 16:53:42 +00:00
许杰友 Jieyou Xu (Joe) 7ed13a5faf Document `max-llvm-major-version` directive (#2129) 2024-11-14 22:16:16 +08:00
许杰友 Jieyou Xu (Joe) 530b2eb228 Document `exact-llvm-major-version` directive (#2135) 2024-11-14 17:38:14 +08:00
Sam Estep 67dc382ac5 Note Rustfmt for separate rust-analyzer directory (#2134) 2024-11-13 21:37:25 +08:00
Tshepang Mbambo 4ff8d9a171 still accurate (#2133) 2024-11-10 13:18:32 +08:00