From 487484ece9230cc121b9dd642de84d187d4838d7 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 17 Aug 2025 06:59:19 +0100 Subject: [PATCH 01/11] feat(ci): miri test support for CI --- .github/actions/setup-builder/action.yml | 3 ++- .github/workflows/ci.yml | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/actions/setup-builder/action.yml b/.github/actions/setup-builder/action.yml index 532174590f..c7104e5f72 100644 --- a/.github/actions/setup-builder/action.yml +++ b/.github/actions/setup-builder/action.yml @@ -35,6 +35,7 @@ runs: rustup toolchain install ${RUST_VERSION} rustup override set ${RUST_VERSION} rustup component add rustfmt clippy + rustup component add miri - name: Setup Rust toolchain according to rust-toolchain.toml shell: bash if: ${{ inputs.rust-version == '' }} @@ -45,4 +46,4 @@ runs: - name: Fixup git permissions # https://github.com/actions/checkout/issues/766 shell: bash - run: git config --global --add safe.directory "$GITHUB_WORKSPACE" \ No newline at end of file + run: git config --global --add safe.directory "$GITHUB_WORKSPACE" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7587580843..b0c68c27c8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -160,3 +160,13 @@ jobs: - name: Check MSRV run: | cargo +${{ env.rust_msrv }} check --locked --workspace + + miri: + name: Run Miri + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup Nightly Rust toolchain + uses: ./.github/actions/setup-builder + - name: Run Miri + run: cargo miri test From 1210b8e9c9bc230ff69154d6faaf603cc7ec1da8 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 17 Aug 2025 07:10:23 +0100 Subject: [PATCH 02/11] feat: use RUST_VERSION for miri --- .github/actions/setup-builder/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/setup-builder/action.yml b/.github/actions/setup-builder/action.yml index c7104e5f72..0fc86e1a06 100644 --- a/.github/actions/setup-builder/action.yml +++ b/.github/actions/setup-builder/action.yml @@ -35,7 +35,7 @@ runs: rustup toolchain install ${RUST_VERSION} rustup override set ${RUST_VERSION} rustup component add rustfmt clippy - rustup component add miri + rustup component add --toolchain ${RUST_VERSION} miri - name: Setup Rust toolchain according to rust-toolchain.toml shell: bash if: ${{ inputs.rust-version == '' }} From 0d9284f37b193ca5b3accb3ddb3cc6fde89cdc46 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 17 Aug 2025 07:46:25 +0100 Subject: [PATCH 03/11] fix(build): try a different way of running miri --- .github/actions/setup-builder/action.yml | 7 ++++--- .github/workflows/ci.yml | 11 ++++++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/actions/setup-builder/action.yml b/.github/actions/setup-builder/action.yml index 0fc86e1a06..c40a043e96 100644 --- a/.github/actions/setup-builder/action.yml +++ b/.github/actions/setup-builder/action.yml @@ -34,15 +34,16 @@ runs: echo "Installing ${RUST_VERSION}" rustup toolchain install ${RUST_VERSION} rustup override set ${RUST_VERSION} - rustup component add rustfmt clippy - rustup component add --toolchain ${RUST_VERSION} miri + rustup component add rustfmt clippy miri + - name: Setup Rust toolchain according to rust-toolchain.toml shell: bash if: ${{ inputs.rust-version == '' }} run: | echo "Installing toolchain according to rust-toolchain.toml" rustup show - rustup component add rustfmt clippy + rustup component add rustfmt clippy miri + - name: Fixup git permissions # https://github.com/actions/checkout/issues/766 shell: bash diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b0c68c27c8..85bbc8694c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -148,15 +148,19 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Setup Nightly Rust toolchain uses: ./.github/actions/setup-builder + - name: Generate minimal versions lockfile run: | cargo generate-lockfile -Z direct-minimal-versions -Z minimal-versions + - name: Setup MSRV Rust toolchain uses: ./.github/actions/setup-builder with: rust-version: ${{ env.rust_msrv }} + - name: Check MSRV run: | cargo +${{ env.rust_msrv }} check --locked --workspace @@ -166,7 +170,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Setup Nightly Rust toolchain uses: ./.github/actions/setup-builder - - name: Run Miri + + - name: Miri setup + run: cargo miri setup + + - name: Run Miri run: cargo miri test From 873495a2dac1d81205edbe1d361742ab8ad838d9 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 17 Aug 2025 07:53:57 +0100 Subject: [PATCH 04/11] fix(ci): only install miri on nightly --- .github/actions/setup-builder/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/setup-builder/action.yml b/.github/actions/setup-builder/action.yml index c40a043e96..35dc43cd5d 100644 --- a/.github/actions/setup-builder/action.yml +++ b/.github/actions/setup-builder/action.yml @@ -34,7 +34,7 @@ runs: echo "Installing ${RUST_VERSION}" rustup toolchain install ${RUST_VERSION} rustup override set ${RUST_VERSION} - rustup component add rustfmt clippy miri + rustup component add rustfmt clippy - name: Setup Rust toolchain according to rust-toolchain.toml shell: bash From a28c5f359db88728cc88459599ac2f6161ebc72a Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 17 Aug 2025 07:56:09 +0100 Subject: [PATCH 05/11] feat(ci): disable isolation --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 85bbc8694c..9ece2d02cd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -178,4 +178,4 @@ jobs: run: cargo miri setup - name: Run Miri - run: cargo miri test + run: cargo miri test -Zmiri-disable-isolation From ba9238273bd7b4cd7174fc945a25aa9495ea6097 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 17 Aug 2025 08:04:25 +0100 Subject: [PATCH 06/11] fix(build): use MIRIFLAGS --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9ece2d02cd..9fb964dad0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,6 +31,7 @@ concurrency: env: rust_msrv: "1.85.0" + MIRIFLAGS: "-Zmiri-disable-isolation" jobs: check: @@ -178,4 +179,4 @@ jobs: run: cargo miri setup - name: Run Miri - run: cargo miri test -Zmiri-disable-isolation + run: cargo miri test From a718f2686d11e61ad9c16ed1fbbc5e87e952b08a Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 17 Aug 2025 08:41:19 +0100 Subject: [PATCH 07/11] build: miri backtrace full --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9fb964dad0..ddd535bcc5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ concurrency: env: rust_msrv: "1.85.0" - MIRIFLAGS: "-Zmiri-disable-isolation" + MIRIFLAGS: "-Zmiri-disable-isolation -Zmiri-backtrace=full" jobs: check: From 755b17565445dbbe3e9c6ab68c5add32184d3109 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 17 Aug 2025 20:06:27 +0100 Subject: [PATCH 08/11] build: disable stacked borrows check for miri --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ddd535bcc5..d99753ff34 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,8 @@ concurrency: env: rust_msrv: "1.85.0" - MIRIFLAGS: "-Zmiri-disable-isolation -Zmiri-backtrace=full" + # Disable stacked borrows due to crossbeam-epoch limitations + MIRIFLAGS: "-Zmiri-disable-isolation -Zmiri-backtrace=full -Zmiri-disable-stacked-borrows" jobs: check: From feb8d1cf086d673bac71a1c27e2d5861f79546fb Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 18 Aug 2025 12:59:29 +0100 Subject: [PATCH 09/11] fix(build): ignore zstd compression test in miri --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d99753ff34..120f0bd4a3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -180,4 +180,4 @@ jobs: run: cargo miri setup - name: Run Miri - run: cargo miri test + run: cargo miri test -- --skip puffin::compression::test_compression_codec_zstd From 37cb61d2a23a5e6bb2d0d96bccedbbd37a36f36d Mon Sep 17 00:00:00 2001 From: Alex <1221721+atcol@users.noreply.github.com> Date: Mon, 18 Aug 2025 13:02:23 +0100 Subject: [PATCH 10/11] fix(build): use v5 checkout --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2a36b6f2fb..48e5457522 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -171,7 +171,7 @@ jobs: name: Run Miri runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Setup Nightly Rust toolchain uses: ./.github/actions/setup-builder From b66025f2232a352b0ceba0444b3e4e13bbfc743d Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 18 Aug 2025 15:47:44 +0100 Subject: [PATCH 11/11] build: tweak skip flag --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 48e5457522..ba6088318a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -180,4 +180,4 @@ jobs: run: cargo miri setup - name: Run Miri - run: cargo miri test -- --skip puffin::compression::test_compression_codec_zstd + run: cargo miri test -- --skip test_compression_codec_zstd