281401 Commits

Author SHA1 Message Date
Michael Howell
4d551dd754 docs: fix broken intra-doc links that never worked 2025-02-15 12:21:38 -07:00
Michael Howell
61a97448e5 rustdoc: improve refdef handling in the unresolved link lint
This commit takes advantage of a feature in pulldown-cmark that
makes the list of link definitions available to the consuming
application. It produces unresolved link warnings for refdefs
that aren't used, and can now produce exact spans for the dest
even when it has escapes.
2025-02-15 12:21:35 -07:00
bors
608e228ca9 Auto merge of #137066 - onur-ozkan:137034-blocker, r=jieyouxu
check if CI-LLVM is enabled before testing it

Blocker for #137034
2025-02-15 14:58:47 +00:00
bors
69fd5e4059 Auto merge of #136828 - yotamofek:pr/rustdoc/more-laziness, r=GuillaumeGomez,aDotInTheVoid
Do more lazy-formatting in `librustdoc` 🦥

Modify some formatting to be lazy, i.e. to not allocate interim strings that are later formatted into different strings.
Commits are small and stand on their own, and should mostly compile separately. (The first one doesn't compile due to `dead_code` because all it does is introduce a helper used in later commits)

Really excited about this one, local perf results are really good. I'd love a perf run to see how this looks on CI. This is the comparison of `instructions:u` count between master and this PR, on my computer:

# Summary
| | Range | Mean | Count |
|:---:|:---:|:---:|:---:|
| Regressions | - | 0.00% | 0 |
| Improvements | -8.03%, -0.40% | -2.93% | 5 |
| All | -8.03%, -0.40% | -2.93% | 5 |

# Primary benchmarks
| Benchmark | Profile | Scenario | % Change | Significance Factor |
|:---:|:---:|:---:|:---:|:---:|
| typenum-1.17.0 | doc | full | -8.03% | 40.16x |
| nalgebra-0.33.0 | doc | full | -4.19% | 20.97x |
| stm32f4-0.14.0 | doc | full | -1.35% | 6.73x |
| libc-0.2.124 | doc | full | -0.67% | 3.33x |
| cranelift-codegen-0.82.1 | doc | full | -0.40% | 1.99x |
2025-02-15 11:57:15 +00:00
onur-ozkan
b2d6a7f693 check if CI-LLVM is enabled before testing it
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-15 11:00:31 +03:00
bors
8c07d140e0 Auto merge of #137065 - jhpratt:rollup-ree9mej, r=jhpratt
Rollup of 9 pull requests

Successful merges:

 - #135687 (re-export `FromCoroutine` from `core::iter`)
 - #135813 (CI: split i686-mingw job to three free runners)
 - #136749 (Implement Extend<AsciiChar> for String)
 - #136879 (Add safe new() to NotAllOnes)
 - #136978 (Windows: Update generated bindings)
 - #137028 (mir_build: Clarify some code for lowering `hir::PatExpr` to THIR)
 - #137029 (Remove unnecessary check code in unused_delims)
 - #137056 (made check_argument_compat public for use in miri)
 - #137062 (Forward all default methods for I/O impls)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-02-15 07:52:03 +00:00
Jacob Pratt
ba89ea8add
Rollup merge of #137062 - thaliaarchi:io-optional-methods/write, r=workingjubilee
Forward all default methods for I/O impls

Forward all default methods for `&mut T` and `Box<T>` to the inner `io::Read`, `io::Write`, `io::Seek`, and `io::BufRead` types.
2025-02-15 02:37:33 -05:00
Jacob Pratt
6593a25028
Rollup merge of #137056 - geetanshjuneja:pub, r=RalfJung
made check_argument_compat public for use in miri

Links to [issue](https://github.com/rust-lang/miri/issues/3842) and it's [PR](https://github.com/rust-lang/miri/pull/4185#issuecomment-2657554989)  in miri.
2025-02-15 02:37:32 -05:00
Jacob Pratt
221ba2dfd1
Rollup merge of #137029 - chenyukang:yukang-fix-unused-check, r=jieyouxu,compiler-errors
Remove unnecessary check code in unused_delims

After PR #108297, we make sure there is no unmatched delims in early lint check.
2025-02-15 02:37:31 -05:00
Jacob Pratt
c133123102
Rollup merge of #137028 - Zalathar:thir-pat-expr, r=compiler-errors
mir_build: Clarify some code for lowering `hir::PatExpr` to THIR

A few loosely-related improvements to the code that lowers certain parts of HIR patterns to THIR.

I was originally deferring this until after #136529, but that PR probably won't happen, whereas these changes should hopefully be uncontroversial.

r? Nadrieril or reroll
2025-02-15 02:37:31 -05:00
Jacob Pratt
224be79129
Rollup merge of #136978 - ChrisDenton:windows-bindgen, r=Amanieu
Windows: Update generated bindings

Update to windows-bindgen 0.59.

This update is aimed at reducing churn in the future, but means a bit more churn now:

- `bindings.txt` no longer needs us to write the namespace for each item. This is good because it means in the future we won't need to change them if the namespace changes. However, there are a few where we still need to disambiguate due to duplicate items (this is a bug in the upstream metadata).
- The output in `windows-sys.rs` is now sorted. It was mostly sorted before but not intentionally. This should mean future changes are less noisy.

The actual code changes are minimal here. A few types are now `bool` instead of `BOOLEAN`, which is more convenient.
2025-02-15 02:37:30 -05:00
Jacob Pratt
1524b5319a
Rollup merge of #136879 - kornelski:non1, r=Noratrieb
Add safe new() to NotAllOnes

Replaces duplicated `unsafe` code with a single, easier to verify implementation.
2025-02-15 02:37:29 -05:00
Jacob Pratt
26be558650
Rollup merge of #136749 - mzeitlin11:extend-asciichar, r=scottmcm
Implement Extend<AsciiChar> for String

Implement `Extend<AsciiChar>` for `String` as suggested in https://github.com/rust-lang/rust/issues/110998#issuecomment-2590122968. Also implements `Extend<&AsciiChar>` since there's an analogous impl for `Extend<&char>`, but happy to remove if not thought useful.

r? `@scottmcm`
since you requested it, but no pressure to review!
2025-02-15 02:37:28 -05:00
Jacob Pratt
92adb927f1
Rollup merge of #135813 - marcoieni:free-runner-i686-mingw, r=jdno
CI: split i686-mingw job to three free runners

try-job: i686-mingw-1
try-job: i686-mingw-2
try-job: i686-mingw-3
try-job: x86_64-mingw-1
2025-02-15 02:37:27 -05:00
Jacob Pratt
afbeefb684
Rollup merge of #135687 - joseluis:feat-reexport_from_coroutine, r=scottmcm
re-export `FromCoroutine` from `core::iter`

tracking issue: https://github.com/rust-lang/rust/issues/43122
fixes: #135686
2025-02-15 02:37:27 -05:00
Ralf Jung
8769d03caf
add a doc comment 2025-02-15 08:21:27 +01:00
Thalia Archibald
11c174006e Forward all default methods for I/O impls 2025-02-14 21:48:12 -08:00
bors
f77247ac59 Auto merge of #136324 - GrigorenkoPV:erf, r=tgross35
Implement `f{16,32,64,128}::{erf,erfc}` (`#![feature(float_erf)]`)

Tracking issue: #136321

try-job: x86_64-gnu-aux
2025-02-15 04:52:50 +00:00
geetanshjuneja
f3fa720352 made check_argument_compat public 2025-02-15 09:37:01 +05:30
bors
54a0f387ea Auto merge of #137046 - workingjubilee:rollup-u56aw1m, r=workingjubilee
Rollup of 10 pull requests

Successful merges:

 - #133312 (triagebot: automatically add more rustdoc related labels)
 - #134016 (Stabilize `const_is_char_boundary` and `const_str_split_at`.)
 - #136971 (Add a new check-pass UI test for returning `impl Fn(T) -> impl Trait`)
 - #136983 (Prepare standard library for Rust 2024 migration)
 - #137002 (Fix early lint check desc in query)
 - #137006 (borrowck diagnostics cleanup: remove an unused and a barely-used field)
 - #137032 (Decode metadata buffer in one go)
 - #137035 (Normalize closure instance before eagerly monomorphizing it)
 - #137037 (add x86-sse2 (32bit) ABI that requires SSE2 target feature)
 - #137038 (llvm: Tolerate captures in tests)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-02-15 00:30:50 +00:00
yukang
b2197abcc6 Remove unnecessary check code in unused_delims 2025-02-15 07:35:28 +08:00
Jubilee
9d659fc2be
Rollup merge of #137038 - maurer:tolerate-captures, r=nikic
llvm: Tolerate captures in tests

llvm/llvm-project@7e3735d1a1 introduces `captures` annotations. Adjust regexes to be tolerant of these.

`@rustbot` label:+llvm-main
2025-02-14 14:05:28 -08:00
Jubilee
db5238a525
Rollup merge of #137037 - RalfJung:x86-sse2-abi, r=workingjubilee
add x86-sse2 (32bit) ABI that requires SSE2 target feature

This is the first commit of https://github.com/rust-lang/rust/pull/135408:

The primary goal of this is to make SSE2 required for our i686 targets (at least for the ones that use Pentium 4 as their baseline), to ensure they cannot be affected by https://github.com/rust-lang/rust/issues/114479. This has been MCPd in https://github.com/rust-lang/compiler-team/issues/808, and is tracked in https://github.com/rust-lang/rust/issues/133611.

We do this by defining a new ABI that these targets select, and making SSE2 required by the ABI (that's the first commit). That's kind of a hack, but it is the easiest way to make a target feature required via the target spec. In a follow-up change (https://github.com/rust-lang/rust/pull/135408), we can actually make use of SSE2 for the ABI, but that is running into some infrastructure issues.

r? `@workingjubilee`

try-job: aarch64-apple
try-job: aarch64-gnu
try-job: aarch64-gnu-debug
try-job: test-various
try-job: x86_64-gnu-nopt
try-job: dist-i586-gnu-i586-i686-musl
2025-02-14 14:05:27 -08:00
Jubilee
baa5a76b97
Rollup merge of #137035 - compiler-errors:eagerly-mono-closures-after-norm, r=saethlin
Normalize closure instance before eagerly monomorphizing it

We were monomorphizing two versions of the closure (or in the original issue, coroutine) -- one with normalized captures and one with unnormalized captures. This led to a symbol collision.

Fixes #137009

r? `@saethlin` or reassign
2025-02-14 14:05:27 -08:00
Jubilee
69dbedd13e
Rollup merge of #137032 - oli-obk:push-ptvssqnomkpo, r=the8472
Decode metadata buffer in one go

Not sure if this is perf relevant at all, but it was a bit odd before

r? ``@the8472``
2025-02-14 14:05:26 -08:00
Jubilee
388823cf00
Rollup merge of #137006 - dianne:remove-errci-fields, r=compiler-errors
borrowck diagnostics cleanup: remove an unused and a barely-used field

This removes the fields `fr_is_local` and `outlived_fr_is_local` from the struct `ErrorConstraintInfo`. `fr_is_local` was fully unused, but wasn't caught by dead-code analysis. For symmetry, and since `outlived_fr_is_local` was used only once and is easy to recompute, I've removed it too. That makes its one use a bit longer, but constructing/destructuring an `ErrorConsraintInfo` now fits on one line.
2025-02-14 14:05:25 -08:00
Jubilee
181458bc1c
Rollup merge of #137002 - chenyukang:fix-early-lint-check-desc, r=compiler-errors
Fix early lint check desc in query

When I debugging this issue: https://github.com/rust-lang/rust/pull/136906#discussion_r1954151036

I found early lint checking is performed after [macro expansion](37520e6d89/compiler/rustc_interface/src/passes.rs (L267)), but [prior to AST lowering](37520e6d89/compiler/rustc_ast_lowering/src/lib.rs (L427)).

r? ``@cjgillot``
2025-02-14 14:05:25 -08:00
Jubilee
922119b79c
Rollup merge of #136983 - ehuss:misc-2024-prep, r=tgross35
Prepare standard library for Rust 2024 migration

This includes a variety of commits preparing the standard library for migration to Rust 2024.

The actual migration is blocked on a few things, so I wanted to get this out of the way in a relatively digestable PR.
2025-02-14 14:05:24 -08:00
Jubilee
2ec48fb687
Rollup merge of #136971 - HypheX:patch1, r=WaffleLapkin
Add a new check-pass UI test for returning `impl Fn(T) -> impl Trait`

This PR closes #107883 by adding a ui test.
2025-02-14 14:05:23 -08:00
Jubilee
58e84ff2b5
Rollup merge of #134016 - zachs18:stable-const-str-split_at, r=Amanieu
Stabilize `const_is_char_boundary` and `const_str_split_at`.

Tracking issues: #131516, #131518

Stabilized const API:

```rs
// in `core`
impl str {
    // const_is_char_boundary feature
    const fn is_char_boundary(&self, index: usize) -> bool;

    // const_str_split_at feature, depends on const_is_char_boundary
    const fn split_at(&self, mid: usize) -> (&str, &str);
    const fn split_at_mut(&mut self, mid: usize) -> (&mut str, &mut str);
    const fn split_at_checked(&self, mid: usize) -> Option<(&str, &str)>;
    const fn split_at_mut_checked(&mut self, mid: usize) -> Option<(&mut str, &mut str)>;
}
```

This will allow safely splitting string slices during const-eval.

Closes #131516, Closes #131518

This will need FCP.
r? libs-api

IIUC these do not use any new const language features (i.e. they are implementable manually on stable 1.83.0 using `unsafe`: [playground link](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=3679632cd1041084796241b7ac8edfbd)).

Cc ``@rust-lang/wg-const-eval`` (I don't know if I have the permissions for this ping; if not, someone else please ping wg-const-eval if it is necessary)
2025-02-14 14:05:22 -08:00
Jubilee
17ad8b5eee
Rollup merge of #133312 - lolbinarycat:triagebot-rustdoc-labels, r=GuillaumeGomez
triagebot: automatically add more rustdoc related labels

[inspired by zulip discussion](https://rust-lang.zulipchat.com/#narrow/channel/242269-t-release.2Ftriage/topic/auto-adding.20team.20labels.20based.20on.20certain.20other.20labels)
2025-02-14 14:05:21 -08:00
bors
fc147b4a81 Auto merge of #137041 - ChrisDenton:mysql, r=Kobzol
Don't remove mysql in CI

I think this works around the issue?

r? `@Kobzol`
2025-02-14 21:28:51 +00:00
Chris Denton
cb9cb1de29
Don't error if stopping mysql fails in CI 2025-02-14 21:22:02 +00:00
Michael Goulet
2ada9ccb7d Normalize closure instance before eagerly monomorphizing it 2025-02-14 19:18:43 +00:00
Matthew Maurer
db4c09c4d4 llvm: Tolerate captures in tests
llvm/llvm-project@7e3735d1a1 introduces
`captures` annotations. Adjust regexes to be tolerant of these.
2025-02-14 18:55:50 +00:00
Ralf Jung
2eff2155e5 add x86-sse2 (32bit) ABI that requires SSE2 target feature 2025-02-14 19:47:52 +01:00
bors
d8810e3e2d Auto merge of #137030 - matthiaskrgr:rollup-267aumr, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - #135778 (account for `c_enum_min_bits` in `multiple-reprs` UI test)
 - #136052 (Correct comment for FreeBSD and DragonFly BSD in unix/thread)
 - #136886 (Remove the common prelude module)
 - #136956 (add vendor directory to .gitignore)
 - #136958 (Fix presentation of purely "additive" replacement suggestion parts)
 - #136967 (Use `slice::fill` in `io::Repeat` implementation)
 - #136976 (alloc boxed: docs: use MaybeUninit::write instead of as_mut_ptr)
 - #137007 (Emit MIR for each bit with on `dont_reset_cast_kind_without_updating_operand`)
 - #137008 (Move code into `rustc_mir_transform`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-02-14 17:17:45 +00:00
Oli Scherer
be2cd9540b Decode metadata buffer in one go 2025-02-14 16:23:07 +00:00
Pavel Grigorenko
18b9edec09 miri: shims for erf & friends 2025-02-14 18:48:05 +03:00
Matthias Krüger
bd094fb573
Rollup merge of #137008 - nnethercote:mv-code-into-rustc_mir_transform, r=oli-obk
Move code into `rustc_mir_transform`

I found two modules in other crates that are better placed in `rustc_mir_transform`, because that's the only crate that uses them.

r? ``@matthewjasper``
2025-02-14 16:23:34 +01:00
Matthias Krüger
8bf77a4dfc
Rollup merge of #137007 - pvdrz:fix-aarch64-alloc-layout, r=compiler-errors
Emit MIR for each bit with on `dont_reset_cast_kind_without_updating_operand`

PR #136450 introduced a diff that includes a pointer-sized alloc. This doesn't cause any problems on the compiler test suite but it affects the test suite that ferrocene has for `aarch64-unknown-none` as the snapshot of the diff only includes a 32-bit alloc even though this should be a 64-bit alloc on `aarch64-unknown-none`.

r? ``@compiler-errors``
2025-02-14 16:23:34 +01:00
Matthias Krüger
145e35a6e3
Rollup merge of #136976 - jedbrown:jed/doc-boxed-deferred-init, r=tgross35
alloc boxed: docs: use MaybeUninit::write instead of as_mut_ptr

In the deferred initialization pattern, the docs were needlessly going through `as_mut_ptr().write()` to initialize, which is unnecessary use of a pointer, needs to be inside an `unsafe` block, and may weaken alias analysis.
2025-02-14 16:23:33 +01:00
Matthias Krüger
b5fce2ab8e
Rollup merge of #136967 - DaniPopes:io-repeat-fill, r=joboet
Use `slice::fill` in `io::Repeat` implementation

Use the existing `fill` methods on slices instead of manually writing the fill loop.
2025-02-14 16:23:32 +01:00
Matthias Krüger
49fb61c496
Rollup merge of #136958 - compiler-errors:additive-replacmeent, r=estebank
Fix presentation of purely "additive" replacement suggestion parts

#127541 changes replacement suggestions to use the "diff" view always, which I think is really verbose in cases where a replacement snippet is a "superset" of the snippet that is being replaced.

Consider:

```
LL -     Self::Baz: Clone,
LL +     Self::Baz: Clone, T: std::clone::Clone
```

In this code, we suggest replacing `", "` with `", T: std::clone::Clone"`. This is a consequence of how the snippet is constructed. I believe that since the string that is being replaced is a subset of the replacement string, it's not providing much value to present this as a diff. Users should be able to clearly understand what's being suggested here using the `~` underline view we've been suggesting for some time now.

Given that this affects ~100 tests out of the ~1000 UI tests affected, I expect this to be a pretty meaningful improvement of the fallout of #127541.

---

In the last commit, this PR also "trims" replacement parts so that they are turned into their purely additive subset, if possible. See the diff for what this means.

---

r? estebank
2025-02-14 16:23:32 +01:00
Matthias Krüger
2980f75713
Rollup merge of #136956 - jyn514:ignore-vendor, r=Noratrieb
add vendor directory to .gitignore
2025-02-14 16:23:31 +01:00
Matthias Krüger
c21a76fde0
Rollup merge of #136886 - ehuss:remove-prelude-common, r=jhpratt
Remove the common prelude module

This fixes the issues described in https://github.com/rust-lang/rust/issues/136102. Primarily, this resolves some issues with how the documentation for the prelude is generated:

- It avoids showing "unstable" for macros in the prelude that are actually stable.
- Avoids duplication of some pages due to the previous lack of `doc(no_inline)`.
- Makes the different edition preludes consistent, and sets a pattern that can be used by future editions.

We may need to rearrange these modules in the future if we decide to remove anything from the prelude again. If we do, I think we should look into a different solution that avoids the documentation problems.

Closes https://github.com/rust-lang/rust/issues/136102
2025-02-14 16:23:30 +01:00
Matthias Krüger
678ff2a59b
Rollup merge of #136052 - no1wudi:fix, r=workingjubilee
Correct comment for FreeBSD and DragonFly BSD in unix/thread
2025-02-14 16:23:29 +01:00
Matthias Krüger
4b13dfd6d5
Rollup merge of #135778 - ferrocene:ja-gh135777, r=workingjubilee
account for `c_enum_min_bits` in `multiple-reprs` UI test

fixes #135777
2025-02-14 16:23:27 +01:00
Yotam Ofek
5cc64e8da8 librustdoc: lazily format "read more" link in document_short 2025-02-14 14:50:05 +00:00
Yotam Ofek
ea15f6d792 librustdoc: lazily format some paths 2025-02-14 14:50:05 +00:00