Commit graph

20169 commits

Author SHA1 Message Date
Ralf Jung
211461a4d5
Merge pull request #4566 from Patrick-6/miri-genmc-rmw
Add more features for GenMC mode (RMW, fences, new printing options)
2025-09-08 06:24:22 +00:00
Ralf Jung
344b4ac427 print proper error when using unsupported synchronization primitive with GenMC 2025-09-08 07:55:10 +02:00
Patrick-6
61af5da8df Implement more features for GenMC mode
- Support for atomic fences.
- Support for atomic read-modify-write (RMW).
- Add tests using RMW and fences.
- Add options:
  - to disable weak memory effects in GenMC mode.
  - to print GenMC execution graphs.
  - to print GenMC output message.
- Fix GenMC full rebuild issue and run configure step when commit changes.
- Do cleanup.

Co-authored-by: Ralf Jung <post@ralfj.de>
2025-09-07 23:51:17 +02:00
Ralf Jung
69c7652a01 atomic rmw intrinsics: RHS must be an integer 2025-09-05 13:32:25 +02:00
Ralf Jung
0dcc21b124
Merge pull request #4569 from RalfJung/atomic-rmw
atomics: unify handling min/max and the other RMWs
2025-09-05 10:46:21 +00:00
Ralf Jung
1186db896e atomics: unify handling min/max and the other RMWs 2025-09-05 12:15:33 +02:00
Ralf Jung
3a16bbc1de
Merge pull request #4568 from RalfJung/duration-from-nanos
make use of Duration::from_nanos_u128
2025-09-05 07:40:34 +00:00
Ralf Jung
5cadd4541c make use of Duration::from_nanos_u128 2025-09-05 09:07:08 +02:00
The Miri Cronjob Bot
7c5fdb072e Merge ref 'b3cfb8faf8' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: b3cfb8faf8
Filtered ref: 8995aa7743caf019203bc853f27af6006705ae30
Upstream diff: 9385c64c95...b3cfb8faf8

This merge was created using https://github.com/rust-lang/josh-sync.
2025-09-05 05:00:55 +00:00
The Miri Cronjob Bot
9a1eb85394 Prepare for merging from rust-lang/rust
This updates the rust-version file to b3cfb8faf8.
2025-09-05 04:53:05 +00:00
Philipp Krones
75b9ee5f08
Merge commit 'e9b70454e4' into clippy-subtree-update 2025-09-04 18:27:27 -04:00
Matthias Krüger
bdfa97b648
Rollup merge of #146151 - FrancescoV1985:issue-146047-fix, r=Kobzol
fixes auto-run js checks in tidy

Modified is_non_auto_or_matches function in src/tools/tidy/src/extra_checks/mod.rs so that .ts extension is considered.
Tested locally with
`./x.py test tidy --extra-checks=auto:js`
2025-09-04 17:45:48 +02:00
bors
45b9d13b45 Auto merge of #146192 - jhpratt:rollup-mam0bss, r=jhpratt
Rollup of 5 pull requests

Successful merges:

 - rust-lang/rust#145682 (Promote aarch64-pc-windows-msvc to Tier 1)
 - rust-lang/rust#145690 (Implement Integer funnel shifts)
 - rust-lang/rust#146119 (compiletest: Implement an experimental `--new-output-capture` mode)
 - rust-lang/rust#146168 (Update bootstrap's dependencies to remove winapi and old windows-sys)
 - rust-lang/rust#146182 (Don't require next-solver `ProbeRef` to be `Copy`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-09-04 08:50:59 +00:00
FrancescoV1985
858414b6bb improved solution for function is_non_auto_or_matches 2025-09-04 08:55:02 +02:00
Jacob Pratt
be1d829910
Rollup merge of #146119 - Zalathar:capture, r=jieyouxu
compiletest: Implement an experimental `--new-output-capture` mode

Thanks to the efforts on rust-lang/rust#140192, compiletest no longer has an unstable dependency on libtest, but it still has an unstable dependency on `#![feature(internal_output_capture)]`. That makes building compiletest more complicated than for most other bootstrap tools.

This PR therefore adds opt-in support for an experimental compiletest mode that avoids the use of `internal_output_capture` APIs, and instead uses more mundane means to capture the output of individual test runners.

Each `TestCx` now contains `&dyn ConsoleOut` references for stdout and stderr. All print statements in `compiletests::runtest` have been replaced with `write!` or `writeln!` calls that explicitly write to one of those trait objects. The underlying implementation then forwards to `print!` or `eprint!` (for `--no-capture` or old-output-capture mode), or writes to a separate buffer (in new-output-capture mode).

---

Currently, new-output-capture is disabled by default. It can be explicitly enabled in one of two ways:

