Skip to content

Conversation

@neuschaefer
Copy link
Contributor

@neuschaefer neuschaefer commented Sep 20, 2025

I'm not completely aware how the code works, but I've tested this fix on aarch64_be. Previously, memchr produced many wrong results, but with this fix it's good.

aarch64 (little-endian) and other big-endian architectures should be unaffected.

This bugfix is necessary in order to build a working rustc, standard library and cargo.

Due to how the NeonMoveMask is constructed, the byteswap on BE does not
appear to be needed. In fact, on my aarch64_be test system, with the
byteswap many tests fail, but without it, all tests pass.
@BurntSushi
Copy link
Owner

Thank you!

How did you test it? Can we add it to CI?

@neuschaefer
Copy link
Contributor Author

I tested it manually on a machine that runs an unofficial port of Alpine Linux for aarch64_be. More information can be found at https://alpine.sakamoto.pl/jn/. aarch64_be Linux runs on regular aarch64 hardware, either bare-metal or in a VM. Usermode emulation in QEMU also supports aarch64_be, but the compiler toolchain situation isn't great at the moment.

The documented way to build a aarch64_be toolchain requires building a C/C++ toolchain first, because the Alpine port is unofficial.

@neuschaefer
Copy link
Contributor Author

neuschaefer commented Sep 25, 2025

I am investigating cross support in cross-rs/cross#1706 / cross-rs/cross#1707

@BurntSushi
Copy link
Owner

Thanks for investigating.

I'm hesitant to block this on getting CI working, especially if this is a correctness fix. But I don't have the bandwidth to dig into testing aarch64 big-endian myself right now.

In lieu of that, would it be possible for you to share the cargo test output before and after this fix? Or if cargo test doesn't work, some other kind of test. Basically, instead of saying that memchr produced incorrect results you could show it. It's not perfect, but I can live with it given the obscurity of the target.

@neuschaefer
Copy link
Contributor Author

Yes, sure!

cargo test on aarch64_be, memchr 2.7.5
   Compiling memchr v2.7.5 (/home/user/src/memchr)
warning: struct `SensibleMoveMask` is never constructed
   --> src/vector.rs:118:19
    |
118 | pub(crate) struct SensibleMoveMask(u32);
    |                   ^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default

warning: method `get_for_offset` is never used
   --> src/vector.rs:126:8
    |
