Skip to content

miri subtree update #144623

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 50 commits into from
Jul 29, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
8acdee7
don't halt execution when we write to a read-only file
RalfJung Jul 19, 2025
d3fc02c
non-deterministically truncate reads/writes
RalfJung Jul 19, 2025
72ba7c5
Preparing for merge from rustc
Jul 21, 2025
e3e711b
Merge from rustc
Jul 21, 2025
9ef15d2
Merge pull request #4486 from rust-lang/rustup-2025-07-21
RalfJung Jul 21, 2025
800d805
Merge pull request #4481 from RalfJung/read-write-truncate
oli-obk Jul 21, 2025
6f06667
Preparing for merge from rustc
Jul 22, 2025
4d62686
Merge from rustc
Jul 22, 2025
7a8288b
Merge pull request #4487 from rust-lang/rustup-2025-07-22
oli-obk Jul 22, 2025
08d7787
CI: add windows-arm runner
RalfJung Jul 19, 2025
a6c1093
Init josh-sync config file
Kobzol Jul 23, 2025
a61657e
Remove Josh code from `miri-script`
Kobzol Jul 23, 2025
037b2f6
Merge pull request #4479 from RalfJung/ci-win-arm
RalfJung Jul 23, 2025
e685e90
Update `CONTRIBUTING.md`
Kobzol Jul 23, 2025
48963fa
Update CI workflow
Kobzol Jul 23, 2025
8664aa7
Remove Zulip API keys and use `set -x`
Kobzol Jul 23, 2025
cbd1557
Merge pull request #4490 from Kobzol/use-josh-sync
RalfJung Jul 23, 2025
fd114d4
make the missing-MIR message more clear
RalfJung Jul 24, 2025
94f725f
Merge pull request #4491 from RalfJung/missing-mir
RalfJung Jul 24, 2025
0258894
Prepare for merging from rust-lang/rust
Jul 25, 2025
8ff5894
Merge ref 'b56aaec52bc0' from rust-lang/rust
Jul 25, 2025
0dba9f5
fmt
Jul 25, 2025
60b0545
Fix cronjob Zulip message
Kobzol Jul 25, 2025
80c9f78
Merge pull request #4493 from Kobzol/ci-fail-message
RalfJung Jul 25, 2025
2a81b4f
Use i64 for tracing chrome "id"
Stypox Jul 22, 2025
00de833
Fix missing $ in enter_trace_span!
Stypox Jul 22, 2025
c7b81f3
Fix double "fatal error: " in message
Stypox Jul 22, 2025
d2ba3c8
fix target json
RalfJung Jul 25, 2025
dd96ec6
Merge pull request #4492 from rust-lang/rustup-2025-07-25
RalfJung Jul 25, 2025
5295649
Merge pull request #4489 from Stypox/misc-tracing-fixes
RalfJung Jul 25, 2025
d88bdc9
CI: run apt update before installing anything
RalfJung Jul 26, 2025
4779dd7
Merge pull request #4494 from RalfJung/ci
RalfJung Jul 26, 2025
23e2942
call_function helper: dont ICE on return type mismatches
RalfJung Jul 27, 2025
43eaa4f
Merge pull request #4496 from RalfJung/ctor-ret-type
RalfJung Jul 27, 2025
fd65b7e
introduce a macro for shim signature checking
RalfJung Jul 27, 2025
b59c40e
Merge pull request #4497 from RalfJung/check-shim
RalfJung Jul 27, 2025
4125905
Add support for building and linking against genmc
Patrick-6 Mar 14, 2025
87b8cb0
various minor adjustments
RalfJung Jul 27, 2025
c751579
Merge pull request #4498 from RalfJung/genmc-build
RalfJung Jul 27, 2025
a20692c
centralize clockid_t interpretation
RalfJung Jul 27, 2025
0570fb4
Merge pull request #4499 from RalfJung/clockid
RalfJung Jul 27, 2025
fbd553e
prepare for sync
RalfJung Jul 28, 2025
8bf3251
Merge commit 'abd9cba5acbcc35fb4cc59ce25580fa1624b5571'
RalfJung Jul 28, 2025
dea3e13
revert accidental change
RalfJung Jul 28, 2025
fb46410
Merge pull request #4500 from RalfJung/rustup
RalfJung Jul 28, 2025
ecb046a
Reduce required cc crate version.
Patrick-6 Jul 28, 2025
9176fee
Merge pull request #4502 from Patrick-6/reduce-cc-version
RalfJung Jul 28, 2025
d409694
lookup_link_section: support arrays of function pointers
RalfJung Jul 28, 2025
86e9370
Merge pull request #4504 from RalfJung/link-section-arrays
RalfJung Jul 28, 2025
dc33eb6
update lockfile and bless tidy
RalfJung Jul 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
139 changes: 139 additions & 0 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,8 @@ version = "1.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c"
dependencies = [
"jobserver",
"libc",
"shlex",
]

