aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2025-03-30add the `hazmat` module and deprecate the undocumented `guts` moduleJack O'Connor
https://github.com/BLAKE3-team/BLAKE3/pull/458
2025-03-18mention the "wasm32_simd" Cargo feature in the crate docsJack O'Connor
2025-03-16Make some function safeIvan Boldyrev
Certain functions' unsafety comes from v128 loads and store. If argument types guarantee that these loads and stores are safe, function is declared safe, and internal unsafe blocks are commented.
2025-03-16Fix platform constantsIvan Boldyrev
2025-03-16Fix commentIvan Boldyrev
2025-03-16Remove unsafe from functions that do not need itIvan Boldyrev
Wasm SIMD API has certain function safe.
2025-03-16Misc textual improvementsIvan Boldyrev
2025-03-16Wasm32 SIMD implementationIvan Boldyrev
This code is based on rust_sse2.rs of the same distribution, and is subject to further improvements. Some comments are left intact even if their applicability is questioned. SIMD implementation is gated by `wasm32-simd` feature, portable version is used otherwise. Performance measurements with a primitive benchmark with ~16Kb of data: | M1 native | 11,610 ns | | M1 WASM SIMD | 13,355 ns | | M1 WASM | 22,037 ns | | x64 native | 6,713 ns | | x64 WASM SIMD | 11,985 ns | | x64 WASM | 25,978 ns | wasmtime v12.0.1 was used on both platforms. Closes #187.
2025-02-20revert `unsafe extern "C"` blocksJack O'Connor
This will be necessary when we eventually move to the 2024 edition, but for now it's an unnecessary MSRV bump.
2025-02-20add `unsafe` annotations needed for the 2024 editionJack O'Connor
2025-02-17Add `Hash::from_slice` to handle conversion from `&[u8]` bytesJosh Triplett
This is a convenience method, to avoid having to first call `<[u8; 32]>::try_from(slice)?`.
2025-02-06remove checks that memmap2 does internallyJack O'Connor
2025-02-03upgrade rand to v0.9Jack O'Connor
2024-08-27Remove Miri equality workaround functionAaron Feickert
2024-08-22put equivalent Hasher examples in the hash/keyed_hash/derive_key docsJack O'Connor
This was a good suggestion by @dhardy: https://github.com/rust-random/rand/issues/989#issuecomment-2303969094
2024-08-19test_compare_reference_impl_long_xofJack O'Connor
2024-08-18delete portable::xof_many and blake3_xof_many_portableJack O'Connor
2024-08-18make xof_many fall back to compress_xof instead of portable codeJack O'Connor
2024-08-18small cleanup in fill_one_blockJack O'Connor
2024-08-18debug_assert that xof_many is always called with whole blocksJack O'Connor
2024-08-18test that xof_many doesn't write more blocks than requestedJack O'Connor
2024-08-15mark blake3_xof_many_avx512 Unix-only in Rust and CJack O'Connor
2024-08-15test_fuzz_xofJack O'Connor
2024-08-15integrate xof_many with the Rust implementation and with Rust and C testsJack O'Connor
2024-07-17Manually implement `Zeroize`Gard Kylling
Removes dependence on proc-macros when enabling the zeroize feature.
2024-07-14Revert "serialize Hash with serde_bytes"Jack O'Connor
This mostly reverts commits 8416b1658c2690dc6351bdc7e0975b0d5f1a5282 and dd0afd640ad97b5ebcf887107162009a23ffdca0. Changing the serialization of Hash can only be backwards-compatible in self-describing formats like CBOR. In non-self-describing formats like bincode, the deserializer has to know in advance which serialization format was used. Fixes https://github.com/BLAKE3-team/BLAKE3/issues/414. Reopens https://github.com/BLAKE3-team/BLAKE3/issues/412.
2024-07-10update CBOR tests per @BurningEnlightenment's suggestionsJack O'Connor
https://github.com/BLAKE3-team/BLAKE3/issues/412#issuecomment-2220970998
2024-07-09serialize Hash with serde_bytesJack O'Connor
Closes #412.
2024-07-03chore: fix some commentswangcundashang
Signed-off-by: wangcundashang <[email protected]>
2024-07-03Switch to rayon-core for faster buildsilvanshade
2024-03-10test_miri_smoketestJack O'Connor
2024-03-09avoid using NamedTempFile under MiriJack O'Connor
2024-03-09avoid using constant_time_eq under MiriJack O'Connor
2024-03-09Support running inside miriRyo Onodera
2023-10-02allow(unreachable_code) in all the *_detected functionsJack O'Connor
Previously we only disabled these warnings for SSE2, which is assumed enabled on x86-64, but it looks like new nightly compilers are also assuming SSE4.1 on macOS. Disabling these warnings across all the detection functions accounts for that, and it also gets rid of some warnings that you'd see if you used RUSTFLAGS='-C target-cpu=native'.
2023-09-19add a test for the new serde featureJack O'Connor
2023-09-19Add serde support for Hash behind optional featureRalph Minderhoud
Added a new cargo feature `serde` that when enabled will derive `serde::Serialize` and `serde::Deserialize` for the `blake3::Hash` struct.
2023-09-19minor cleanup in Hasher docsJack O'Connor
2023-09-16make update_reader/mmap/mmap_rayon return selfJack O'Connor
This makes them consistent with how the existing update() and update_rayon() methods work, with the difference being that it's it's io::Result<&mut Self> instead of just &mut Self.
2023-09-16replace the new file module with inherent methods on HasherJack O'Connor
New methods: - update_reader - update_mmap - update_mmap_rayon These are more discoverable, more convenient, and safer. There are two problems I want to avoid by taking a `Path` instead of a `File`. First, exposing `Mmap` objects to the caller is fundamentally unsafe, and making `maybe_mmap_file` private avoids that issue. Second, taking a `File` raises questions about whether memory mapped reads should behave like regular file reads. (Should they respect the current seek position? Should they update the seek position?) Taking a `Path` from the caller and opening the `File` internally avoids these questions.
2023-09-16move file operations from b3sum to blake3Banyc
2023-09-16document the `zeroize` Cargo featureJack O'Connor
As part of this change, I don't think we need the `zeroize_crate` workaround anymore if we use the relateively new `dep:` syntax in Cargo.toml.
2023-07-16Add tests for ZeroizeElichai Turkel
2023-07-16Implement Zeroize on exported typesElichai Turkel
2023-06-27Fix typo exendable -> extendable1f604
2023-05-23Fix typosJoel Rosdahl
2023-05-01small doc tweakJack O'Connor
2023-05-01add `from_bytes` for conversions from `[u8; 32]`Eduardo Leegwater Simões
The function is `const`, so it is fundamentally different from the `From` trait implementation by allowing compile-time instantiation of a `Hash`.
2023-05-01make `Hash::as_bytes` constEduardo Leegwater Simões
2022-11-22test multiple initial counter values for hash_manyJack O'Connor
I'm adding the i32::MAX test case here because I personally screwed it up while I was working on https://github.com/BLAKE3-team/BLAKE3/issues/271. The correct implementation of the carry bit is the ANDNOT of old high bit (1) and the new high bit (0). Using XOR instead of ANDNOT gives the correct answer in the overflow case, but it also reports an incorrect "extra" overflow when the high bit goes from 0 to 1.