120 | impl SensibleMoveMask {
    | --------------------- method in this implementation
...
126 |     fn get_for_offset(self) -> u32 {
    |        ^^^^^^^^^^^^^^

warning: `memchr` (lib) generated 2 warnings
warning: `memchr` (lib test) generated 2 warnings (2 duplicates)
    Finished `test` profile [optimized + debuginfo] target(s) in 1m 27s
     Running unittests src/lib.rs (target/debug/deps/memchr-5a5ec34ff4bdbd9a)

running 112 tests
test arch::aarch64::neon::memchr::tests::qc_memchr1_iter ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memchr1_rev_iter ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memchr2_iter ... FAILED
test arch::aarch64::neon::memchr::tests::forward_one ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memchr2_matches_naive ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memchr2_double_ended_iter ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memchr2_rev_iter ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memchr3_rev_iter ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memchr3_iter ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memchr3_matches_naive ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memchr_matches_naive ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memrchr2_matches_naive ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memchr3_double_ended_iter ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memrchr3_matches_naive ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memrchr_matches_naive ... FAILED
test arch::aarch64::neon::memchr::tests::qc_memchr_double_ended_iter ... FAILED
test arch::aarch64::neon::memchr::tests::reverse_one ... FAILED
test arch::aarch64::neon::packedpair::tests::forward_packedpair ... FAILED
test arch::aarch64::neon::packedpair::tests::forward_packedpair_prefilter ... FAILED
test arch::aarch64::neon::packedpair::tests::forward_substring ... FAILED
test arch::aarch64::neon::packedpair::tests::qc_fwd_matches_naive ... ok
test arch::aarch64::neon::packedpair::tests::qc_fwd_prefix_is_substring ... FAILED
test arch::aarch64::neon::packedpair::tests::qc_fwd_suffix_is_substring ... FAILED
test arch::aarch64::neon::memchr::tests::count_one ... ok
test arch::aarch64::neon::memchr::tests::forward_two ... FAILED
test arch::all::memchr::tests::qc_memchr1_iter ... ok
test arch::all::memchr::tests::qc_memchr1_iter_size_hint ... ok
test arch::all::memchr::tests::qc_memchr1_rev_iter ... ok
test arch::all::memchr::tests::qc_memchr2_double_ended_iter ... ok
test arch::all::memchr::tests::qc_memchr2_iter ... ok
test arch::all::memchr::tests::qc_memchr2_matches_naive ... ok
test arch::all::memchr::tests::qc_memchr2_rev_iter ... ok
test arch::all::memchr::tests::qc_memchr3_double_ended_iter ... ok
test arch::all::memchr::tests::qc_memchr3_iter ... ok
test arch::all::memchr::tests::qc_memchr3_matches_naive ... ok
test arch::all::memchr::tests::qc_memchr3_rev_iter ... ok
test arch::aarch64::neon::memchr::tests::reverse_two ... FAILED
test arch::all::memchr::tests::qc_memchr_double_ended_iter ... ok
test arch::all::memchr::tests::qc_memchr_matches_naive ... ok
test arch::all::memchr::tests::qc_memrchr2_matches_naive ... ok
test arch::all::memchr::tests::count_one ... ok
test arch::all::memchr::tests::regression_big_endian1 ... ok
test arch::all::memchr::tests::qc_memrchr3_matches_naive ... ok
test arch::all::memchr::tests::qc_memrchr_matches_naive ... ok
test arch::all::memchr::tests::regression_big_endian2 ... ok
test arch::all::memchr::tests::regression_count_new_lines ... ok
test arch::all::memchr::tests::regression_double_ended_iterator ... ok
test arch::all::memchr::tests::forward_one ... ok
test arch::all::packedpair::tests::forward_packedpair ... FAILED
test arch::aarch64::neon::memchr::tests::forward_three ... FAILED
test arch::all::rabinkarp::tests::qc_fwd_matches_naive ... ok
test arch::all::rabinkarp::tests::forward ... ok
test arch::all::rabinkarp::tests::qc_fwd_prefix_is_substring ... ok
test arch::all::rabinkarp::tests::qc_fwd_suffix_is_substring ... ok
test arch::all::rabinkarp::tests::qc_rev_matches_naive ... ok
test arch::all::rabinkarp::tests::qc_rev_prefix_is_substring ... ok
test arch::all::rabinkarp::tests::qc_rev_suffix_is_substring ... ok
test arch::aarch64::neon::memchr::tests::reverse_three ... FAILED
test arch::all::shiftor::tests::qc_fwd_matches_naive ... ok
test arch::all::shiftor::tests::qc_fwd_prefix_is_substring ... ok
test arch::all::rabinkarp::tests::reverse ... ok
test arch::all::tests::equals_different_lengths ... ok
test arch::all::tests::equals_mismatch ... ok
test arch::all::tests::equals_yes ... ok
test arch::all::tests::prefix ... ok
test arch::all::tests::suffix ... ok
test arch::all::shiftor::tests::qc_fwd_suffix_is_substring ... ok
test arch::all::shiftor::tests::forward ... ok
test arch::all::twoway::tests::qc_fwd_matches_naive ... ok
test arch::all::twoway::tests::qc_fwd_prefix_is_substring ... ok
test arch::all::twoway::tests::qc_fwd_suffix_is_substring ... ok
test arch::all::twoway::tests::qc_rev_matches_naive ... ok
test arch::all::twoway::tests::qc_rev_prefix_is_substring ... ok
test arch::all::twoway::tests::forward ... ok
test arch::all::twoway::tests::qc_rev_suffix_is_substring ... ok
test arch::all::twoway::tests::qc_suffix_forward_maximal ... ok
test arch::all::twoway::tests::regression_rev_small_period ... ok
test arch::all::twoway::tests::qc_suffix_reverse_maximal ... ok
test arch::all::twoway::tests::suffix_forward ... ok
test arch::all::twoway::tests::suffix_reverse ... ok
test memchr::tests::forward1_iter ... FAILED
test arch::all::twoway::tests::reverse ... ok
test memchr::tests::forward1_oneshot ... FAILED
test arch::all::memchr::tests::forward_three ... ok
test arch::all::memchr::tests::reverse_one ... ok
test arch::all::memchr::tests::forward_two ... ok
test memchr::tests::reverse1_iter ... FAILED
test memchr::tests::reverse1_oneshot ... FAILED
test arch::all::memchr::tests::reverse_two ... ok
test memchr::tests::count1_iter ... ok
test arch::all::memchr::tests::reverse_three ... ok
test memchr::tests::forward2_oneshot ... FAILED
test memchr::tests::sync_regression ... ok
test memmem::tests::forward ... FAILED
test memmem::tests::qc_fwd_matches_naive ... ok
test memchr::tests::forward2_iter ... FAILED
test memmem::tests::qc_fwd_prefix_is_substring ... FAILED
test memmem::tests::qc_fwd_suffix_is_substring ... FAILED
test memmem::tests::qc_rev_matches_naive ... ok
test memmem::tests::qc_rev_prefix_is_substring ... ok
test memmem::tests::reverse ... FAILED
test tests::byte_order ... ok
test memmem::tests::qc_rev_suffix_is_substring ... ok
test tests::substring::naive::tests::reverse ... ok
test tests::substring::naive::tests::forward ... ok
test memchr::tests::reverse2_iter ... FAILED
test memchr::tests::forward3_iter ... FAILED
test memchr::tests::reverse2_oneshot ... FAILED
test memchr::tests::forward3_oneshot ... FAILED
test memchr::tests::reverse3_iter ... FAILED
test memchr::tests::reverse3_oneshot ... FAILED

failures:

---- arch::aarch64::neon::memchr::tests::qc_memchr1_iter stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter' (23827) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0])

---- arch::aarch64::neon::memchr::tests::qc_memchr1_rev_iter stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_rev_iter' (23829) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])

---- arch::aarch64::neon::memchr::tests::qc_memchr2_iter stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memchr2_iter' (23831) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0])

---- arch::aarch64::neon::memchr::tests::forward_one stdout ----

thread 'arch::aarch64::neon::memchr::tests::forward_one' (23823) panicked at src/tests/memchr/mod.rs:96:17:
assertion `left == right` failed: needles: ['a'], haystack: "%%%%%%%%%%%%%%%a"
  left: [15]
 right: [1, 15]

---- arch::aarch64::neon::memchr::tests::qc_memchr2_matches_naive stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memchr2_matches_naive' (23832) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: (0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0])

---- arch::aarch64::neon::memchr::tests::qc_memchr2_double_ended_iter stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memchr2_double_ended_iter' (23830) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: (0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [])

---- arch::aarch64::neon::memchr::tests::qc_memchr2_rev_iter stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memchr2_rev_iter' (23833) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2])

---- arch::aarch64::neon::memchr::tests::qc_memchr3_rev_iter stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memchr3_rev_iter' (23838) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3])

---- arch::aarch64::neon::memchr::tests::qc_memchr3_iter stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memchr3_iter' (23836) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0])

---- arch::aarch64::neon::memchr::tests::qc_memchr3_matches_naive stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memchr3_matches_naive' (23837) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: (0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0])

---- arch::aarch64::neon::memchr::tests::qc_memchr_matches_naive stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memchr_matches_naive' (23840) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: (0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0])

---- arch::aarch64::neon::memchr::tests::qc_memrchr2_matches_naive stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memrchr2_matches_naive' (23841) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: (0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])

---- arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at src/arch/aarch64/neon/memchr.rs:959:5:
attempt to subtract with overflow

thread 'arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint' (23828) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED (runtime error). Arguments: ([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
Error: "attempt to subtract with overflow"

---- arch::aarch64::neon::memchr::tests::qc_memchr3_double_ended_iter stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memchr3_double_ended_iter' (23835) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: (0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [])

---- arch::aarch64::neon::memchr::tests::qc_memrchr3_matches_naive stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memrchr3_matches_naive' (23842) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: (0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])

---- arch::aarch64::neon::memchr::tests::qc_memrchr_matches_naive stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memrchr_matches_naive' (23843) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: (0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])

---- arch::aarch64::neon::memchr::tests::qc_memchr_double_ended_iter stdout ----

thread 'arch::aarch64::neon::memchr::tests::qc_memchr_double_ended_iter' (23839) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: (0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [])

---- arch::aarch64::neon::memchr::tests::reverse_one stdout ----

thread 'arch::aarch64::neon::memchr::tests::reverse_one' (23844) panicked at src/tests/memchr/mod.rs:130:17:
assertion `left == right` failed: needles: ['a'], haystack: "%%%%%%%%%%%%%%%a"
  left: [15]
 right: [1]

---- arch::aarch64::neon::packedpair::tests::forward_packedpair stdout ----

thread 'arch::aarch64::neon::packedpair::tests::forward_packedpair' (23847) panicked at src/tests/packedpair.rs:56:29:
assertion `left == right` failed: FORWARD, needle: [120, 121, 122], haystack: [120, 121, 122, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64], index1: 1, index2: 2
  left: Some(0)
 right: None

---- arch::aarch64::neon::packedpair::tests::forward_packedpair_prefilter stdout ----

thread 'arch::aarch64::neon::packedpair::tests::forward_packedpair_prefilter' (23848) panicked at src/tests/packedpair.rs:56:29:
assertion `left == right` failed: FORWARD, needle: [120, 121, 122], haystack: [120, 121, 122, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64], index1: 1, index2: 2
  left: Some(0)
 right: Some(14)

---- arch::aarch64::neon::packedpair::tests::forward_substring stdout ----

thread 'arch::aarch64::neon::packedpair::tests::forward_substring' (23849) panicked at src/tests/substring/mod.rs:97:29:
assertion `left == right` failed: FORWARD, needle: "ab", haystack: "###############ab"
  left: Some(15)
 right: None

---- arch::aarch64::neon::packedpair::tests::qc_fwd_prefix_is_substring stdout ----

thread 'arch::aarch64::neon::packedpair::tests::qc_fwd_prefix_is_substring' (23851) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0])

---- arch::aarch64::neon::packedpair::tests::qc_fwd_suffix_is_substring stdout ----

thread 'arch::aarch64::neon::packedpair::tests::qc_fwd_suffix_is_substring' (23852) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])

