aboutsummaryrefslogtreecommitdiff
path: root/b3sum/README.md
AgeCommit message (Collapse)Author
2025-02-28use --tag docstring wording closer to md5sum'sJack O'Connor
2023-06-08version 1.4.01.4.0Jack O'Connor
Changes since 1.3.3: - The C implementation provides a `CMakeLists.txt` for callers who build with CMake. The CMake build is not yet stable, and callers should expect breaking changes in patch version updates. The "by hand" build will always continue to be supported and documented. - `b3sum` supports the `--seek` flag, to set the starting position in the output stream. - `b3sum --check` prints a summary of errors to stderr. - `Hash::as_bytes` is const. - `Hash` supports `from_bytes`, which is const.
2022-11-20grammar fix in b3sum help outputJack O'Connor
2022-11-20clean up b3sum help strings and increase max_term_width to 100Jack O'Connor
2022-10-03Split short summary from full help textShun Sakai
2022-10-03Bump clap to v4.0Shun Sakai
2022-09-14Rewrite CLI using Derive APIShun Sakai
2022-01-25version 1.3.11.3.1Jack O'Connor
Changes since 1.3.0: - The unstable `traits-preview` feature now includes an implementation of `crypto_common::BlockSizeUser`, AKA `digest::core_api::BlockSizeUser`. This allows `blake3::Hasher` to be used with `hmac::SimpleHmac`.
2022-01-08version 1.3.01.3.0Jack O'Connor
Changes since 1.2.0: - Added blake3_hasher_reset to the C API, for parity with the Rust API. - Updated digest to v0.10. This version merged the crypto-mac crate with digest, so the dependency on crypto-mac has been removed. These trait implementations are still gated behind the "traits-preview" feature. - Updated clap to v3.
2022-01-07update clap to v3Jack O'Connor
2021-11-05version 1.2.01.2.0Jack O'Connor
Changes since 1.1.0: - SECURITY FIX: Fixed an instance of undefined behavior in the Windows SSE2 assembly implementations, which affected both the Rust and C libraries in their default build configurations. See https://github.com/BLAKE3-team/BLAKE3/issues/206. The cause was a vector register that wasn't properly saved and restored. This bug has been present since SSE2 support was initially added in v0.3.7. The effects of this bug depend on surrounding code and compiler optimizations; see test_issue_206_windows_sse2 for an example of this bug causing incorrect hash output. Note that even when surrounding code is arranged to trigger this bug, the SSE2 implementation is normally only invoked on CPUs where SSE4.1 (introduced in 2007) isn't supported. One notable exception, however, is if the Rust library is built in `no_std` mode, with `default_features = false` or similar. In that case, runtime CPU feature detection is disabled, and since LLVM assumes that all x86-64 targets support SSE2, the SSE2 implementation will be invoked. For that reason, Rust callers who build `blake3` in `no_std` mode for x86-64 Windows targets are the most likely to trigger this bug. We found this bug in internal testing, and we aren't aware of any callers encountering it in practice. - Added the Hasher::count() method.
2021-10-21version 1.1.01.1.0Jack O'Connor
Changes since 1.0.0: - The NEON implementation is now enabled by default on AArch64 targets. Previously it was disabled without the "neon" Cargo feature in Rust or the "BLAKE3_USE_NEON=1" preprocessor flag in C. This is still the case on ARM targets other than AArch64, because of the lack of dynamic CPU feature detection on ARM. Contributed by @rsdy. - The previous change leads to some build incompatibilities, particularly in C. If you build the C implementation for AArch64 targets, you now need to include blake3_neon.c, or else you'll get a linker error like "undefined reference to `blake3_hash_many_neon'". If you don't want the NEON implementation, you need to explicitly set "BLAKE3_USE_NEON=0". On the Rust side, AArch64 targets now require the C toolchain by default. build.rs includes workarounds for missing or very old C compilers for x86, but it doesn't currently include such workarounds for AArch64. If we hear about build breaks related to this, we can add more workarounds as appropriate. - C-specific Git tags ("c-0.3.7" etc.) have been removed, and all the projects in this repo (Rust "blake3", Rust "b3sum", and the C implementation) will continue to be versioned in lockstep for the foreseeable future.
2021-07-27update the version number in the b3sum readmeJack O'Connor
2020-09-14use an absolute url for ↵Jack O'Connor
https://github.com/BLAKE3-team/BLAKE3/blob/master/b3sum/what_does_check_do.md
2020-09-14remove an outdated section of the b3sum readmeJack O'Connor
2020-07-29version 0.3.60.3.6Jack O'Connor
Changes since 0.3.5: - Fix a build break in the assembly files under older versions of GCC.
2020-07-10version 0.3.50.3.5Jack O'Connor
Changes since 0.3.4: - The `digest` dependency is now v0.9 and the `crypto-mac` dependency is now v0.8. - Intel CET is supported in the assembly implementations. - `b3sum` error output includes filepaths again.
2020-05-26link to prebuilt binaries from the b3sum READMEJack O'Connor
2020-05-23version 0.3.40.3.4Jack O'Connor
Changes since 0.3.3: - `b3sum` now supports the `--check` flag. This is intended to be a drop-in replacement for e.g. `md5sum --check` from Coreutils. The behavior is somewhat stricter than Coreutils with respect to invalid Unicode in filenames. For a complete description of how `--check` works, see the file `b3sum/what_does_check_do.md`. - To support the `--check` feature, backslashes and newlines that appear in filenames are now escaped in the output of `b3sum`. This is done the same way as in Coreutils. - To support `--check` interoperability between Unix and Windows, backslashes in filepaths on Windows are now replaced with forward slashes in the output of `b3sum`. Note that this is different from Coreutils.
2020-05-14start documenting the --check flagJack O'Connor
2020-04-28version 0.3.30.3.3Jack O'Connor
Changes since 0.3.2: - `b3sum` binaries are built in CI and attached to new GitHub tags.
2020-04-14version 0.3.20.3.2Jack O'Connor
Changes since 0.3.1: - Fixed a compiler error on older versions of Clang, https://github.com/BLAKE3-team/BLAKE3/issues/79.
2020-04-02version 0.3.10.3.1Jack O'Connor
Changes since 0.3.0: - The x86 build now automatically falls back to "pure" Rust intrinsics, under either of two possible conditions: 1. The `cc` crate fails to invoke a C compiler at all, indicating that nothing of the right name (e.g. "cc" or "$CC" on Unix) is installed. 2. The `cc` crate detects that the compiler doesn't support AVX-512 flags, usually because it's too old. The end result should be that most callers successfully build the assembly implementations, and that callers who can't build those see a warning but not an error. (And note that Cargo suppresses warnings for non-path depencies.)
2020-03-30version 0.3.00.3.0Jack O'Connor
Changes since version 0.2.3: - The optimized assembly implementations are now built by default. They perform better than the intrinsics implementations, and they compile much more quickly. Bringing the default behavior in line with reported benchmark figures should also simplify things for people running their own benchmarks. Previously this crate only built Rust intrinsics implementations by default, and the assembly implementations were gated by the (slightly confusingly named) "c" feature. Now the "c" feature is gone, and applications that need the old behavior can use the new "pure" feature. Mainly this will be applications that don't want to require a C compiler. Note that the `b3sum` crate previously activated the "c" feature by default, so its behavior hasn't changed.
2020-03-29version 0.2.30.2.3Jack O'Connor
Changes since version 0.2.2: - Bug fix: Commit 13556be fixes a crash on Windows when using the SSE4.1 assembly implementation (--features=c, set by default for b3sum). This is undefined behavior and therefore a potential security issue. - b3sum now supports the --num-threads flag. - The C API now includes a blake3_hasher_finalize_seek() function, which returns output from any position in the extended output stream. - Build fix: Commit 5fad419 fixes a compiler error in the AVX-512 C intrinsics implementation targeting the Windows GNU ABI.
2020-03-16update b3sum/README.mdJack O'Connor
2020-02-25version 0.2.20.2.2Jack O'Connor
Changes since 0.2.1 (and since c-0.2.0): - Fix a performance issue when the caller makes multiple calls to update() with uneven lengths. (#69, reported by @willbryant.)
2020-02-19add examples to the b3sum readmeJack O'Connor
2020-02-14version 0.2.10.2.1Jack O'Connor
Changes since 0.2.0: - Workarounds in the assembly implementations (enabled by the "c" feature), to build with older compilers.
2020-02-12version 0.2.00.2.0Jack O'Connor
Changes since 0.1.5: - The `c_avx512` feature has been replaced by the `c` feature. In addition to providing AVX-512 support, `c` also provides optimized assembly implementations. These assembly implementations perform better, perform more consistently across compilers, and compile more quickly. As before, `c` is off by default, but the `b3sum` binary crate activates it by default. - The `rayon` feature no longer affects the entire API. Instead, it provides the `join::RayonJoin` type for use with `Hasher::update_with_join`, so that the caller can control when multi-threading happens. Standalone API functions like `hash` are always single-threaded now.
2020-02-03version 0.1.40.1.4Jack O'Connor
Changes since 0.1.3: - Hasher supports the reset() method. - Hasher implements several traits from the `digest` and `crypto_mac` crates. - Bug fixes in the C implementation for MSVC and for 32-bit x86.
2020-01-22version 0.1.30.1.3Jack O'Connor
Changes since 0.1.2: - All x86 implementations include _mm_prefetch optimizations. These improve performance for very large inputs. - The C implementation performs parallel parent hashing, matching the performance of the single-threaded Rust implementation. - b3sum supports --no-mmap. Contributed by @cesarb.
2020-01-17version 0.1.20.1.2Jack O'Connor
Changes since 0.1.1: - b3sum no longer mmaps files smaller than 16 KiB. This improves performance for hashing many small files. Contributed by @xzfc. - b3sum now supports --raw output. Contributed by @phayes.
2020-01-17update b3sum help text in README.mdJack O'Connor
2020-01-15update the b3sum READMEJack O'Connor
2019-12-13show the default value for b3sum --lengthJack O'Connor
2019-12-13make the b3sum --help text wording more consistentJack O'Connor
2019-12-13add to b3sum/README.mdJack O'Connor
2019-12-12initial version of b3sumJack O'Connor