Expand Down Expand Up @@ -655,6 +657,26 @@ dependencies = [
"serde",
]

[[package]]
name = "cmake"
version = "0.1.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0"
dependencies = [
"cc",
]

[[package]]
name = "codespan-reporting"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81"
dependencies = [
"serde",
"termcolor",
"unicode-width 0.2.1",
]

[[package]]
name = "collect-license-metadata"
version = "0.1.0"
Expand Down Expand Up @@ -913,6 +935,68 @@ dependencies = [
"windows-sys 0.59.0",
]

[[package]]
name = "cxx"
version = "1.0.161"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3523cc02ad831111491dd64b27ad999f1ae189986728e477604e61b81f828df"
dependencies = [
"cc",
"cxxbridge-cmd",
"cxxbridge-flags",
"cxxbridge-macro",
"foldhash",
"link-cplusplus",
]

[[package]]
name = "cxx-build"
version = "1.0.161"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "212b754247a6f07b10fa626628c157593f0abf640a3dd04cce2760eca970f909"
dependencies = [
"cc",
"codespan-reporting",
"indexmap",
"proc-macro2",
"quote",
"scratch",
"syn 2.0.104",
]

[[package]]
name = "cxxbridge-cmd"
version = "1.0.161"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f426a20413ec2e742520ba6837c9324b55ffac24ead47491a6e29f933c5b135a"
dependencies = [
"clap",
"codespan-reporting",
"indexmap",
"proc-macro2",
"quote",
"syn 2.0.104",
]

[[package]]
name = "cxxbridge-flags"
version = "1.0.161"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a258b6069020b4e5da6415df94a50ee4f586a6c38b037a180e940a43d06a070d"

[[package]]
name = "cxxbridge-macro"
version = "1.0.161"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8dec184b52be5008d6eaf7e62fc1802caf1ad1227d11b3b7df2c409c7ffc3f4"
dependencies = [
"indexmap",
"proc-macro2",
"quote",
"rustversion",
"syn 2.0.104",
]

[[package]]
name = "darling"
version = "0.20.11"
Expand Down Expand Up @@ -1373,6 +1457,17 @@ dependencies = [
"version_check",
]

[[package]]
name = "genmc-sys"
version = "0.1.0"
dependencies = [
"cc",
"cmake",
"cxx",
"cxx-build",
"git2",
]

[[package]]
name = "getopts"
version = "0.2.23"
Expand Down Expand Up @@ -1427,6 +1522,21 @@ dependencies = [
"stable_deref_trait",
]

[[package]]
name = "git2"
version = "0.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110"
dependencies = [
"bitflags",
"libc",
"libgit2-sys",
"log",
"openssl-probe",
"openssl-sys",
"url",
]

[[package]]
name = "glob"
version = "0.3.2"
Expand Down Expand Up @@ -2060,6 +2170,19 @@ dependencies = [
"cc",
]

[[package]]
name = "libgit2-sys"
version = "0.18.2+1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c42fe03df2bd3c53a3a9c7317ad91d80c81cd1fb0caec8d7cc4cd2bfa10c222"
dependencies = [
"cc",
"libc",
"libz-sys",
"openssl-sys",
"pkg-config",
]