---- arch::aarch64::neon::memchr::tests::forward_two stdout ----

thread 'arch::aarch64::neon::memchr::tests::forward_two' (23826) panicked at src/tests/memchr/mod.rs:96:17:
assertion `left == right` failed: needles: ['a', 'z'], haystack: "%%%%%%%%%%%%%%az"
  left: [14, 15]
 right: [0, 14, 15]

---- arch::aarch64::neon::memchr::tests::reverse_two stdout ----

thread 'arch::aarch64::neon::memchr::tests::reverse_two' (23846) panicked at src/tests/memchr/mod.rs:130:17:
assertion `left == right` failed: needles: ['a', 'z'], haystack: "%%%%%%%%%%%%%%az"
  left: [14, 15]
 right: [1]

---- arch::all::packedpair::tests::forward_packedpair stdout ----

thread 'arch::all::packedpair::tests::forward_packedpair' (23880) panicked at src/tests/packedpair.rs:56:29:
assertion `left == right` failed: FORWARD, needle: [120, 122], haystack: [120, 122, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64], index1: 1, index2: 1
  left: Some(0)
 right: None

---- arch::aarch64::neon::memchr::tests::forward_three stdout ----

thread 'arch::aarch64::neon::memchr::tests::forward_three' (23825) panicked at src/tests/memchr/mod.rs:96:17:
assertion `left == right` failed: needles: ['x', 'y', 'z'], haystack: "%%%%%%%%%%%%%xyz"
  left: [13, 14, 15]
 right: [0, 13, 14, 15]

