Commit graph

294130 commits

Author SHA1 Message Date
Oli Scherer
e2ce96bbaa
Merge pull request #4384 from RalfJung/diag-no-repeat
diagnostics: do not repeat the entire message in the span label
2025-06-11 08:07:42 +00:00
Ralf Jung
88e3e68286 update lockfile 2025-06-10 14:01:03 +02:00
Ralf Jung
680176ad58
Merge pull request #4389 from RalfJung/native-lib-search-order
native_lib: skip to next .so if function was in dependency of the first
2025-06-10 09:11:49 +00:00
Ralf Jung
f5457e402f
Merge pull request #4382 from RalfJung/dup
test_dup: ensure the FDs remain in sync even after dup'ing
2025-06-10 09:11:22 +00:00
Ralf Jung
2d72737a79
Merge pull request #4391 from RalfJung/float-nondet-tests
float tests: test non-determinism for more operations
2025-06-10 08:35:10 +00:00
Ralf Jung
a7153db254 float tests: test non-determinism for more operations 2025-06-10 10:07:20 +02:00
Ralf Jung
7d5fac72da
Merge pull request #4394 from RalfJung/smallvec
add SmallVec test
2025-06-10 07:15:37 +00:00
Ralf Jung
3e980d5f64 add SmallVec test 2025-06-10 08:46:30 +02:00
Ralf Jung
19f195d1fb
Merge pull request #4393 from rust-lang/rustup-2025-06-10
Automatic Rustup
2025-06-10 06:36:58 +00:00
Ralf Jung
fceb8d6510 sync max_fundamental_align with alloc crate 2025-06-10 08:10:16 +02:00
The Miri Cronjob Bot
89db7778d6 fmt 2025-06-10 05:03:44 +00:00
The Miri Cronjob Bot
c601681d95 Merge from rustc 2025-06-10 05:02:33 +00:00
The Miri Cronjob Bot
5eb5f2a226 Preparing for merge from rustc 2025-06-10 04:55:12 +00:00
bors
c6768de2d6 Auto merge of #138062 - LorrensP-2158466:miri-enable-float-nondet, r=RalfJung
Enable Non-determinism of float operations in Miri and change std tests