[[package]]
name = "libloading"
version = "0.8.8"
Expand Down Expand Up @@ -2099,6 +2222,15 @@ dependencies = [
"vcpkg",
]

[[package]]
name = "link-cplusplus"
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a6f6da007f968f9def0d65a05b187e2960183de70c160204ecfccf0ee330212"
dependencies = [
"cc",
]

[[package]]
name = "linkchecker"
version = "0.1.0"
Expand Down Expand Up @@ -2308,6 +2440,7 @@ dependencies = [
"chrono-tz",
"colored 3.0.0",
"directories",
"genmc-sys",
"getrandom 0.3.3",
"ipc-channel",
"libc",
Expand Down Expand Up @@ -4877,6 +5010,12 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"

[[package]]
name = "scratch"
version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f6280af86e5f559536da57a45ebc84948833b3bee313a7dd25232e09c878a52"

[[package]]
name = "self_cell"
version = "1.2.0"
Expand Down
5 changes: 5 additions & 0 deletions src/bootstrap/src/utils/proc_macro_deps.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
/// See <https://github.com/rust-lang/rust/issues/134863>
pub static CRATES: &[&str] = &[
// tidy-alphabetical-start
"allocator-api2",
"annotate-snippets",
"anstyle",
"askama_parser",
Expand All @@ -16,13 +17,17 @@ pub static CRATES: &[&str] = &[
"darling_core",
"derive_builder_core",
"digest",
"equivalent",
"fluent-bundle",
"fluent-langneg",
"fluent-syntax",
"fnv",
"foldhash",
"generic-array",
"hashbrown",
"heck",
"ident_case",
"indexmap",
"intl-memoizer",
"intl_pluralrules",
"libc",
Expand Down
51 changes: 38 additions & 13 deletions src/tools/miri/.github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,17 @@ jobs:
os: macos-latest
- host_target: i686-pc-windows-msvc
os: windows-latest
- host_target: aarch64-pc-windows-msvc
os: windows-11-arm
runs-on: ${{ matrix.os }}
env:
HOST_TARGET: ${{ matrix.host_target }}
steps:
- uses: actions/checkout@v4
- name: apt update
if: ${{ startsWith(matrix.os, 'ubuntu') }}
# The runners seem to have outdated apt repos sometimes
run: sudo apt update
- name: install qemu
if: ${{ matrix.qemu }}
run: sudo apt install qemu-user qemu-user-binfmt
Expand All @@ -63,6 +69,12 @@ jobs:
sudo apt update
# Install needed packages
sudo apt install $(echo "libatomic1: zlib1g-dev:" | sed 's/:/:${{ matrix.multiarch }}/g')
- name: Install rustup on Windows ARM
if: ${{ matrix.os == 'windows-11-arm' }}
run: |
curl -LOs https://static.rust-lang.org/rustup/dist/aarch64-pc-windows-msvc/rustup-init.exe
./rustup-init.exe -y --no-modify-path
echo "$USERPROFILE/.cargo/bin" >> "$GITHUB_PATH"
- uses: ./.github/workflows/setup
with:
toolchain_flags: "--host ${{ matrix.host_target }}"
Expand Down Expand Up @@ -147,35 +159,48 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 256 # get a bit more of the history
- name: install josh-proxy
run: cargo +stable install josh-proxy --git https://github.com/josh-project/josh --tag r24.10.04
- name: install josh-sync
run: cargo +stable install --locked --git https://github.com/rust-lang/josh-sync
- name: setup bot git name and email
run: |
git config --global user.name 'The Miri Cronjob Bot'
git config --global user.email '[email protected]'
- name: Install nightly toolchain
run: rustup toolchain install nightly --profile minimal
- name: get changes from rustc
run: ./miri rustc-pull
- name: Install rustup-toolchain-install-master
run: cargo install -f rustup-toolchain-install-master
- name: format changes (if any)
- name: Push changes to a branch and create PR
run: |
# Make it easier to see what happens.
set -x
# Temporarily disable early exit to examine the status code of rustc-josh-sync
set +e
rustc-josh-sync pull
exitcode=$?
set -e

# If there were no changes to pull, rustc-josh-sync returns status code 2.
# In that case, skip the rest of the job.
if [ $exitcode -eq 2 ]; then
echo "Nothing changed in rustc, skipping PR"
exit 0
elif [ $exitcode -ne 0 ]; then
# If return code was not 0 or 2, rustc-josh-sync actually failed
echo "error: rustc-josh-sync failed"
exit ${exitcode}
fi

# Format changes
./miri toolchain
./miri fmt --check || (./miri fmt && git commit -am "fmt")
- name: Push changes to a branch and create PR
run: |
# `git diff --exit-code` "succeeds" if the diff is empty.
if git diff --exit-code HEAD^; then echo "Nothing changed in rustc, skipping PR"; exit 0; fi
# The diff is non-empty, create a PR.

# Create a PR
BRANCH="rustup-$(date -u +%Y-%m-%d)"
git switch -c $BRANCH
git push -u origin $BRANCH
gh pr create -B master --title 'Automatic Rustup' --body 'Please close and re-open this PR to trigger CI, then enable auto-merge.'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ZULIP_BOT_EMAIL: ${{ secrets.ZULIP_BOT_EMAIL }}
ZULIP_API_TOKEN: ${{ secrets.ZULIP_API_TOKEN }}

cron-fail-notify:
name: cronjob failure notification
Expand All @@ -198,7 +223,7 @@ jobs:
It would appear that the [Miri cron job build]('"https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID"') failed.

This likely means that rustc changed the miri directory and
we now need to do a [`./miri rustc-pull`](https://github.com/rust-lang/miri/blob/master/CONTRIBUTING.md#importing-changes-from-the-rustc-repo).
we now need to do a [`rustc-josh-sync pull`](https://github.com/rust-lang/miri/blob/master/CONTRIBUTING.md#importing-changes-from-the-rustc-repo).

Would you mind investigating this issue?

Expand Down
1 change: 0 additions & 1 deletion src/tools/miri/.gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
target
/doc
tex/*/out
*.dot
*.out
Expand Down
14 changes: 8 additions & 6 deletions src/tools/miri/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -297,25 +297,27 @@ You can also directly run Miri on a Rust source file:

## Advanced topic: Syncing with the rustc repo

We use the [`josh` proxy](https://github.com/josh-project/josh) to transmit changes between the
We use the [`josh-sync`](https://github.com/rust-lang/josh-sync) tool to transmit changes between the
rustc and Miri repositories. You can install it as follows:

```sh
cargo +stable install josh-proxy --git https://github.com/josh-project/josh --tag r24.10.04
cargo install --locked --git https://github.com/rust-lang/josh-sync
```

Josh will automatically be started and stopped by `./miri`.
The commands below will automatically install and manage the [Josh](https://github.com/josh-project/josh) proxy that performs the actual work.

### Importing changes from the rustc repo

*Note: this usually happens automatically, so these steps rarely have to be done by hand.*

We assume we start on an up-to-date master branch in the Miri repo.

1) First, create a branch for the pull, e.g. `git checkout -b rustup`
2) Then run the following:
```sh
# Fetch and merge rustc side of the history. Takes ca 5 min the first time.
# This will also update the `rustc-version` file.
./miri rustc-pull
rustc-josh-sync pull
# Update local toolchain and apply formatting.
./miri toolchain && ./miri fmt
git commit -am "rustup"
Expand All @@ -328,12 +330,12 @@ needed.

### Exporting changes to the rustc repo

We will use the josh proxy to push to your fork of rustc. Run the following in the Miri repo,
We will use the `josh-sync` tool to push to your fork of rustc. Run the following in the Miri repo,
assuming we are on an up-to-date master branch:

```sh
# Push the Miri changes to your rustc fork (substitute your github handle for YOUR_NAME).
./miri rustc-push YOUR_NAME miri
rustc-josh-sync push miri YOUR_NAME
```

This will create a new branch called `miri` in your fork, and the output should include a link that
Expand Down
Loading
Loading