aboutsummaryrefslogtreecommitdiff
path: root/b3sum
AgeCommit message (Collapse)Author
2021-02-28EXPERIMENTAL: change derive_key() to use const genericsderive_key_arrayJack O'Connor
2020-10-01version 0.3.70.3.7Jack O'Connor
Changes since 0.3.6: - BUGFIX: The C implementation was incorrect on big endian systems for inputs longer than 1024 bytes. This bug affected all previous versions of the C implementation. Little endian platforms like x86 were unaffected. The Rust implementation was also unaffected. @jakub-zwolakowski and @pascal-cuoq from TrustInSoft reported this bug: https://github.com/BLAKE3-team/BLAKE3/pull/118 - BUGFIX: The C build on x86-64 was producing binaries with an executable stack. @tristanheaven reported this bug: https://github.com/BLAKE3-team/BLAKE3/issues/109 - @mkrupcale added optimized implementations for SSE2. This improves performance on older x86 processors that don't support SSE4.1. - The C implementation now exposes the `blake3_hasher_init_derive_key_raw` function, to make it easier to implement language bindings. Added by @k0001.
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-06-24put the file name in b3sum error outputJack O'Connor
This was previously there, but got dropped in c5c07bb337d0af7522666d05308aaf24eef3709c.
2020-05-26link to prebuilt binaries from the b3sum READMEJack O'Connor
2020-05-25all-capitalize "FILE" in the b3sum help outputJack O'Connor
2020-05-25avoid repeating a stringJack O'Connor
2020-05-23fix a typo in the docsJack O'Connor
2020-05-23add a test commentJack 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-23remove an extra space in some help textJack O'Connor
2020-05-23use wild::args_os to support globbing on WindowsJack O'Connor
2020-05-23add support for --quiet to `b3sum --check`Jack O'Connor
Suggested by @llowrey: https://github.com/BLAKE3-team/BLAKE3/issues/33#issuecomment-629853747
2020-05-16some more clarifications in the --check docsJack O'Connor
2020-05-15clarify the replacement character exampleJack O'Connor
2020-05-15small typoJack O'Connor
2020-05-15finish the --check documentationJack O'Connor
2020-05-14start documenting the --check flagJack O'Connor
2020-05-14enable clap default featuresJack O'Connor
These are nice to have. I used to think this would increase build times, but in practice it doesn't.
2020-05-14clarify that --no-mmap disables threadingJack O'Connor
2020-05-14print per-file errros more gracefuly in --checkJack O'Connor
2020-05-13refactor b3sum to support --checkJack O'Connor
This is an overall cleanup of everything that b3sum is doing, especially file opening and memory mapping, which makes it easier for the regular hashing mode to share code with the checking mode.
2020-05-13switch from assert_cmd to CARGO_BIN_EXE_*Jack O'Connor
2020-05-12add parse_check_lineJack O'Connor
As part of this, reorganize b3sum tests into src/unit_tests.rs and tests/cli_tests.rs.
2020-05-12stop printing the lossy warningJack O'Connor
Rather than breaking the check parse with more output, we'll have a rule that a Unicode replacement character (�) in a path name automatically fails the check.
2020-05-05add newline and backslash escaping to b3sum outputJack O'Connor
As proposed in https://github.com/BLAKE3-team/BLAKE3/issues/33#issuecomment-623153164 This brings b3sum behavior close to md5sum. All occurrences of backslash are replaced with "\\", and all occurrences of (Unix) newline are replaced with "\n". In addition, any line containing these escapes has a single "\" prepended to the front. Filepaths were already being converted to UTF-8 with to_string_lossy(), but this commit adds an extra warning when that conversion is in fact lossy (because the path is not valid Unicode). This new warning is printed to stdout, with the goal of deliberately breaking --check (which is not yet implemented) in this case.
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-29refactor the Cargo feature setJack O'Connor
The biggest change here is that assembly implementations are enabled by default. Added features: - "pure" (Pure Rust, with no C or assembly implementations.) Removed features: - "c" (Now basically the default.) Renamed features; - "c_prefer_intrinsics" -> "prefer_intrinsics" - "c_neon" -> "neon" Unchanged: - "rayon" - "std" (Still the only feature on by default.)
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-03-16add the --num-threads flagJack O'Connor
As part of this change, make the rayon and memmap dependencies mandatory. This simplifies the code a lot, and I'm not aware of any callers who build b3sum without the default dependencies. If --num-threads is not given, or if its value is 0, b3sum will still respect the RAYON_NUM_THREADS environment variable.
2020-03-15wrap --help output to 80 columnsJack 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-12integrate assembly implementations into the blake3 crateJack O'Connor
2020-02-06Hasher::update_with_joinJack O'Connor
This is a new interface that allows the caller to provide a multi-threading implementation. It's defined in terms of a new `Join` trait, for which we provide two implementations, `SerialJoin` and `RayonJoin`. This lets the caller control when multi-threading is used, rather than the previous all-or-nothing design of the "rayon" feature. Although existing callers should keep working, this is a compatibility break, because callers who were relying on automatic multi-threading before will now be single-threaded. Thus the next release of this crate will need to be version 0.2. See https://github.com/BLAKE3-team/BLAKE3/issues/25 and https://github.com/BLAKE3-team/BLAKE3/issues/54.
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-20clarify the --no-mmap logic a bitJack O'Connor
2020-01-20b3sum: add no-mmap optionCesar Eduardo Barros
Using mmap is not always the best option. For instance, if the file is truncated while being read, b3sum will receive a SIGBUS and abort. Follow ripgrep's lead and add a --no-mmap option to disable mmap. This can also help benchmark the mmap versus the read path, and help debug performance issues potentially caused by mmap access patterns (like issue #32).
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