Links to [#4208](https://github.com/rust-lang/miri/issues/4208) and [#3555](https://github.com/rust-lang/miri/issues/3555) in Miri.

Non-determinism of floating point operations was disabled in rust-lang/rust#137594 because it breaks the tests and doc-tests in core/coretests and std. This PR enables some of them.

This pr includes the following changes:

- Enables the float non-determinism but with a lower relative error of 4ULP instead of 16ULP
- These operations now have a fixed output based on the C23 standard, except the pow operations, this is tracked in [#4286](https://github.com/rust-lang/miri/issues/4286#issue-3010677983)
- Changes tests that made incorrect assumptions about the operations, not to make that assumption anymore (from `assert_eq!` to `assert_approx_eq!`.
- Changed the doctests of the stdlib of these operations to compare against fixed constants instead of `f*::EPSILON`, which now succeed with Miri and `-Zmiri-many-seeds`
- Added a constant `APPROX_DELTA` in `std/tests/floats/f32.rs` which is used for approximation tests, but with a different value when run in Miri. This is to make these tests succeed.
- Added tests in the float tests of Miri to test the C23 behaviour.

Fixes https://github.com/rust-lang/miri/issues/4208
2025-06-09 21:21:58 +00:00
Ralf Jung
11581df1ba native-lib: update readme (to mention folders in header) 2025-06-09 21:52:43 +02:00
Ralf Jung
a096de73ea native_lib: skip to next .so if function was in dependency of the first 2025-06-09 21:49:50 +02:00
bors
d13a431a6c Auto merge of #142253 - tgross35:rollup-img49op, r=tgross35
Rollup of 5 pull requests

Successful merges:

 - rust-lang/rust#140767 (Stabilize `sha512`, `sm3` and `sm4` for x86)
 - rust-lang/rust#141001 (Make NonZero<char> possible)
 - rust-lang/rust#141993 (Use the in-tree `compiler-builtins` for the sysroot)
 - rust-lang/rust#142208 (Always consider `const _` items as live for dead code analysis)
 - rust-lang/rust#142238 (stabilize nonnull_provenance)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-06-09 18:22:02 +00:00
Trevor Gross
fd06f6d658
Rollup merge of #142238 - RalfJung:nonnull_provenance, r=workingjubilee
stabilize nonnull_provenance

Fixes https://github.com/rust-lang/rust/issues/135243
FCP passed in https://github.com/rust-lang/rust/issues/135243
2025-06-09 12:17:55 -05:00
Trevor Gross
facc5da22c
Rollup merge of #142208 - Urgau:dead_code-const_, r=petrochenkov
Always consider `const _` items as live for dead code analysis

This PR alters dead code analysis to always consider `const _: () = { ... };` to be live.

This doesn't address the `_name` pattern from https://github.com/rust-lang/rust/issues/142075.

Fixes https://github.com/rust-lang/rust/issues/142104
2025-06-09 12:17:54 -05:00
Trevor Gross
ab87ed150b
Rollup merge of #141993 - tgross35:use-in-tree-builtins, r=bjorn3
Use the in-tree `compiler-builtins` for the sysroot

Many of `std`'s dependency have a dependency on the crates.io `compiler-builtins` when used with the feature `rustc-std-workspace-core`. Use a Cargo patch to select the in-tree version instead.

`compiler-builtins` is also added as a dependency of `rustc-std-workspace-core` so these crates can remove their crates.io dependency in the future.

Zulip discussion: [#t-compiler > Using in-tree compiler-builtins](https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/Using.20in-tree.20compiler-builtins/with/522445336)

Once this merges, the following PRs will need to make it to a release for the relevant crates:

- https://github.com/rust-lang/getopts/pull/119 (can merge at any time)
- https://github.com/rust-lang/hashbrown/pull/625 (can merge at any time)
- https://github.com/rust-lang/stdarch/pull/1825
- https://github.com/rust-lang/rustc-demangle/pull/80
- https://github.com/rust-lang/cfg-if/pull/84
- https://github.com/unicode-rs/unicode-width/pull/77

The above should cover all tier 1 targets with no `std` features enabled. The remaining cover the rest:

- https://github.com/alexcrichton/dlmalloc-rs/pull/50 (wasm, xous, sgx)
- https://github.com/gimli-rs/gimli/pull/769
- https://github.com/r-efi/r-efi/pull/89 (efi)
- https://github.com/r-efi/r-efi-alloc/pull/9 (efi)
- https://github.com/fortanix/rust-sgx/pull/770 (sgx)
- https://github.com/hermit-os/hermit-rs/pull/718 (hermit)
- https://github.com/bytecodealliance/wasi-rs/pull/108 (wasi)
- https://github.com/gimli-rs/addr2line/pull/345
- https://github.com/oyvindln/adler2/pull/2
- https://github.com/BurntSushi/memchr/pull/180
- https://github.com/Frommi/miniz_oxide/pull/173
- https://github.com/gimli-rs/object/pull/777

try-job: x86_64-gnu
try-job: test-various
2025-06-09 12:17:53 -05:00
Trevor Gross
361423fc8a
Rollup merge of #141001 - hkBst:nonzero-char, r=dtolnay
Make NonZero<char> possible

I'd like to use `NonZero<char>` for representing units of CStr in https://github.com/rust-lang/literal-escaper
2025-06-09 12:17:53 -05:00
Trevor Gross
2f26913270
Rollup merge of #140767 - sayantn:stabilize-sha512, r=traviscross,tgross35
Stabilize `sha512`, `sm3` and `sm4` for x86

This PR stabilizes the feature flag `sha512_sm_x86` (tracking issue rust-lang/rust#126624).

# Public API
The 3 `x86` target features `sha512`, `sm3` and `sm4`, and the associated intrinsics in stdarch.

These target features are very specialized, and are only used to signal the presence of the corresponding CPU instruction. They don't have any nontrivial interaction with the ABI (contrary to something like AVX), and serve the only purpose of enabling 10 stdarch intrinsics, all of which have been implemented and propagated to rustc via a stdarch submodule update.

Also, these were added in LLVM17, and as the minimum LLVM required for rustc is LLVM19, we are safe in that front too!

# Associated PRs
 - rust-lang/rust#126704
 - rust-lang/stdarch#1592
 - rust-lang/stdarch#1790
 - rust-lang/rust#140389 (stdarch submodule update)
 - rust-lang/stdarch#1796 (stabilizing the runtime detection and intrinsics)
 - rust-lang/rust#141964 (stdarch submodule update for the stabilization of the runtime detection and intrinsics)

As all of the required tasks have been done (adding the target features to rustc, implementing their runtime detection in std_detect and implementing the associated intrinsics in core_arch), these target features can be stabilized now.

cc `@rust-lang/lang`
cc `@rust-lang/libs-api` for the intrinsics and runtime detection

I don't think anyone else worked on this feature, so no one else to ping, maybe cc `@Amanieu.` I will send the reference pr soon.
2025-06-09 12:17:52 -05:00
Ralf Jung
ed5a655386
Merge pull request #4376 from yoctocell/tb-interior-mut-flag
TB: Add flag to disable the more precise interior mutability tracking
2025-06-09 15:50:19 +00:00
Xinglu Chen
4e8d5837df Add -Zmiri-tree-borrows-no-precise-interior-mut flag 2025-06-09 17:23:49 +02:00
bors
00b526212b Auto merge of #142241 - Kobzol:disable-ci-rustc-on-ci, r=jieyouxu
Disable download-rustc on CI

Should resolve https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/aarch64-apple.20try.20job.20doesn.27t.20work/with/522659759.

r? `@jieyouxu`
2025-06-09 15:21:07 +00:00
Urgau
33beaba7c8 Always consider const _ items as live for dead code analysis 2025-06-09 15:48:06 +02:00
bors
14863ea077 Auto merge of #142242 - matthiaskrgr:rollup-1sgx0ji, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - rust-lang/rust#129121 (Stabilize `tcp_quickack`)
 - rust-lang/rust#142192 (De-duplicate f16 & f128 doctest attributes)
 - rust-lang/rust#142193 (add tests for pattern binding drop order edge cases)
 - rust-lang/rust#142222 (Dont make `ObligationCtxt`s with diagnostics unnecessarily)
 - rust-lang/rust#142228 (rustc-dev-guide subtree update)
 - rust-lang/rust#142231 (Run `calculate_matrix` job on `master` to cache citool builds)
 - rust-lang/rust#142232 (add `Cargo.lock` to CI-rustc allowed list for non-CI env)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-06-09 12:21:14 +00:00
Matthias Krüger
8daa8ef75c
Rollup merge of #142232 - onur-ozkan:141986, r=Kobzol
add `Cargo.lock` to CI-rustc allowed list for non-CI env

Changes to dependencies usually require modifying `Cargo.toml`, which would already invalidate the CI-rustc cache if done in non-allowed paths. On non-CI environment, it should be safe to add `Cargo.lock` to the list of allowed paths as there is no real risk aside from a very rare false positive in cases like minor bumps to non-allowed path dependencies without modifying the `Cargo.toml` files.

Fixes rust-lang/rust#141986
2025-06-09 13:55:36 +02:00
Matthias Krüger
8435fe8d1f
Rollup merge of #142231 - Kobzol:master-cache-ci, r=marcoieni
Run `calculate_matrix` job on `master` to cache citool builds

As discussed in https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/PR.20ci.20seems.20much.20to.20slow/with/523028903, the current `rust-cache` solution for `citool` doesn't work, because we don't ever write to the cache from `master`, so the cache is empty on PR CI jobs.

This PR runs the `calculate_matrix` job on `master`, with the only motivation to actually prime the cache.

r? `@marcoieni`
2025-06-09 13:55:35 +02:00
Matthias Krüger
60a2adb75c
Rollup merge of #142228 - tshepang:rust-push, r=jieyouxu
rustc-dev-guide subtree update

r? `@ghost`
2025-06-09 13:55:35 +02:00
Matthias Krüger
7ab938375d
Rollup merge of #142222 - compiler-errors:ocx-w-no-diag, r=lcnr
Dont make `ObligationCtxt`s with diagnostics unnecessarily

just a nit, shouldn't affect perf b/c `ObligationCtxt::new_with_diagnostics` should only be more expensive in the new trait solver, and I don't expect either of these to encounter errors today anyways.

r? oli-obk
2025-06-09 13:55:34 +02:00
Matthias Krüger
9188dd7932
Rollup merge of #142193 - dianne:binding-drop-order-edge-case-tests, r=Nadrieril
add tests for pattern binding drop order edge cases

This adds tests for rust-lang/rust#142163, rust-lang/rust#142057, and rust-lang/rust#142056. I'm using these tests to help make sure I don't commit breaking changes when implementing match lowering for guard patterns, but I think it makes sense to add them separately. They don't directly have anything to do with guard patterns.

r? `@Nadrieril` or reassign
2025-06-09 13:55:34 +02:00
Matthias Krüger
25de98fd41
Rollup merge of #142192 - Urgau:dedup-f16-f128-test-attrs, r=tgross35
De-duplicate f16 & f128 doctest attributes

Now that rustdoc supports `#[doc(test(attr(...)))]` at every level, thanks to https://github.com/rust-lang/rust/pull/140560, we can de-duplicate the f16 & f128 doctest attributes.

Unfortunately we can de-duplicate the `cfg`s attribute as rustdoc would complain about missing `main`, but it's already much better than before.

Addresses https://github.com/rust-lang/rust/pull/140323/files#r2062702761
r? `@tgross35`
2025-06-09 13:55:33 +02:00
Matthias Krüger
d9563a5aa4
Rollup merge of #129121 - devnexen:stabilize_ext_linux_tcp_layer, r=tgross35
Stabilize `tcp_quickack`

to stabilise the quickack part for now, tcp_deferaccept had been added at a later stage.

The related API calls are the following

```rust
// std::os::linux::net

// sealed trait, implemented for std::net::TcpStream
pub trait TcpStreamExt: Sealed{
  fn quickack(&self) -> io::Result<bool>;
  fn set_quickack(&self, quickack: bool) -> io::Result<()>;
}
```

Closes: https://github.com/rust-lang/rust/issues/96256
2025-06-09 13:55:32 +02:00
Jakub Beránek
ee8853b21f
Disable download-rustc on CI 2025-06-09 13:54:20 +02:00
Ralf Jung
3164ca8bb4 stabilize nonnull_provenance 2025-06-09 12:36:24 +02:00
onur-ozkan
c3de813944 add Cargo.lock to CI-rustc allowed list for non-CI env
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-06-09 12:47:05 +03:00
Ralf Jung
65ad80e40c
Merge pull request #4388 from rust-lang/rustup-2025-06-09
Automatic Rustup
2025-06-09 08:40:57 +00:00
bors
7c10378e1f Auto merge of #142234 - matthiaskrgr:rollup-kg5wibu, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - rust-lang/rust#141751 (Remap compiler vs non-compiler sources differently (bootstrap side))
 - rust-lang/rust#142160 (Only allow `bootstrap` cfg in rustc & related)
 - rust-lang/rust#142191 (early return in trait detection for non-trait item)
 - rust-lang/rust#142211 (Do not checkout GCC submodule for the tidy job)
 - rust-lang/rust#142218 (CI: rfl: move job forward to Linux v6.16-rc1)
 - rust-lang/rust#142224 (Avoid a gratuitous 10s wait in a stress test)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-06-09 08:27:35 +00:00
Matthias Krüger
bf17f139d3
Rollup merge of #142224 - joshtriplett:remove-gratuitous-wait-in-stress-test, r=workingjubilee
Avoid a gratuitous 10s wait in a stress test

`stress_recv_timeout_two_threads`, in the mpmc and mpsc testsuites, is a stress test of the `recv_timeout` function. This test processes and ignores timeouts, and just ensures that every sent value gets received. As such, the exact length of the timeouts is not critical, only that the timeout and sleep durations ensure that at least one timeout occurred.

The current tests have 100 iterations, half of which sleep for 200ms, causing the test to take 10s. This represents around 2/3rds of the *total* runtime of the `library/std` testsuite, and is the only standard library test that takes more than a second.

Reduce this to 50 iterations where half of them sleep for 10ms, causing the test to take 0.25s.

Add a check that at least one timeout occurred.
2025-06-09 10:20:54 +02:00
Matthias Krüger
a9ba52b4dc
Rollup merge of #142218 - ojeda:rfl, r=Kobzol
CI: rfl: move job forward to Linux v6.16-rc1

Another hopefully routine upgrade to Linux v6.16-rc1, just released.

r? `@lqd` `@Kobzol`
try-job: x86_64-rust-for-linux
`@rustbot` label A-rust-for-linux
`@bors` try
2025-06-09 10:20:54 +02:00
Matthias Krüger
5d0a3abaf3
Rollup merge of #142211 - Kobzol:try-fast-submodule-checkout, r=Mark-Simulacrum
Do not checkout GCC submodule for the tidy job

This is not a fully general solution, but the GCC submodule checkout is so slow that I think it's worth it to special-case it. This brings down the time required to checkout submodules from ~1.5 minute to ~0.5 minute.
2025-06-09 10:20:53 +02:00
Matthias Krüger
9e2512036b
Rollup merge of #142191 - bvanjoi:issue-135863, r=compiler-errors
early return in trait detection for non-trait item

Fixes rust-lang/rust#135863
2025-06-09 10:20:53 +02:00
Matthias Krüger
ad378be221
Rollup merge of #142160 - Urgau:check-cfg-bootstrap-only-rustc, r=Kobzol
Only allow `bootstrap` cfg in rustc & related

Fixes https://github.com/rust-lang/rust/issues/142150
r? bootstrap
2025-06-09 10:20:52 +02:00
Matthias Krüger
45cf4fb8d7
Rollup merge of #141751 - jieyouxu:remap, r=Kobzol
Remap compiler vs non-compiler sources differently (bootstrap side)

See [#t-compiler/help > Span pointing to wrong file location (&#96;rustc-dev&#96; component)](https://rust-lang.zulipchat.com/#narrow/channel/182449-t-compiler.2Fhelp/topic/Span.20pointing.20to.20wrong.20file.20location.20.28.60rustc-dev.60.20component.29/with/521087083).

The path remapping and unremapping for compiler sources (distributed via `rustc-dev` dist component) is broken because bootstrap currently remaps all sources unconditionally (if remapping is enabled) to the `/rustc/{hash}` form. However, the `rustc-dev` dist component (compiler sources) and `rust-src` dist component (library sources) unpacks differently:

- `rust-src` unpacks sources to a path like `$sysroot/lib/rustlib/src/rust`, whereas
- `rustc-dev` unpacks sources to a path like `$sysroot/lib/rustlib/rustc-src/rust`[^note],

meaning that the compiler need to unremap them differently. But the same remapping means that the compiler has no way to distinguish between compiler and non-compiler (esp. standard library) sources. To remedy this, this PR adopts the approach of:

- remapping compiler sources (corresponding to `rustc-dev` dist component) with `/rustc-dev/{hash}` (this is `RemapScheme::Compiler`), and
- remapping non-compiler sources (corresponding to `rust-src` dist component or other non-compiler sources) with `/rustc/{hash}` (this is `RemapScheme::NonCompiler`).

A different remapping allows the compiler to reverse the remapping differently.

This PR implements the bootstrap side. A follow-up compiler-side change is needed to implement the unremapping change to address the reported issue completely.

This PR introduces another env var `CFG_VIRTUAL_RUSTC_DEV_SOURCE_BASE_DIR` that is made available to the compiler when building compiler sources to know what the remap scheme for `rustc-dev` (`RemapScheme::Compiler`) is. Compiler sources are built with the compiler remapping scheme.

As far as I know, this change should not introduce new regressions, because the compiler source unremapping (through `rustc-dev`) is already broken.

[^note]: (Notice the `src` vs `rustc-src` difference.)
2025-06-09 10:20:51 +02:00
Jakub Beránek
cb9980133c
Do not checkout GCC submodule for the tidy job 2025-06-09 08:17:56 +02:00
Jakub Beránek
54ed1b966f
Run calculate_matrix job on the master branch
This allows us to reuse its cache on PR CI jobs.
2025-06-09 08:14:38 +02:00
Jakub Beránek
7614592107
Do not inherit environment variables in citool tests
So that we can make sure that they are reproducible locally.
2025-06-09 08:06:05 +02:00
bors
b6685d748f Auto merge of #141435 - RalfJung:unsupported_calling_conventions, r=workingjubilee
Add (back) `unsupported_calling_conventions` lint to reject more invalid calling conventions

This adds back the `unsupported_calling_conventions` lint that was removed in https://github.com/rust-lang/rust/pull/129935, in order to start the process of dealing with https://github.com/rust-lang/rust/issues/137018. Specifically, we are going for the plan laid out [here](https://github.com/rust-lang/rust/issues/137018#issuecomment-2672118326):
- thiscall, stdcall, fastcall, cdecl should only be accepted on x86-32
- vectorcall should only be accepted on x86-32 and x86-64

The difference to the status quo is that:
- We stop accepting stdcall, fastcall on targets that are windows && non-x86-32 (we already don't accept these on targets that are non-windows && non-x86-32)
- We stop accepting cdecl on targets that are non-x86-32
- (There is no difference for thiscall, this was already a hard error on non-x86-32)
- We stop accepting vectorcall on targets that are windows && non-x86-*

Vectorcall is an unstable ABI so we can just make this a hard error immediately. The others are stable, so we emit the `unsupported_calling_conventions` forward-compat lint. I set up the lint to show up in dependencies via cargo's future-compat report immediately, but we could also make it show up just for the local crate first if that is preferred.

try-job: i686-msvc-1
try-job: x86_64-msvc-1
try-job: test-various
2025-06-09 05:21:49 +00:00
Tshepang Mbambo
4967fd24de
Merge pull request #2461 from rust-lang/rustc-pull
Rustc pull update
2025-06-09 07:19:50 +02:00