---- arch::aarch64::neon::memchr::tests::reverse_three stdout ----

thread 'arch::aarch64::neon::memchr::tests::reverse_three' (23845) panicked at src/tests/memchr/mod.rs:130:17:
assertion `left == right` failed: needles: ['x', 'y', 'z'], haystack: "%%%%%%%%%%%%%xyz"
  left: [13, 14, 15]
 right: [3]

---- memchr::tests::forward1_iter stdout ----

thread 'memchr::tests::forward1_iter' (23912) panicked at src/tests/memchr/mod.rs:96:17:
assertion `left == right` failed: needles: ['a'], haystack: "%%%%%%%%%%%%%%%a"
  left: [15]
 right: [1, 15]

---- memchr::tests::forward1_oneshot stdout ----

thread 'memchr::tests::forward1_oneshot' (23913) panicked at src/tests/memchr/mod.rs:96:17:
assertion `left == right` failed: needles: ['a'], haystack: "%%%%%%%%%%%%%%%a"
  left: [15]
 right: [1, 15]

---- memchr::tests::reverse1_iter stdout ----

thread 'memchr::tests::reverse1_iter' (23920) panicked at src/tests/memchr/mod.rs:130:17:
assertion `left == right` failed: needles: ['a'], haystack: "%%%%%%%%%%%%%%%a"
  left: [15]
 right: [1]