- When running `x test`, pass `--new-output-capture=on` as a *compiletest* argument (after `--`).
  - E.g. `x test ui -- --new-output-capture=on`.
  - The short form is `-Non` or `-Ny`.
- Set environment variable `COMPILETEST_NEW_OUTPUT_CAPTURE=on`.

After some amount of opt-in testing, new-output-capture will become the default (with a temporary opt-out). Eventually, old-output-capture and `#![feature(internal_output_capture)]` will be completely removed from compiletest.

r? jieyouxu
2025-09-04 01:43:21 -04:00
Jacob Pratt
00d5dc5c9d
Rollup merge of #145690 - sayantn:integer-funnel-shift, r=tgross35
Implement Integer funnel shifts

Tracking issue: rust-lang/rust#145686
ACP: https://github.com/rust-lang/libs-team/issues/642

This implements funnel shifts on primitive integer types. Implements this for cg_llvm, with a fallback impl for everything else

Thanks `@folkertdev` for the fixes and tests

cc `@rust-lang/libs-api`
2025-09-04 01:43:21 -04:00
bors
79bdc62756 Auto merge of #146176 - weihanglo:update-cargo, r=weihanglo
Update cargo submodule

12 commits in a6c58d43051d01d83f55a3e61ef5f5b2b0dd6bd9..761c4658d0079d607e6d33cf0c060e61a617cad3
2025-08-26 23:05:12 +0000 to 2025-09-04 01:25:01 +0000
- refactor(shell): Prepare for `Report`s being generated in more places (rust-lang/cargo#15920)
- refactor(frontmatter): Pull out as a dedicated mod (rust-lang/cargo#15914)
- chore: downgrade to libc@0.2.174 (rust-lang/cargo#15918)
- fix(publish): Don't generate final artifacts (rust-lang/cargo#15910)
- chore: Address most typos (rust-lang/cargo#15911)
- chore(deps): update rust crate annotate-snippets to 0.12.1 (rust-lang/cargo#15909)
- test(script): Switch frontmatter tests to end-to-end (rust-lang/cargo#15899)
- chore: fix some typos and grammar (rust-lang/cargo#15905)
- Update dependencies (rust-lang/cargo#15904)
- feat: Don't stop at first error when emitting lints and warnings (rust-lang/cargo#15889)
- fix(cli): Show the bad manifest path (rust-lang/cargo#15896)
- chore(deps): update rust crate tracing-subscriber to v0.3.20 [security] (rust-lang/cargo#15898)
2025-09-04 05:37:47 +00:00
Weihang Lo
94fd69aa28
Update cargo submodule 2025-09-03 22:30:01 -07:00
The Miri Cronjob Bot
94e40cd9c4 Merge ref '9385c64c95' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: 9385c64c95
Filtered ref: 80818ce34771a13f1a67a706e7e283ba58bdc460

This merge was created using https://github.com/rust-lang/josh-sync.
2025-09-04 05:00:34 +00:00
The Miri Cronjob Bot
d9619ed1c5 Prepare for merging from rust-lang/rust
This updates the rust-version file to 9385c64c95.
2025-09-04 04:52:52 +00:00
Zalathar
c2ae2e03d2 Implement compiletest --new-output-capture, in stable Rust 2025-09-04 12:51:21 +10:00
bors
033c0a4742 Auto merge of #146185 - Zalathar:rollup-n14lyv6, r=Zalathar
Rollup of 24 pull requests

Successful merges:

 - rust-lang/rust#140459 (Add `read_buf` equivalents for positioned reads)
 - rust-lang/rust#143725 (core: add Peekable::next_if_map)
 - rust-lang/rust#145209 (Stabilize `path_add_extension`)
 - rust-lang/rust#145342 (fix drop scope for `super let` bindings within `if let`)
 - rust-lang/rust#145750 (raw_vec.rs: Remove superfluous fn alloc_guard)
 - rust-lang/rust#145827 (On unused binding or binding not present in all patterns, suggest potential typo of unit struct/variant or const)
 - rust-lang/rust#145932 (Allow `inline(always)` with a target feature behind a unstable feature `target_feature_inline_always`.)
 - rust-lang/rust#145962 (Ensure we emit an allocator shim when only some crate types need one)
 - rust-lang/rust#145963 (Add LSX accelerated implementation for source file analysis)
 - rust-lang/rust#146054 (add `#[must_use]` to `array::repeat`)
 - rust-lang/rust#146090 (Derive `PartialEq` for `InvisibleOrigin`)
 - rust-lang/rust#146112 (don't uppercase error messages)
 - rust-lang/rust#146120 (Correct typo in `rustc_errors` comment)
 - rust-lang/rust#146124 (Test `rustc-dev` in `distcheck`)
 - rust-lang/rust#146127 (Rename `ToolRustc` to `ToolRustcPrivate`)
 - rust-lang/rust#146131 (rustdoc-search: add test case for indexing every item type)
 - rust-lang/rust#146134 (llvm: nvptx: Layout update to match LLVM)
 - rust-lang/rust#146136 (docs(std): add missing closing code block fences in doc comments)
 - rust-lang/rust#146137 (Disallow frontmatter in `--cfg` and `--check-cfg` arguments)
 - rust-lang/rust#146140 (compiletest: cygwin follows windows in using PATH for dynamic libraries)
 - rust-lang/rust#146150 (fix(rustdoc): match rustc `--emit` precedence )
 - rust-lang/rust#146155 (Make bootstrap self test parallel)
 - rust-lang/rust#146161 ([rustdoc] Uncomment code to add scraped rustdoc examples in loaded paths)
 - rust-lang/rust#146172 (triagebot: configure some pings when certain attributes are used)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-09-04 02:28:20 +00:00
Stuart Cook
11ea57363b
Rollup merge of #146172 - RalfJung:triagebot-keyword-mentions, r=Urgau
triagebot: configure some pings when certain attributes are used

Let's try this out in practice. :)

Cc `@rust-lang/miri` `@rust-lang/wg-const-eval` `@Urgau`
2025-09-04 10:02:06 +10:00
Stuart Cook
9214b1854c
Rollup merge of #146140 - jeremyd2019:patch-1, r=jieyouxu
compiletest: cygwin follows windows in using PATH for dynamic libraries

`@Berrysoft`
2025-09-04 10:02:04 +10:00
bors
9385c64c95 Auto merge of #146156 - RalfJung:miri, r=RalfJung
miri subtree update

Subtree update of `miri` to 883dbf03e2.

Created using https://github.com/rust-lang/josh-sync.

r? `@ghost`
2025-09-03 23:20:07 +00:00
Ralf Jung
2d20ee73a8 support keyword-based mentions in tidy 2025-09-03 22:09:31 +02:00
Ralf Jung
8667034718 fix applying an error to infinities 2025-09-03 21:22:43 +02:00
Ralf Jung
ddd0cefd38
Merge pull request #4506 from Patrick-6/miri-genmc-mvp
Add minimal functionality for using GenMC mode
2025-09-03 13:25:37 +00:00
Stuart Cook
b5bba66a26
Rollup merge of #145944 - alexcrichton:native-wasip2, r=tgross35
std: Start supporting WASIp2 natively

This commit is the start of an effort to support WASIp2 natively in the
standard library. Before this commit the `wasm32-wasip2` target behaved
exactly like `wasm32-wasip1` target by importing APIs from the core wasm
module `wasi_snapshot_preview1`. These APIs are satisfied by the
`wasm-component-ld` target by using an [adapter] which implements WASIp1
in terms of WASIp2. This adapter comes at a cost, however, in terms of
runtime indirection and instantiation cost, so ideally the adapter would
be removed entirely. The purpose of this adapter was to provide a
smoother on-ramp from WASIp1 to WASIp2 when it was originally created.

The `wasm32-wasip2` target has been around for long enough now that it's
much more established. Additionally the only thing historically blocking
using WASIp2 directly was implementation effort. Work is now underway to
migrate wasi-libc itself to using WASIp2 directly and now seems as good
a time as any to migrate the Rust standard library too.

Implementation-wise the milestones here are:

* The `wasm32-wasip2` target now also depends on the `wasi` crate at
  version 0.14.* in addition to the preexisting dependency of 0.11.*.
  The 0.14.* release series binds WASIp2 APIs instead of WASIp1 APIs.
* Some preexisting naming around `mod wasi` or `wasi.rs` was renamed to
  `wasip1` where appropriate. For example `std::sys::pal::wasi` is now
  called `std::sys::pal::wasip1`.
* More platform-specific WASI modules are now split between WASIp1 and
  WASIp2. For example getting the current time, randomness, and
  process arguments now use WASIp2 APIs directly instead of using WASIp1
  APIs that require an adapter.

It's worth pointing out that this PR does not migrate the entire
standard library away from using WASIp1 APIs on the `wasm32-wasip2`
target. Everything related to file descriptors and filesystem APIs is
still using WASIp1. Migrating that is left for a future PR. In the
meantime the goal of this change is to lay the groundwork necessary for
migrating in the future. Eventually the goal is to drop the `wasi`
0.11.* dependency on the `wasm32-wasip2` target (the `wasm32-wasip1`
target will continue to retain this dependency).

[adapter]: https://github.com/bytecodealliance/wasmtime/blob/main/crates/wasi-preview1-component-adapter/README.md
2025-09-03 23:08:08 +10:00
Stuart Cook
8b790d7b00
Rollup merge of #145414 - Kmeakin:km/unicode-table-refactors, r=joshtriplett,tgross35
unicode-table-generator refactors

Split off from https://github.com/rust-lang/rust/pull/145219
2025-09-03 23:08:06 +10:00
Patrick-6
c1be740564 Implement basic support for running Miri with GenMC.
- Implement memory allocation compatible with GenMC.
  - Extract address generator struct from Miri's allocator.
- Support thread creation and joining.
- Support atomic load and store.
- Support scheduling through GenMC.
- Add tests for GenMC mode.
- Add clang-format file for C++ code in Miri.
- Update genmc-sys crate license to MIT/Apache to match GenMC dependency.
- Add documentation for GenMC mode.

Note: this commit depends on changes to GenMC not yet upstreamed to its official repository.

Co-authored-by: Ralf Jung <post@ralfj.de>
2025-09-03 12:41:32 +02:00
Patrick-6
d366f26421 Extract address generator struct from memory allocator. 2025-09-03 12:40:41 +02:00
Ralf Jung
f0c9c386d3
Merge pull request #4562 from RalfJung/ci
re-balance CI
2025-09-03 10:16:55 +00:00
Ralf Jung
a880c46f19 no need to run GC_STRESS more than once for each OS 2025-09-03 11:47:30 +02:00
Ralf Jung
2c8bd9bc26
Merge pull request #4561 from RalfJung/short-fd-ops
add flag to not shorten FD reads/writes; don't shorten pipe operations
2025-09-03 09:41:06 +00:00
Ralf Jung
5b71113a64 re-balance CI 2025-09-03 11:40:46 +02:00
Ralf Jung
283985393a add flag to not shorten FD reads/writes; don't shorten pipe operations 2025-09-03 11:06:03 +02:00
sayantn
62b4347e80
Add funnel_sh{l,r} functions and intrinsics
- Add a fallback implementation for the intrinsics
 - Add LLVM backend support for funnel shifts

Co-Authored-By: folkertdev <folkert@folkertdev.nl>
2025-09-03 14:13:24 +05:30
Oli Scherer
1421247dc7
Merge pull request #4558 from RalfJung/float-err-fix
fix mangitude of applied float error
2025-09-03 07:46:36 +00:00
Ralf Jung
3015ce19c7
Merge pull request #4559 from nia-e/zed-config
Add Zed editor config
2025-09-03 06:52:47 +00:00
Ralf Jung
9f0b2a2df4 fix mangitude of applied float error 2025-09-03 08:48:38 +02:00
FrancescoV1985
fee5cd10c2 fixes auto-run js checks in tidy 2025-09-03 08:32:33 +02:00
The Miri Cronjob Bot
d98a9c6931 Merge ref '51ff895062' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: 51ff895062
Filtered ref: 5057370cda58bcaad24ea094ec11c8c01b24c2bc

This merge was created using https://github.com/rust-lang/josh-sync.
2025-09-03 05:01:14 +00:00
The Miri Cronjob Bot
ef1dab1cb6 Prepare for merging from rust-lang/rust
This updates the rust-version file to 51ff895062.
2025-09-03 04:53:32 +00:00
Nia Espera
4daea276ee
add zed editor config 2025-09-03 01:56:03 +02:00
jeremyd2019
af0d6f1290
compiletest: cygwin follows windows in using PATH for dynamic libraries 2025-09-02 16:27:45 -07:00
Guillaume Gomez
16b9a68eef
Rollup merge of #146118 - RalfJung:miri-abort, r=joboet
improve process::abort rendering in Miri backtraces

Also, avoid using the `sys` function directly in the panic machinery -- that seems like an unnecessary layering violation.
2025-09-02 17:09:01 +02:00
Guillaume Gomez
f77a31fbff
Rollup merge of #146089 - npmccallum:rustfmt, r=fmease
fix a constness ordering bug in rustfmt

Normally, changes to rustfmt go into the separate repo. But, in this case, the bug is introduced in a local change and therefore isn't present in the rustfmt repo.

Related to: https://github.com/rust-lang/rust/pull/146071
Fixes https://github.com/rust-lang/rustfmt/issues/6619.
2025-09-02 17:08:56 +02:00
Guillaume Gomez
af315b0725
Rollup merge of #145783 - Erk-:et-cetera-span, r=compiler-errors
add span to struct pattern rest (..)

Struct pattern rest (`..`) did not retain span information compared to normal fields. This patch adds span information for it.

The motivation of this patch comes from when I implemented this PR for Clippy: https://github.com/rust-lang/rust-clippy/pull/15000#discussion_r2134145163

It is possible to get the span of the Et cetera in a bit roundabout way, but I thought this would be nicer.
2025-09-02 17:08:52 +02:00
Ralf Jung
d4f861ecb6 account for aarch64 windows oversleeping 2025-09-02 16:33:10 +02:00