Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package blake3 for openSUSE:Factory checked in at 2026-09-01 15:45:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/blake3 (Old) and /work/SRC/openSUSE:Factory/.blake3.new.1265 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "blake3" Tue Sep 1 15:45:57 2026 rev:7 rq:1374765 version:1.8.7 Changes: -------- --- /work/SRC/openSUSE:Factory/blake3/blake3.changes 2026-08-11 17:09:22.450315471 +0200 +++ /work/SRC/openSUSE:Factory/.blake3.new.1265/blake3.changes 2026-09-01 15:46:37.333123425 +0200 @@ -1,0 +2,6 @@ +Sun Aug 30 22:44:46 UTC 2026 - Eyad Issa <[email protected]> + +- Update to version 1.8.7: + * Remove the arrayref dependency. + +------------------------------------------------------------------- Old: ---- blake3-1.8.6.tar.gz New: ---- blake3-1.8.7.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ blake3.spec ++++++ --- /var/tmp/diff_new_pack.L6wwxg/_old 2026-09-01 15:46:38.465163003 +0200 +++ /var/tmp/diff_new_pack.L6wwxg/_new 2026-09-01 15:46:38.467163073 +0200 @@ -30,7 +30,7 @@ %bcond_with b3sum Name: blake3 -Version: 1.8.6 +Version: 1.8.7 Release: 0 Summary: A cryptographic hash function License: Apache-2.0 ++++++ blake3-1.8.6.tar.gz -> blake3-1.8.7.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/Cargo.toml new/BLAKE3-1.8.7/Cargo.toml --- old/BLAKE3-1.8.6/Cargo.toml 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/Cargo.toml 2026-08-20 10:50:34.000000000 +0200 @@ -1,6 +1,6 @@ [package] name = "blake3" -version = "1.8.6" +version = "1.8.7" authors = ["Jack O'Connor <[email protected]>", "Samuel Neves"] description = "the BLAKE3 hash function" repository = "https://github.com/BLAKE3-team/BLAKE3" @@ -112,7 +112,6 @@ features = ["mmap", "rayon", "serde", "zeroize"] [dependencies] -arrayref = "0.3.5" arrayvec = { version = "0.7.4", default-features = false } constant_time_eq = { version = "0.4.2", default-features = false } cfg-if = "1.0.0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/b3sum/Cargo.lock new/BLAKE3-1.8.7/b3sum/Cargo.lock --- old/BLAKE3-1.8.6/b3sum/Cargo.lock 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/b3sum/Cargo.lock 2026-08-20 10:50:34.000000000 +0200 @@ -59,12 +59,6 @@ checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] -name = "arrayref" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" - -[[package]] name = "arrayvec" version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -72,7 +66,7 @@ [[package]] name = "b3sum" -version = "1.8.6" +version = "1.8.7" dependencies = [ "anyhow", "blake3", @@ -92,9 +86,8 @@ [[package]] name = "blake3" -version = "1.8.6" +version = "1.8.7" dependencies = [ - "arrayref", "arrayvec", "cc", "cfg-if", @@ -106,9 +99,9 @@ [[package]] name = "cc" -version = "1.4.0" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5add81bb678e6cb321aff7fa0dc7689ad82b112dbc032cea19f91d6b8e3582b9" +checksum = "509591b7bcd67f4ef775afad7662703b4935daaa6ec0e5605cfb1090b32a2b6d" dependencies = [ "find-msvc-tools", "shlex", @@ -122,9 +115,9 @@ [[package]] name = "clap" -version = "4.6.5" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301b56658598e48f3648647ac6fc887be7e7108eddfa4e9b63fcf3ec58c0cadf" +checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" dependencies = [ "clap_builder", "clap_derive", @@ -132,9 +125,9 @@ [[package]] name = "clap_builder" -version = "4.6.5" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a65403d1a1bd28f7dc68eb8506e8874808ee5eecb59298de588e2e1407a078" +checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" dependencies = [ "anstream", "anstyle", @@ -237,9 +230,9 @@ [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890" [[package]] name = "getrandom" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/b3sum/Cargo.toml new/BLAKE3-1.8.7/b3sum/Cargo.toml --- old/BLAKE3-1.8.6/b3sum/Cargo.toml 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/b3sum/Cargo.toml 2026-08-20 10:50:34.000000000 +0200 @@ -1,6 +1,6 @@ [package] name = "b3sum" -version = "1.8.6" +version = "1.8.7" authors = ["Jack O'Connor <[email protected]>"] description = "a command line implementation of the BLAKE3 hash function" repository = "https://github.com/BLAKE3-team/BLAKE3" @@ -15,7 +15,7 @@ [dependencies] anyhow = "1.0.25" -blake3 = { version = "1.8", path = "..", features = ["mmap", "rayon"] } +blake3 = { version = "1.8.7", path = "..", features = ["mmap", "rayon"] } clap = { version = "4.0.8", features = ["derive", "wrap_help"] } hex = "0.4.0" rayon-core = "1.12.1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/benches/bench.rs new/BLAKE3-1.8.7/benches/bench.rs --- old/BLAKE3-1.8.6/benches/bench.rs 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/benches/bench.rs 2026-08-20 10:50:34.000000000 +0200 @@ -2,7 +2,6 @@ extern crate test; -use arrayref::array_ref; use arrayvec::ArrayVec; use blake3::OUT_LEN; use blake3::platform::{MAX_SIMD_DEGREE, Platform}; @@ -52,7 +51,7 @@ fn bench_single_compression_fn(b: &mut Bencher, platform: Platform) { let mut state = [1u32; 8]; let mut r = RandomInput::new(b, 64); - let input = array_ref!(r.get(), 0, 64); + let input = (&r.get()[..64]).try_into().unwrap(); b.iter(|| platform.compress_in_place(&mut state, input, 64 as u8, 0, 0)); } @@ -95,7 +94,7 @@ let input_arrays: ArrayVec<&[u8; CHUNK_LEN], MAX_SIMD_DEGREE> = inputs .iter_mut() .take(degree) - .map(|i| array_ref!(i.get(), 0, CHUNK_LEN)) + .map(|i| (&i.get()[..CHUNK_LEN]).try_into().unwrap()) .collect(); let mut out = [0; MAX_SIMD_DEGREE * OUT_LEN]; platform.hash_many( @@ -166,7 +165,7 @@ let input_arrays: ArrayVec<&[u8; BLOCK_LEN], MAX_SIMD_DEGREE> = inputs .iter_mut() .take(degree) - .map(|i| array_ref!(i.get(), 0, BLOCK_LEN)) + .map(|i| (&i.get()[..BLOCK_LEN]).try_into().unwrap()) .collect(); let mut out = [0; MAX_SIMD_DEGREE * OUT_LEN]; platform.hash_many( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/c/CMakeLists.txt new/BLAKE3-1.8.7/c/CMakeLists.txt --- old/BLAKE3-1.8.6/c/CMakeLists.txt 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/c/CMakeLists.txt 2026-08-20 10:50:34.000000000 +0200 @@ -10,7 +10,7 @@ endif() project(libblake3 - VERSION 1.8.6 + VERSION 1.8.7 DESCRIPTION "BLAKE3 C implementation" LANGUAGES C CXX ASM ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/c/blake3.h new/BLAKE3-1.8.7/c/blake3.h --- old/BLAKE3-1.8.6/c/blake3.h 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/c/blake3.h 2026-08-20 10:50:34.000000000 +0200 @@ -30,7 +30,7 @@ extern "C" { #endif -#define BLAKE3_VERSION_STRING "1.8.6" +#define BLAKE3_VERSION_STRING "1.8.7" #define BLAKE3_KEY_LEN 32 #define BLAKE3_OUT_LEN 32 #define BLAKE3_BLOCK_LEN 64 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/c/blake3_c_rust_bindings/Cargo.toml new/BLAKE3-1.8.7/c/blake3_c_rust_bindings/Cargo.toml --- old/BLAKE3-1.8.6/c/blake3_c_rust_bindings/Cargo.toml 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/c/blake3_c_rust_bindings/Cargo.toml 2026-08-20 10:50:34.000000000 +0200 @@ -20,7 +20,6 @@ tbb = [] [dev-dependencies] -arrayref = "0.3.5" arrayvec = { version = "0.7.0", default-features = false } page_size = "0.6.0" rand = "0.10.0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/c/blake3_c_rust_bindings/benches/bench.rs new/BLAKE3-1.8.7/c/blake3_c_rust_bindings/benches/bench.rs --- old/BLAKE3-1.8.6/c/blake3_c_rust_bindings/benches/bench.rs 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/c/blake3_c_rust_bindings/benches/bench.rs 2026-08-20 10:50:34.000000000 +0200 @@ -2,7 +2,6 @@ extern crate test; -use arrayref::array_ref; use arrayvec::ArrayVec; use rand::prelude::*; use test::Bencher; @@ -57,7 +56,7 @@ fn bench_single_compression_fn(b: &mut Bencher, f: CompressInPlaceFn) { let mut state = [1u32; 8]; let mut r = RandomInput::new(b, 64); - let input = array_ref!(r.get(), 0, 64); + let input: &[u8; 64] = (&r.get()[..64]).try_into().unwrap(); b.iter(|| unsafe { f(state.as_mut_ptr(), input.as_ptr(), 64, 0, 0) }); } @@ -126,7 +125,7 @@ let input_arrays: ArrayVec<&[u8; CHUNK_LEN], MAX_SIMD_DEGREE> = inputs .iter_mut() .take(degree) - .map(|i| array_ref!(i.get(), 0, CHUNK_LEN)) + .map(|i| (&i.get()[..CHUNK_LEN]).try_into().unwrap()) .collect(); let mut out = [0; MAX_SIMD_DEGREE * OUT_LEN]; unsafe { @@ -218,7 +217,7 @@ let input_arrays: ArrayVec<&[u8; BLOCK_LEN], MAX_SIMD_DEGREE> = inputs .iter_mut() .take(degree) - .map(|i| array_ref!(i.get(), 0, BLOCK_LEN)) + .map(|i| (&i.get()[..BLOCK_LEN]).try_into().unwrap()) .collect(); let mut out = [0; MAX_SIMD_DEGREE * OUT_LEN]; unsafe { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/c/blake3_c_rust_bindings/src/test.rs new/BLAKE3-1.8.7/c/blake3_c_rust_bindings/src/test.rs --- old/BLAKE3-1.8.6/c/blake3_c_rust_bindings/src/test.rs 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/c/blake3_c_rust_bindings/src/test.rs 2026-08-20 10:50:34.000000000 +0200 @@ -2,9 +2,7 @@ // could share more of it in the future. use crate::{BLOCK_LEN, CHUNK_LEN, OUT_LEN}; -use arrayref::{array_mut_ref, array_ref}; use arrayvec::ArrayVec; -use core::usize; use rand::prelude::*; const CHUNK_START: u8 = 1 << 0; @@ -75,14 +73,14 @@ #[inline(always)] fn le_bytes_from_words_32(words: &[u32; 8]) -> [u8; 32] { let mut out = [0; 32]; - *array_mut_ref!(out, 0 * 4, 4) = words[0].to_le_bytes(); - *array_mut_ref!(out, 1 * 4, 4) = words[1].to_le_bytes(); - *array_mut_ref!(out, 2 * 4, 4) = words[2].to_le_bytes(); - *array_mut_ref!(out, 3 * 4, 4) = words[3].to_le_bytes(); - *array_mut_ref!(out, 4 * 4, 4) = words[4].to_le_bytes(); - *array_mut_ref!(out, 5 * 4, 4) = words[5].to_le_bytes(); - *array_mut_ref!(out, 6 * 4, 4) = words[6].to_le_bytes(); - *array_mut_ref!(out, 7 * 4, 4) = words[7].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[0 * 4..][..4]).unwrap() = words[0].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[1 * 4..][..4]).unwrap() = words[1].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[2 * 4..][..4]).unwrap() = words[2].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[3 * 4..][..4]).unwrap() = words[3].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[4 * 4..][..4]).unwrap() = words[4].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[5 * 4..][..4]).unwrap() = words[5].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[6 * 4..][..4]).unwrap() = words[6].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[7 * 4..][..4]).unwrap() = words[7].to_le_bytes(); out } @@ -224,7 +222,11 @@ // First hash chunks. let mut chunks = ArrayVec::<&[u8; CHUNK_LEN], NUM_INPUTS>::new(); for i in 0..NUM_INPUTS { - chunks.push(array_ref!(input_buf, i * CHUNK_LEN, CHUNK_LEN)); + chunks.push( + (&input_buf[i * CHUNK_LEN..][..CHUNK_LEN]) + .try_into() + .unwrap(), + ); } let mut portable_chunks_out = [0; NUM_INPUTS * OUT_LEN]; unsafe { @@ -268,7 +270,11 @@ // Then hash parents. let mut parents = ArrayVec::<&[u8; 2 * OUT_LEN], NUM_INPUTS>::new(); for i in 0..NUM_INPUTS { - parents.push(array_ref!(input_buf, i * 2 * OUT_LEN, 2 * OUT_LEN)); + parents.push( + (&input_buf[i * 2 * OUT_LEN..][..2 * OUT_LEN]) + .try_into() + .unwrap(), + ); } let mut portable_parents_out = [0; NUM_INPUTS * OUT_LEN]; unsafe { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/src/lib.rs new/BLAKE3-1.8.7/src/lib.rs --- old/BLAKE3-1.8.6/src/lib.rs 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/src/lib.rs 2026-08-20 10:50:34.000000000 +0200 @@ -139,7 +139,6 @@ mod io; mod join; -use arrayref::{array_mut_ref, array_ref}; use arrayvec::{ArrayString, ArrayVec}; use core::cmp; use core::fmt; @@ -566,7 +565,7 @@ let block_flags = self.flags | self.start_flag(); // borrowck self.platform.compress_in_place( &mut self.cv, - array_ref!(input, 0, BLOCK_LEN), + (&input[..BLOCK_LEN]).try_into().unwrap(), BLOCK_LEN as u8, self.chunk_counter, block_flags, @@ -686,7 +685,7 @@ let mut chunks_exact = input.chunks_exact(CHUNK_LEN); let mut chunks_array = ArrayVec::<&[u8; CHUNK_LEN], MAX_SIMD_DEGREE>::new(); for chunk in &mut chunks_exact { - chunks_array.push(array_ref!(chunk, 0, CHUNK_LEN)); + chunks_array.push(chunk.try_into().unwrap()); } platform.hash_many( &chunks_array, @@ -706,7 +705,7 @@ let counter = chunk_counter + chunks_so_far as u64; let mut chunk_state = ChunkState::new(key, counter, flags, platform); chunk_state.update(chunks_exact.remainder()); - *array_mut_ref!(out, chunks_so_far * OUT_LEN, OUT_LEN) = + *<&mut [u8; OUT_LEN]>::try_from(&mut out[chunks_so_far * OUT_LEN..][..OUT_LEN]).unwrap() = chunk_state.output().chaining_value(); chunks_so_far + 1 } else { @@ -736,7 +735,7 @@ // the requirements of compress_subtree_wide(). let mut parents_array = ArrayVec::<&[u8; BLOCK_LEN], MAX_SIMD_DEGREE_OR_2>::new(); for parent in &mut parents_exact { - parents_array.push(array_ref!(parent, 0, BLOCK_LEN)); + parents_array.push(parent.try_into().unwrap()); } platform.hash_many( &parents_array, @@ -872,7 +871,7 @@ num_cvs = compress_parents_parallel(cv_slice, key, flags, platform, &mut out_array); cv_array[..num_cvs * OUT_LEN].copy_from_slice(&out_array[..num_cvs * OUT_LEN]); } - *array_ref!(cv_array, 0, 2 * OUT_LEN) + cv_array[..2 * OUT_LEN].try_into().unwrap() } // Hash a complete input all at once. Unlike compress_subtree_wide() and @@ -1309,8 +1308,8 @@ self.chunk_state.flags, self.chunk_state.platform, ); - let left_cv = array_ref!(cv_pair, 0, 32); - let right_cv = array_ref!(cv_pair, 32, 32); + let left_cv = (&cv_pair[..32]).try_into().unwrap(); + let right_cv = (&cv_pair[32..64]).try_into().unwrap(); // Push the two CVs we received into the CV stack in order. Because // the stack merges lazily, this guarantees we aren't merging the // root. @@ -1805,7 +1804,7 @@ #[cfg(feature = "std")] impl std::io::Seek for OutputReader { fn seek(&mut self, pos: std::io::SeekFrom) -> std::io::Result<u64> { - let max_position = u64::max_value() as i128; + let max_position = u64::MAX as i128; let target_position: i128 = match pos { std::io::SeekFrom::Start(x) => x as i128, std::io::SeekFrom::Current(x) => self.position() as i128 + x as i128, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/src/platform.rs new/BLAKE3-1.8.7/src/platform.rs --- old/BLAKE3-1.8.6/src/platform.rs 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/src/platform.rs 2026-08-20 10:50:34.000000000 +0200 @@ -1,5 +1,4 @@ use crate::{BLOCK_LEN, CVWords, IncrementCounter, portable}; -use arrayref::{array_mut_ref, array_ref}; cfg_if::cfg_if! { if #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] { @@ -408,6 +407,7 @@ #[cfg(blake3_avx512_ffi)] #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] #[inline(always)] +#[allow(deprecated)] // TODO: revert this after https://github.com/RustCrypto/utils/pull/1515 is released pub fn avx512_detected() -> bool { if cfg!(miri) { return false; @@ -424,6 +424,7 @@ #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] #[inline(always)] +#[allow(deprecated)] // TODO: revert this after https://github.com/RustCrypto/utils/pull/1515 is released pub fn avx2_detected() -> bool { if cfg!(miri) { return false; @@ -440,6 +441,7 @@ #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] #[inline(always)] +#[allow(deprecated)] // TODO: revert this after https://github.com/RustCrypto/utils/pull/1515 is released pub fn sse41_detected() -> bool { if cfg!(miri) { return false; @@ -456,6 +458,7 @@ #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] #[inline(always)] +#[allow(deprecated)] // TODO: revert this after https://github.com/RustCrypto/utils/pull/1515 is released pub fn sse2_detected() -> bool { if cfg!(miri) { return false; @@ -473,71 +476,71 @@ #[inline(always)] pub fn words_from_le_bytes_32(bytes: &[u8; 32]) -> [u32; 8] { let mut out = [0; 8]; - out[0] = u32::from_le_bytes(*array_ref!(bytes, 0 * 4, 4)); - out[1] = u32::from_le_bytes(*array_ref!(bytes, 1 * 4, 4)); - out[2] = u32::from_le_bytes(*array_ref!(bytes, 2 * 4, 4)); - out[3] = u32::from_le_bytes(*array_ref!(bytes, 3 * 4, 4)); - out[4] = u32::from_le_bytes(*array_ref!(bytes, 4 * 4, 4)); - out[5] = u32::from_le_bytes(*array_ref!(bytes, 5 * 4, 4)); - out[6] = u32::from_le_bytes(*array_ref!(bytes, 6 * 4, 4)); - out[7] = u32::from_le_bytes(*array_ref!(bytes, 7 * 4, 4)); + out[0] = u32::from_le_bytes(bytes[0 * 4..][..4].try_into().unwrap()); + out[1] = u32::from_le_bytes(bytes[1 * 4..][..4].try_into().unwrap()); + out[2] = u32::from_le_bytes(bytes[2 * 4..][..4].try_into().unwrap()); + out[3] = u32::from_le_bytes(bytes[3 * 4..][..4].try_into().unwrap()); + out[4] = u32::from_le_bytes(bytes[4 * 4..][..4].try_into().unwrap()); + out[5] = u32::from_le_bytes(bytes[5 * 4..][..4].try_into().unwrap()); + out[6] = u32::from_le_bytes(bytes[6 * 4..][..4].try_into().unwrap()); + out[7] = u32::from_le_bytes(bytes[7 * 4..][..4].try_into().unwrap()); out } #[inline(always)] pub fn words_from_le_bytes_64(bytes: &[u8; 64]) -> [u32; 16] { let mut out = [0; 16]; - out[0] = u32::from_le_bytes(*array_ref!(bytes, 0 * 4, 4)); - out[1] = u32::from_le_bytes(*array_ref!(bytes, 1 * 4, 4)); - out[2] = u32::from_le_bytes(*array_ref!(bytes, 2 * 4, 4)); - out[3] = u32::from_le_bytes(*array_ref!(bytes, 3 * 4, 4)); - out[4] = u32::from_le_bytes(*array_ref!(bytes, 4 * 4, 4)); - out[5] = u32::from_le_bytes(*array_ref!(bytes, 5 * 4, 4)); - out[6] = u32::from_le_bytes(*array_ref!(bytes, 6 * 4, 4)); - out[7] = u32::from_le_bytes(*array_ref!(bytes, 7 * 4, 4)); - out[8] = u32::from_le_bytes(*array_ref!(bytes, 8 * 4, 4)); - out[9] = u32::from_le_bytes(*array_ref!(bytes, 9 * 4, 4)); - out[10] = u32::from_le_bytes(*array_ref!(bytes, 10 * 4, 4)); - out[11] = u32::from_le_bytes(*array_ref!(bytes, 11 * 4, 4)); - out[12] = u32::from_le_bytes(*array_ref!(bytes, 12 * 4, 4)); - out[13] = u32::from_le_bytes(*array_ref!(bytes, 13 * 4, 4)); - out[14] = u32::from_le_bytes(*array_ref!(bytes, 14 * 4, 4)); - out[15] = u32::from_le_bytes(*array_ref!(bytes, 15 * 4, 4)); + out[0] = u32::from_le_bytes(bytes[0 * 4..][..4].try_into().unwrap()); + out[1] = u32::from_le_bytes(bytes[1 * 4..][..4].try_into().unwrap()); + out[2] = u32::from_le_bytes(bytes[2 * 4..][..4].try_into().unwrap()); + out[3] = u32::from_le_bytes(bytes[3 * 4..][..4].try_into().unwrap()); + out[4] = u32::from_le_bytes(bytes[4 * 4..][..4].try_into().unwrap()); + out[5] = u32::from_le_bytes(bytes[5 * 4..][..4].try_into().unwrap()); + out[6] = u32::from_le_bytes(bytes[6 * 4..][..4].try_into().unwrap()); + out[7] = u32::from_le_bytes(bytes[7 * 4..][..4].try_into().unwrap()); + out[8] = u32::from_le_bytes(bytes[8 * 4..][..4].try_into().unwrap()); + out[9] = u32::from_le_bytes(bytes[9 * 4..][..4].try_into().unwrap()); + out[10] = u32::from_le_bytes(bytes[10 * 4..][..4].try_into().unwrap()); + out[11] = u32::from_le_bytes(bytes[11 * 4..][..4].try_into().unwrap()); + out[12] = u32::from_le_bytes(bytes[12 * 4..][..4].try_into().unwrap()); + out[13] = u32::from_le_bytes(bytes[13 * 4..][..4].try_into().unwrap()); + out[14] = u32::from_le_bytes(bytes[14 * 4..][..4].try_into().unwrap()); + out[15] = u32::from_le_bytes(bytes[15 * 4..][..4].try_into().unwrap()); out } #[inline(always)] pub fn le_bytes_from_words_32(words: &[u32; 8]) -> [u8; 32] { let mut out = [0; 32]; - *array_mut_ref!(out, 0 * 4, 4) = words[0].to_le_bytes(); - *array_mut_ref!(out, 1 * 4, 4) = words[1].to_le_bytes(); - *array_mut_ref!(out, 2 * 4, 4) = words[2].to_le_bytes(); - *array_mut_ref!(out, 3 * 4, 4) = words[3].to_le_bytes(); - *array_mut_ref!(out, 4 * 4, 4) = words[4].to_le_bytes(); - *array_mut_ref!(out, 5 * 4, 4) = words[5].to_le_bytes(); - *array_mut_ref!(out, 6 * 4, 4) = words[6].to_le_bytes(); - *array_mut_ref!(out, 7 * 4, 4) = words[7].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[0 * 4..][..4]).unwrap() = words[0].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[1 * 4..][..4]).unwrap() = words[1].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[2 * 4..][..4]).unwrap() = words[2].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[3 * 4..][..4]).unwrap() = words[3].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[4 * 4..][..4]).unwrap() = words[4].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[5 * 4..][..4]).unwrap() = words[5].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[6 * 4..][..4]).unwrap() = words[6].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[7 * 4..][..4]).unwrap() = words[7].to_le_bytes(); out } #[inline(always)] pub fn le_bytes_from_words_64(words: &[u32; 16]) -> [u8; 64] { let mut out = [0; 64]; - *array_mut_ref!(out, 0 * 4, 4) = words[0].to_le_bytes(); - *array_mut_ref!(out, 1 * 4, 4) = words[1].to_le_bytes(); - *array_mut_ref!(out, 2 * 4, 4) = words[2].to_le_bytes(); - *array_mut_ref!(out, 3 * 4, 4) = words[3].to_le_bytes(); - *array_mut_ref!(out, 4 * 4, 4) = words[4].to_le_bytes(); - *array_mut_ref!(out, 5 * 4, 4) = words[5].to_le_bytes(); - *array_mut_ref!(out, 6 * 4, 4) = words[6].to_le_bytes(); - *array_mut_ref!(out, 7 * 4, 4) = words[7].to_le_bytes(); - *array_mut_ref!(out, 8 * 4, 4) = words[8].to_le_bytes(); - *array_mut_ref!(out, 9 * 4, 4) = words[9].to_le_bytes(); - *array_mut_ref!(out, 10 * 4, 4) = words[10].to_le_bytes(); - *array_mut_ref!(out, 11 * 4, 4) = words[11].to_le_bytes(); - *array_mut_ref!(out, 12 * 4, 4) = words[12].to_le_bytes(); - *array_mut_ref!(out, 13 * 4, 4) = words[13].to_le_bytes(); - *array_mut_ref!(out, 14 * 4, 4) = words[14].to_le_bytes(); - *array_mut_ref!(out, 15 * 4, 4) = words[15].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[0 * 4..][..4]).unwrap() = words[0].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[1 * 4..][..4]).unwrap() = words[1].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[2 * 4..][..4]).unwrap() = words[2].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[3 * 4..][..4]).unwrap() = words[3].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[4 * 4..][..4]).unwrap() = words[4].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[5 * 4..][..4]).unwrap() = words[5].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[6 * 4..][..4]).unwrap() = words[6].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[7 * 4..][..4]).unwrap() = words[7].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[8 * 4..][..4]).unwrap() = words[8].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[9 * 4..][..4]).unwrap() = words[9].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[10 * 4..][..4]).unwrap() = words[10].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[11 * 4..][..4]).unwrap() = words[11].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[12 * 4..][..4]).unwrap() = words[12].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[13 * 4..][..4]).unwrap() = words[13].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[14 * 4..][..4]).unwrap() = words[14].to_le_bytes(); + *<&mut [u8; 4]>::try_from(&mut out[15 * 4..][..4]).unwrap() = words[15].to_le_bytes(); out } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/src/portable.rs new/BLAKE3-1.8.7/src/portable.rs --- old/BLAKE3-1.8.6/src/portable.rs 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/src/portable.rs 2026-08-20 10:50:34.000000000 +0200 @@ -2,7 +2,6 @@ BLOCK_LEN, CVBytes, CVWords, IV, IncrementCounter, MSG_SCHEDULE, OUT_LEN, counter_high, counter_low, }; -use arrayref::{array_mut_ref, array_ref}; #[inline(always)] fn g(state: &mut [u32; 16], a: usize, b: usize, c: usize, d: usize, x: u32, y: u32) { @@ -139,7 +138,7 @@ } compress_in_place( &mut cv, - array_ref!(slice, 0, BLOCK_LEN), + (&slice[..BLOCK_LEN]).try_into().unwrap(), BLOCK_LEN as u8, counter, block_flags, @@ -169,7 +168,7 @@ flags, flags_start, flags_end, - array_mut_ref!(output, 0, OUT_LEN), + (&mut output[..OUT_LEN]).try_into().unwrap(), ); if increment_counter.yes() { counter += 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/src/rust_avx2.rs new/BLAKE3-1.8.7/src/rust_avx2.rs --- old/BLAKE3-1.8.6/src/rust_avx2.rs 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/src/rust_avx2.rs 2026-08-20 10:50:34.000000000 +0200 @@ -6,7 +6,6 @@ use crate::{ BLOCK_LEN, CVWords, IV, IncrementCounter, MSG_SCHEDULE, OUT_LEN, counter_high, counter_low, }; -use arrayref::{array_mut_ref, mut_array_refs}; pub const DEGREE: usize = 8; @@ -276,9 +275,9 @@ _MM_HINT_T0, ); } - let squares = mut_array_refs!(&mut vecs, DEGREE, DEGREE); - transpose_vecs(squares.0); - transpose_vecs(squares.1); + let (square0, square1) = vecs.split_at_mut(DEGREE); + transpose_vecs(square0.try_into().unwrap()); + transpose_vecs(square1.try_into().unwrap()); vecs } } @@ -427,7 +426,7 @@ flags, flags_start, flags_end, - array_mut_ref!(out, 0, DEGREE * OUT_LEN), + (&mut out[..DEGREE * OUT_LEN]).try_into().unwrap(), ); } if increment_counter.yes() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/src/rust_sse2.rs new/BLAKE3-1.8.7/src/rust_sse2.rs --- old/BLAKE3-1.8.6/src/rust_sse2.rs 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/src/rust_sse2.rs 2026-08-20 10:50:34.000000000 +0200 @@ -7,7 +7,6 @@ BLOCK_LEN, CVBytes, CVWords, IV, IncrementCounter, MSG_SCHEDULE, OUT_LEN, counter_high, counter_low, }; -use arrayref::{array_mut_ref, array_ref, mut_array_refs}; pub const DEGREE: usize = 4; @@ -548,11 +547,13 @@ _MM_HINT_T0, ); } - let squares = mut_array_refs!(&mut vecs, DEGREE, DEGREE, DEGREE, DEGREE); - transpose_vecs(squares.0); - transpose_vecs(squares.1); - transpose_vecs(squares.2); - transpose_vecs(squares.3); + let (square0, rest) = vecs.split_at_mut(DEGREE); + let (square1, rest) = rest.split_at_mut(DEGREE); + let (square2, square3) = rest.split_at_mut(DEGREE); + transpose_vecs(square0.try_into().unwrap()); + transpose_vecs(square1.try_into().unwrap()); + transpose_vecs(square2.try_into().unwrap()); + transpose_vecs(square3.try_into().unwrap()); vecs } } @@ -653,9 +654,9 @@ block_flags = flags; } - let squares = mut_array_refs!(&mut h_vecs, DEGREE, DEGREE); - transpose_vecs(squares.0); - transpose_vecs(squares.1); + let (square0, square1) = h_vecs.split_at_mut(DEGREE); + transpose_vecs(square0.try_into().unwrap()); + transpose_vecs(square1.try_into().unwrap()); // The first four vecs now contain the first half of each output, and the // second four vecs contain the second half of each output. storeu(h_vecs[0], out.as_mut_ptr().add(0 * 4 * DEGREE)); @@ -690,7 +691,7 @@ unsafe { compress_in_place( &mut cv, - array_ref!(slice, 0, BLOCK_LEN), + (&slice[..BLOCK_LEN]).try_into().unwrap(), BLOCK_LEN as u8, counter, block_flags, @@ -730,7 +731,7 @@ flags, flags_start, flags_end, - array_mut_ref!(out, 0, DEGREE * OUT_LEN), + (&mut out[..DEGREE * OUT_LEN]).try_into().unwrap(), ); } if increment_counter.yes() { @@ -748,7 +749,7 @@ flags, flags_start, flags_end, - array_mut_ref!(output, 0, OUT_LEN), + (&mut output[..OUT_LEN]).try_into().unwrap(), ); } if increment_counter.yes() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/src/rust_sse41.rs new/BLAKE3-1.8.7/src/rust_sse41.rs --- old/BLAKE3-1.8.6/src/rust_sse41.rs 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/src/rust_sse41.rs 2026-08-20 10:50:34.000000000 +0200 @@ -7,7 +7,6 @@ BLOCK_LEN, CVBytes, CVWords, IV, IncrementCounter, MSG_SCHEDULE, OUT_LEN, counter_high, counter_low, }; -use arrayref::{array_mut_ref, array_ref, mut_array_refs}; pub const DEGREE: usize = 4; @@ -537,11 +536,13 @@ _MM_HINT_T0, ); } - let squares = mut_array_refs!(&mut vecs, DEGREE, DEGREE, DEGREE, DEGREE); - transpose_vecs(squares.0); - transpose_vecs(squares.1); - transpose_vecs(squares.2); - transpose_vecs(squares.3); + let (square0, rest) = vecs.split_at_mut(DEGREE); + let (square1, rest) = rest.split_at_mut(DEGREE); + let (square2, square3) = rest.split_at_mut(DEGREE); + transpose_vecs(square0.try_into().unwrap()); + transpose_vecs(square1.try_into().unwrap()); + transpose_vecs(square2.try_into().unwrap()); + transpose_vecs(square3.try_into().unwrap()); vecs } } @@ -642,9 +643,9 @@ block_flags = flags; } - let squares = mut_array_refs!(&mut h_vecs, DEGREE, DEGREE); - transpose_vecs(squares.0); - transpose_vecs(squares.1); + let (square0, square1) = h_vecs.split_at_mut(DEGREE); + transpose_vecs(square0.try_into().unwrap()); + transpose_vecs(square1.try_into().unwrap()); // The first four vecs now contain the first half of each output, and the // second four vecs contain the second half of each output. storeu(h_vecs[0], out.as_mut_ptr().add(0 * 4 * DEGREE)); @@ -679,7 +680,7 @@ unsafe { compress_in_place( &mut cv, - array_ref!(slice, 0, BLOCK_LEN), + (&slice[..BLOCK_LEN]).try_into().unwrap(), BLOCK_LEN as u8, counter, block_flags, @@ -719,7 +720,7 @@ flags, flags_start, flags_end, - array_mut_ref!(out, 0, DEGREE * OUT_LEN), + (&mut out[..DEGREE * OUT_LEN]).try_into().unwrap(), ); } if increment_counter.yes() { @@ -737,7 +738,7 @@ flags, flags_start, flags_end, - array_mut_ref!(output, 0, OUT_LEN), + (&mut output[..OUT_LEN]).try_into().unwrap(), ); } if increment_counter.yes() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/src/test.rs new/BLAKE3-1.8.7/src/test.rs --- old/BLAKE3-1.8.6/src/test.rs 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/src/test.rs 2026-08-20 10:50:34.000000000 +0200 @@ -1,7 +1,5 @@ use crate::{BLOCK_LEN, CHUNK_LEN, CVBytes, CVWords, IncrementCounter, OUT_LEN}; -use arrayref::array_ref; use arrayvec::ArrayVec; -use core::usize; use rand::prelude::*; // Interesting input lengths to run tests on. @@ -133,7 +131,11 @@ // First hash chunks. let mut chunks = ArrayVec::<&[u8; CHUNK_LEN], NUM_INPUTS>::new(); for i in 0..NUM_INPUTS { - chunks.push(array_ref!(input_buf, i * CHUNK_LEN, CHUNK_LEN)); + chunks.push( + (&input_buf[i * CHUNK_LEN..][..CHUNK_LEN]) + .try_into() + .unwrap(), + ); } let mut portable_chunks_out = [0; NUM_INPUTS * OUT_LEN]; crate::portable::hash_many( @@ -172,7 +174,11 @@ // Then hash parents. let mut parents = ArrayVec::<&[u8; 2 * OUT_LEN], NUM_INPUTS>::new(); for i in 0..NUM_INPUTS { - parents.push(array_ref!(input_buf, i * 2 * OUT_LEN, 2 * OUT_LEN)); + parents.push( + (&input_buf[i * 2 * OUT_LEN..][..2 * OUT_LEN]) + .try_into() + .unwrap(), + ); } let mut portable_parents_out = [0; NUM_INPUTS * OUT_LEN]; crate::portable::hash_many( @@ -350,18 +356,27 @@ // all at once let test_out = crate::hash(input); - assert_eq!(test_out, *array_ref!(expected_out, 0, 32)); + assert_eq!( + test_out, + *<&[u8; 32]>::try_from(&expected_out[..32]).unwrap() + ); // incremental let mut hasher = crate::Hasher::new(); hasher.update(input); - assert_eq!(hasher.finalize(), *array_ref!(expected_out, 0, 32)); + assert_eq!( + hasher.finalize(), + *<&[u8; 32]>::try_from(&expected_out[..32]).unwrap() + ); assert_eq!(hasher.finalize(), test_out); // incremental (rayon) #[cfg(feature = "rayon")] { let mut hasher = crate::Hasher::new(); hasher.update_rayon(input); - assert_eq!(hasher.finalize(), *array_ref!(expected_out, 0, 32)); + assert_eq!( + hasher.finalize(), + *<&[u8; 32]>::try_from(&expected_out[..32]).unwrap() + ); assert_eq!(hasher.finalize(), test_out); } // xof @@ -379,18 +394,27 @@ // all at once let test_out = crate::keyed_hash(&TEST_KEY, input); - assert_eq!(test_out, *array_ref!(expected_out, 0, 32)); + assert_eq!( + test_out, + *<&[u8; 32]>::try_from(&expected_out[..32]).unwrap() + ); // incremental let mut hasher = crate::Hasher::new_keyed(&TEST_KEY); hasher.update(input); - assert_eq!(hasher.finalize(), *array_ref!(expected_out, 0, 32)); + assert_eq!( + hasher.finalize(), + *<&[u8; 32]>::try_from(&expected_out[..32]).unwrap() + ); assert_eq!(hasher.finalize(), test_out); // incremental (rayon) #[cfg(feature = "rayon")] { let mut hasher = crate::Hasher::new_keyed(&TEST_KEY); hasher.update_rayon(input); - assert_eq!(hasher.finalize(), *array_ref!(expected_out, 0, 32)); + assert_eq!( + hasher.finalize(), + *<&[u8; 32]>::try_from(&expected_out[..32]).unwrap() + ); assert_eq!(hasher.finalize(), test_out); } // xof @@ -413,15 +437,27 @@ // incremental let mut hasher = crate::Hasher::new_derive_key(context); hasher.update(input); - assert_eq!(hasher.finalize(), *array_ref!(expected_out, 0, 32)); - assert_eq!(hasher.finalize(), *array_ref!(test_out, 0, 32)); + assert_eq!( + hasher.finalize(), + *<&[u8; 32]>::try_from(&expected_out[..32]).unwrap() + ); + assert_eq!( + hasher.finalize(), + *<&[u8; 32]>::try_from(&test_out[..32]).unwrap() + ); // incremental (rayon) #[cfg(feature = "rayon")] { let mut hasher = crate::Hasher::new_derive_key(context); hasher.update_rayon(input); - assert_eq!(hasher.finalize(), *array_ref!(expected_out, 0, 32)); - assert_eq!(hasher.finalize(), *array_ref!(test_out, 0, 32)); + assert_eq!( + hasher.finalize(), + *<&[u8; 32]>::try_from(&expected_out[..32]).unwrap() + ); + assert_eq!( + hasher.finalize(), + *<&[u8; 32]>::try_from(&test_out[..32]).unwrap() + ); } // xof let mut extended = [0; OUT]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BLAKE3-1.8.6/src/wasm32_simd.rs new/BLAKE3-1.8.7/src/wasm32_simd.rs --- old/BLAKE3-1.8.6/src/wasm32_simd.rs 2026-08-06 00:26:34.000000000 +0200 +++ new/BLAKE3-1.8.7/src/wasm32_simd.rs 2026-08-20 10:50:34.000000000 +0200 @@ -20,7 +20,6 @@ BLOCK_LEN, CVBytes, CVWords, IV, IncrementCounter, MSG_SCHEDULE, OUT_LEN, counter_high, counter_low, }; -use arrayref::{array_mut_ref, array_ref, mut_array_refs}; pub const DEGREE: usize = 4; @@ -555,11 +554,13 @@ loadu(inputs[3].add(block_offset + 3 * 4 * DEGREE)), ] }; - let squares = mut_array_refs!(&mut vecs, DEGREE, DEGREE, DEGREE, DEGREE); - transpose_vecs(squares.0); - transpose_vecs(squares.1); - transpose_vecs(squares.2); - transpose_vecs(squares.3); + let (square0, rest) = vecs.split_at_mut(DEGREE); + let (square1, rest) = rest.split_at_mut(DEGREE); + let (square2, square3) = rest.split_at_mut(DEGREE); + transpose_vecs(square0.try_into().unwrap()); + transpose_vecs(square1.try_into().unwrap()); + transpose_vecs(square2.try_into().unwrap()); + transpose_vecs(square3.try_into().unwrap()); vecs } @@ -656,9 +657,9 @@ block_flags = flags; } - let squares = mut_array_refs!(&mut h_vecs, DEGREE, DEGREE); - transpose_vecs(squares.0); - transpose_vecs(squares.1); + let (square0, square1) = h_vecs.split_at_mut(DEGREE); + transpose_vecs(square0.try_into().unwrap()); + transpose_vecs(square1.try_into().unwrap()); // The first four vecs now contain the first half of each output, and the // second four vecs contain the second half of each output. unsafe { @@ -693,7 +694,7 @@ } compress_in_place( &mut cv, - array_ref!(slice, 0, BLOCK_LEN), + (&slice[..BLOCK_LEN]).try_into().unwrap(), BLOCK_LEN as u8, counter, block_flags, @@ -732,7 +733,7 @@ flags, flags_start, flags_end, - array_mut_ref!(out, 0, DEGREE * OUT_LEN), + (&mut out[..DEGREE * OUT_LEN]).try_into().unwrap(), ); } if increment_counter.yes() { @@ -750,7 +751,7 @@ flags, flags_start, flags_end, - array_mut_ref!(output, 0, OUT_LEN), + (&mut output[..OUT_LEN]).try_into().unwrap(), ); } if increment_counter.yes() { ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/blake3/vendor.tar.zst /work/SRC/openSUSE:Factory/.blake3.new.1265/vendor.tar.zst differ: char 7, line 1