---- memchr::tests::reverse1_oneshot stdout ----

thread 'memchr::tests::reverse1_oneshot' (23921) panicked at src/tests/memchr/mod.rs:130:17:
assertion `left == right` failed: needles: ['a'], haystack: "%%%%%%%%%%%%%%%a"
  left: [15]
 right: [1]

---- memchr::tests::forward2_oneshot stdout ----

thread 'memchr::tests::forward2_oneshot' (23915) panicked at src/tests/memchr/mod.rs:96:17:
assertion `left == right` failed: needles: ['a', 'z'], haystack: "%%%%%%%%%%%%%%az"
  left: [14, 15]
 right: [0, 14, 15]

---- memmem::tests::forward stdout ----

thread 'memmem::tests::forward' (23927) panicked at src/tests/substring/mod.rs:97:29:
assertion `left == right` failed: FORWARD, needle: "a", haystack: "###############a"
  left: Some(15)
 right: Some(1)

---- memchr::tests::forward2_iter stdout ----

thread 'memchr::tests::forward2_iter' (23914) panicked at src/tests/memchr/mod.rs:96:17:
assertion `left == right` failed: needles: ['a', 'z'], haystack: "%%%%%%%%%%%%%%az"
  left: [14, 15]
 right: [0, 14, 15]

---- memmem::tests::qc_fwd_prefix_is_substring stdout ----

thread 'memmem::tests::qc_fwd_prefix_is_substring' (23929) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0])

---- memmem::tests::qc_fwd_suffix_is_substring stdout ----

thread 'memmem::tests::qc_fwd_suffix_is_substring' (23930) panicked at /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/quickcheck-1.0.3/src/tester.rs:165:28:
[quickcheck] TEST FAILED. Arguments: ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])

---- memmem::tests::reverse stdout ----

thread 'memmem::tests::reverse' (23934) panicked at src/tests/substring/mod.rs:113:29:
assertion `left == right` failed: REVERSE, needle: "a", haystack: "###############a"
  left: Some(15)
 right: Some(1)

---- memchr::tests::reverse2_iter stdout ----

thread 'memchr::tests::reverse2_iter' (23922) panicked at src/tests/memchr/mod.rs:130:17:
assertion `left == right` failed: needles: ['a', 'z'], haystack: "%%%%%%%%%%%%%%az"
  left: [14, 15]
 right: [1]

---- memchr::tests::forward3_iter stdout ----

thread 'memchr::tests::forward3_iter' (23916) panicked at src/tests/memchr/mod.rs:96:17:
assertion `left == right` failed: needles: ['x', 'y', 'z'], haystack: "%%%%%%%%%%%%%xyz"
  left: [13, 14, 15]
 right: [0, 13, 14, 15]

---- memchr::tests::reverse2_oneshot stdout ----

thread 'memchr::tests::reverse2_oneshot' (23923) panicked at src/tests/memchr/mod.rs:130:17:
assertion `left == right` failed: needles: ['a', 'z'], haystack: "%%%%%%%%%%%%%%az"
  left: [14, 15]
 right: [1]

---- memchr::tests::forward3_oneshot stdout ----

thread 'memchr::tests::forward3_oneshot' (23919) panicked at src/tests/memchr/mod.rs:96:17:
assertion `left == right` failed: needles: ['x', 'y', 'z'], haystack: "%%%%%%%%%%%%%xyz"
  left: [13, 14, 15]
 right: [0, 13, 14, 15]

---- memchr::tests::reverse3_iter stdout ----

thread 'memchr::tests::reverse3_iter' (23924) panicked at src/tests/memchr/mod.rs:130:17:
assertion `left == right` failed: needles: ['x', 'y', 'z'], haystack: "%%%%%%%%%%%%%xyz"
  left: [13, 14, 15]
 right: [3]

---- memchr::tests::reverse3_oneshot stdout ----

thread 'memchr::tests::reverse3_oneshot' (23925) panicked at src/tests/memchr/mod.rs:130:17:
assertion `left == right` failed: needles: ['x', 'y', 'z'], haystack: "%%%%%%%%%%%%%xyz"
  left: [13, 14, 15]
 right: [3]


