From 587d0a50d154e190f812b2fd0bd2faf2c05eb0d3 Mon Sep 17 00:00:00 2001 From: LongYinan Date: Mon, 13 Oct 2025 21:42:51 +0800 Subject: [PATCH 1/2] ci: run miri on more platform --- .github/workflows/CI.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 60184f7..4b93123 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -46,13 +46,16 @@ jobs: run: cargo test miri: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@v5 - name: Setup Rust uses: dtolnay/rust-toolchain@stable with: - targets: x86_64-unknown-linux-gnu components: miri toolchain: nightly - uses: actions/setup-node@v5 From 79bc8448be50f33cf3b4b5adc5501aeb554cc4f6 Mon Sep 17 00:00:00 2001 From: LongYinan Date: Mon, 13 Oct 2025 22:05:49 +0800 Subject: [PATCH 2/2] fix avx512f --- .github/workflows/CI.yml | 4 ++-- src/simd/avx512.rs | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 4b93123..285b04b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -50,13 +50,13 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@v5 - name: Setup Rust uses: dtolnay/rust-toolchain@stable with: - components: miri + components: miri,rust-src toolchain: nightly - uses: actions/setup-node@v5 with: diff --git a/src/simd/avx512.rs b/src/simd/avx512.rs index 316edd2..a1ac242 100644 --- a/src/simd/avx512.rs +++ b/src/simd/avx512.rs @@ -211,8 +211,9 @@ pub unsafe fn format_string(value: &str, dst: &mut [u8]) -> usize { // Handle remaining bytes let mut placeholder: [u8; LANES] = [0; LANES]; + let mut v; while nb > 0 { - let v = { + v = { #[cfg(not(any(target_os = "linux", target_os = "macos")))] { std::ptr::copy_nonoverlapping(sptr, placeholder[..].as_mut_ptr(), nb); @@ -237,7 +238,7 @@ pub unsafe fn format_string(value: &str, dst: &mut [u8]) -> usize { } }; - v.storeu(dptr); + v.storeu(std::slice::from_raw_parts_mut(dptr, LANES).as_mut_ptr()); let mask = escaped_mask(v).clear_high_bits(LANES - nb); if mask.all_zero() {