failures:
    arch::aarch64::neon::memchr::tests::forward_one
    arch::aarch64::neon::memchr::tests::forward_three
    arch::aarch64::neon::memchr::tests::forward_two
    arch::aarch64::neon::memchr::tests::qc_memchr1_iter
    arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint
    arch::aarch64::neon::memchr::tests::qc_memchr1_rev_iter
    arch::aarch64::neon::memchr::tests::qc_memchr2_double_ended_iter
    arch::aarch64::neon::memchr::tests::qc_memchr2_iter
    arch::aarch64::neon::memchr::tests::qc_memchr2_matches_naive
    arch::aarch64::neon::memchr::tests::qc_memchr2_rev_iter
    arch::aarch64::neon::memchr::tests::qc_memchr3_double_ended_iter
    arch::aarch64::neon::memchr::tests::qc_memchr3_iter
    arch::aarch64::neon::memchr::tests::qc_memchr3_matches_naive
    arch::aarch64::neon::memchr::tests::qc_memchr3_rev_iter
    arch::aarch64::neon::memchr::tests::qc_memchr_double_ended_iter
    arch::aarch64::neon::memchr::tests::qc_memchr_matches_naive
    arch::aarch64::neon::memchr::tests::qc_memrchr2_matches_naive
    arch::aarch64::neon::memchr::tests::qc_memrchr3_matches_naive
    arch::aarch64::neon::memchr::tests::qc_memrchr_matches_naive
    arch::aarch64::neon::memchr::tests::reverse_one
    arch::aarch64::neon::memchr::tests::reverse_three
    arch::aarch64::neon::memchr::tests::reverse_two
    arch::aarch64::neon::packedpair::tests::forward_packedpair
    arch::aarch64::neon::packedpair::tests::forward_packedpair_prefilter
    arch::aarch64::neon::packedpair::tests::forward_substring
    arch::aarch64::neon::packedpair::tests::qc_fwd_prefix_is_substring
    arch::aarch64::neon::packedpair::tests::qc_fwd_suffix_is_substring
    arch::all::packedpair::tests::forward_packedpair
    memchr::tests::forward1_iter
    memchr::tests::forward1_oneshot
    memchr::tests::forward2_iter
    memchr::tests::forward2_oneshot
    memchr::tests::forward3_iter
    memchr::tests::forward3_oneshot
    memchr::tests::reverse1_iter
    memchr::tests::reverse1_oneshot
    memchr::tests::reverse2_iter
    memchr::tests::reverse2_oneshot
    memchr::tests::reverse3_iter
    memchr::tests::reverse3_oneshot
    memmem::tests::forward
    memmem::tests::qc_fwd_prefix_is_substring
    memmem::tests::qc_fwd_suffix_is_substring
    memmem::tests::reverse

test result: FAILED. 68 passed; 44 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.84s

error: test failed, to rerun pass `--lib`
cargo test on aarch64_be, memchr with this PR
   Compiling memchr v2.7.5 (/home/user/src/memchr)
warning: struct `SensibleMoveMask` is never constructed
   --> src/vector.rs:118:19
    |
118 | pub(crate) struct SensibleMoveMask(u32);
    |                   ^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default

warning: method `get_for_offset` is never used
   --> src/vector.rs:126:8
    |
120 | impl SensibleMoveMask {
    | --------------------- method in this implementation
...
126 |     fn get_for_offset(self) -> u32 {
    |        ^^^^^^^^^^^^^^

warning: `memchr` (lib) generated 2 warnings
warning: `memchr` (lib test) generated 2 warnings (2 duplicates)
    Finished `test` profile [optimized + debuginfo] target(s) in 9.58s
     Running unittests src/lib.rs (target/debug/deps/memchr-5a5ec34ff4bdbd9a)

running 112 tests
test arch::aarch64::neon::memchr::tests::qc_memchr1_iter ... ok
test arch::aarch64::neon::memchr::tests::qc_memchr1_rev_iter ... ok
test arch::aarch64::neon::memchr::tests::qc_memchr1_iter_size_hint ... ok
test arch::aarch64::neon::memchr::tests::qc_memchr2_iter ... ok
test arch::aarch64::neon::memchr::tests::qc_memchr2_rev_iter ... ok
test arch::aarch64::neon::memchr::tests::qc_memchr2_matches_naive ... ok
test arch::aarch64::neon::memchr::tests::qc_memchr2_double_ended_iter ... ok
test arch::aarch64::neon::memchr::tests::qc_memchr3_iter ... ok
test arch::aarch64::neon::memchr::tests::qc_memchr3_rev_iter ... ok
test arch::aarch64::neon::memchr::tests::qc_memchr3_matches_naive ... ok
test arch::aarch64::neon::memchr::tests::qc_memchr3_double_ended_iter ... ok
test arch::aarch64::neon::memchr::tests::qc_memchr_matches_naive ... ok
test arch::aarch64::neon::memchr::tests::qc_memrchr2_matches_naive ... ok
test arch::aarch64::neon::memchr::tests::qc_memchr_double_ended_iter ... ok
test arch::aarch64::neon::memchr::tests::qc_memrchr_matches_naive ... ok
test arch::aarch64::neon::memchr::tests::qc_memrchr3_matches_naive ... ok
test arch::aarch64::neon::memchr::tests::count_one ... ok
test arch::aarch64::neon::memchr::tests::forward_one ... ok
test arch::aarch64::neon::memchr::tests::reverse_one ... ok
test arch::aarch64::neon::packedpair::tests::forward_substring ... ok
test arch::aarch64::neon::packedpair::tests::qc_fwd_matches_naive ... ok
test arch::aarch64::neon::packedpair::tests::qc_fwd_prefix_is_substring ... ok
test arch::aarch64::neon::packedpair::tests::qc_fwd_suffix_is_substring ... ok
test arch::aarch64::neon::memchr::tests::forward_two ... ok
test arch::aarch64::neon::memchr::tests::reverse_two ... ok
test arch::aarch64::neon::memchr::tests::forward_three ... ok
test arch::all::memchr::tests::qc_memchr1_iter ... ok
test arch::all::memchr::tests::qc_memchr1_iter_size_hint ... ok
test arch::all::memchr::tests::qc_memchr1_rev_iter ... ok
test arch::all::memchr::tests::qc_memchr2_double_ended_iter ... ok
test arch::aarch64::neon::memchr::tests::reverse_three ... ok
test arch::all::memchr::tests::qc_memchr2_iter ... ok
test arch::all::memchr::tests::qc_memchr2_matches_naive ... ok
test arch::all::memchr::tests::qc_memchr2_rev_iter ... ok
test arch::all::memchr::tests::qc_memchr3_iter ... ok
test arch::all::memchr::tests::qc_memchr3_double_ended_iter ... ok
test arch::all::memchr::tests::qc_memchr3_matches_naive ... ok
test arch::all::memchr::tests::qc_memchr3_rev_iter ... ok
test arch::all::memchr::tests::qc_memchr_matches_naive ... ok
test arch::all::memchr::tests::qc_memchr_double_ended_iter ... ok
test arch::all::memchr::tests::qc_memrchr2_matches_naive ... ok
test arch::all::memchr::tests::qc_memrchr3_matches_naive ... ok
test arch::all::memchr::tests::regression_big_endian1 ... ok
test arch::all::memchr::tests::regression_big_endian2 ... ok
test arch::all::memchr::tests::regression_count_new_lines ... ok
test arch::all::memchr::tests::regression_double_ended_iterator ... ok
test arch::all::memchr::tests::qc_memrchr_matches_naive ... ok
test arch::all::memchr::tests::count_one ... ok
test arch::all::memchr::tests::forward_one ... ok
test arch::all::memchr::tests::forward_two ... ok
test arch::all::memchr::tests::reverse_one ... ok
test arch::all::rabinkarp::tests::forward ... ok
test arch::all::rabinkarp::tests::qc_fwd_matches_naive ... ok
test arch::all::rabinkarp::tests::qc_fwd_prefix_is_substring ... ok
test arch::all::rabinkarp::tests::qc_fwd_suffix_is_substring ... ok
test arch::all::rabinkarp::tests::qc_rev_matches_naive ... ok
test arch::all::rabinkarp::tests::qc_rev_prefix_is_substring ... ok
test arch::all::rabinkarp::tests::qc_rev_suffix_is_substring ... ok
test arch::all::memchr::tests::forward_three ... ok
test arch::all::rabinkarp::tests::reverse ... ok
test arch::all::shiftor::tests::qc_fwd_matches_naive ... ok
test arch::all::shiftor::tests::qc_fwd_prefix_is_substring ... ok
test arch::all::shiftor::tests::qc_fwd_suffix_is_substring ... ok
test arch::all::tests::equals_different_lengths ... ok
test arch::all::tests::equals_mismatch ... ok
test arch::all::tests::equals_yes ... ok
test arch::all::shiftor::tests::forward ... ok
test arch::all::tests::suffix ... ok
test arch::all::tests::prefix ... ok
test arch::all::twoway::tests::qc_fwd_prefix_is_substring ... ok
test arch::all::twoway::tests::qc_fwd_matches_naive ... ok
test arch::all::twoway::tests::qc_fwd_suffix_is_substring ... ok
test arch::all::twoway::tests::qc_rev_matches_naive ... ok
test arch::all::twoway::tests::qc_rev_suffix_is_substring ... ok
test arch::all::twoway::tests::qc_rev_prefix_is_substring ... ok
test arch::all::twoway::tests::qc_suffix_forward_maximal ... ok
test arch::all::twoway::tests::regression_rev_small_period ... ok
test arch::all::twoway::tests::forward ... ok
test arch::all::twoway::tests::suffix_forward ... ok
test arch::all::twoway::tests::suffix_reverse ... ok
test arch::all::twoway::tests::qc_suffix_reverse_maximal ... ok
test arch::all::twoway::tests::reverse ... ok
test arch::all::memchr::tests::reverse_two ... ok
test arch::all::memchr::tests::reverse_three ... ok
test memchr::tests::count1_iter ... ok
test memchr::tests::forward1_iter ... ok
test memchr::tests::forward1_oneshot ... ok
test memchr::tests::forward2_iter ... ok
test memchr::tests::forward2_oneshot ... ok
test memchr::tests::reverse1_iter ... ok
test memchr::tests::forward3_iter ... ok
test memchr::tests::reverse1_oneshot ... ok
test memchr::tests::forward3_oneshot ... ok
test memchr::tests::sync_regression ... ok
test memmem::tests::forward ... ok
test memmem::tests::qc_fwd_matches_naive ... ok
test memmem::tests::qc_fwd_prefix_is_substring ... ok
test memmem::tests::qc_fwd_suffix_is_substring ... ok
test memmem::tests::qc_rev_matches_naive ... ok
test memmem::tests::qc_rev_prefix_is_substring ... ok
test memchr::tests::reverse2_iter ... ok
test memmem::tests::qc_rev_suffix_is_substring ... ok
test tests::byte_order ... ok
test memmem::tests::reverse ... ok
test tests::substring::naive::tests::forward ... ok
test tests::substring::naive::tests::reverse ... ok
test memchr::tests::reverse2_oneshot ... ok
test memchr::tests::reverse3_iter ... ok
test memchr::tests::reverse3_oneshot ... ok
test arch::aarch64::neon::packedpair::tests::forward_packedpair_prefilter ... ok
test arch::aarch64::neon::packedpair::tests::forward_packedpair ... ok
test arch::all::packedpair::tests::forward_packedpair ... ok

test result: ok. 112 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 55.36s

   Doc-tests memchr
error: doctest failed, to rerun pass `--doc`

Caused by:
  could not execute process `rustdoc --edition=2021 --crate-type lib --color auto --crate-name memchr --test src/lib.rs --test-run-directory /home/user/src/memchr -L dependency=/home/user/src/memchr/target/debug/deps -L dependency=/home/user/src/memchr/target/debug/deps --extern memchr=/home/user/src/memchr/target/debug/deps/libmemchr-c092099d2bc96da1.rlib --extern quickcheck=/home/user/src/memchr/target/debug/deps/libquickcheck-56d72d8fa9aa0003.rlib -C embed-bitcode=no --cfg 'feature="alloc"' --cfg 'feature="default"' --cfg 'feature="std"' --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values("alloc", "core", "default", "libc", "logging", "rustc-dep-of-std", "std", "use_std"))' --error-format human` (never executed)

Caused by:
  No such file or directory (os error 2)

The doctests cannot run at the moment, because I don't have rustdoc installed on the test machine, but I don't expect any big surprises there.

@BurntSushi BurntSushi merged commit ec25b80 into BurntSushi:master Sep 25, 2025
17 checks passed
@neuschaefer
Copy link
Contributor Author

Thanks!

@BurntSushi
Copy link
Owner

Thank you! That's good enough for me to get this merged and release.

@neuschaefer neuschaefer deleted the a64be branch September 25, 2025 13:05
@BurntSushi
Copy link
Owner

This PR is on crates.io in memchr 2.7.6.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants