1
0
Fork 0
mirror of https://github.com/BLAKE3-team/BLAKE3 synced 2024-05-08 23:16:15 +02:00
Commit Graph

125 Commits

Author SHA1 Message Date
Jack O'Connor e70bc965e3 use an absolute url for https://github.com/BLAKE3-team/BLAKE3/blob/master/b3sum/what_does_check_do.md 2020-09-14 11:17:39 -04:00
Jack O'Connor 6785d7bc0c remove an outdated section of the b3sum readme 2020-09-14 11:05:15 -04:00
Jack O'Connor 63d27d4d1e version 0.3.6
Changes since 0.3.5:
- Fix a build break in the assembly files under older versions of GCC.
2020-07-29 19:21:23 -04:00
Jack O'Connor 7d0de7be14 version 0.3.5
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-07-10 12:21:12 -04:00
Jack O'Connor e0f193ddc9 put the file name in b3sum error output
This was previously there, but got dropped in
c5c07bb337.
2020-06-24 18:02:16 -04:00
Jack O'Connor e63ad97e8b link to prebuilt binaries from the b3sum README 2020-05-26 00:25:39 -04:00
Jack O'Connor f287b56bc6 all-capitalize "FILE" in the b3sum help output 2020-05-25 21:22:29 -04:00
Jack O'Connor 0215604c59 avoid repeating a string 2020-05-25 21:20:43 -04:00
Jack O'Connor 0694d0f6a5 fix a typo in the docs 2020-05-23 15:13:19 -04:00
Jack O'Connor 8d6f0f2574 add a test comment 2020-05-23 14:56:43 -04:00
Jack O'Connor 7f154ceea3 version 0.3.4
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-23 14:37:49 -04:00
Jack O'Connor cd093791ab remove an extra space in some help text 2020-05-23 14:28:10 -04:00
Jack O'Connor 48512ec4f0 use wild::args_os to support globbing on Windows 2020-05-23 12:46:45 -04:00
Jack O'Connor c9a1676942 add support for --quiet to `b3sum --check`
Suggested by @llowrey:
https://github.com/BLAKE3-team/BLAKE3/issues/33#issuecomment-629853747
2020-05-23 12:27:48 -04:00
Jack O'Connor cd436251b6 some more clarifications in the --check docs 2020-05-16 13:29:10 -04:00
Jack O'Connor e1f3043e76 clarify the replacement character example 2020-05-15 16:11:11 -04:00
Jack O'Connor c71d88ce37 small typo 2020-05-15 16:05:18 -04:00
Jack O'Connor e8a868d6e5 finish the --check documentation 2020-05-15 15:58:29 -04:00
Jack O'Connor ae8cf2f924 start documenting the --check flag 2020-05-14 18:35:31 -04:00
Jack O'Connor 5651ce7ee0 enable clap default features
These are nice to have. I used to think this would increase build times,
but in practice it doesn't.
2020-05-14 11:32:05 -04:00
Jack O'Connor 86d5a13731 clarify that --no-mmap disables threading 2020-05-14 11:29:28 -04:00
Jack O'Connor 1d03c7d3fa print per-file errros more gracefuly in --check 2020-05-14 11:19:31 -04:00
Jack O'Connor c5c07bb337 refactor b3sum to support --check
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-13 18:23:59 -04:00
Jack O'Connor 5030c0f1c3 switch from assert_cmd to CARGO_BIN_EXE_* 2020-05-13 17:47:59 -04:00
Jack O'Connor c6a99dbb23 add parse_check_line
As part of this, reorganize b3sum tests into src/unit_tests.rs and
tests/cli_tests.rs.
2020-05-12 17:09:38 -04:00
Jack O'Connor 584a66598d stop printing the lossy warning
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-12 09:58:54 -04:00
Jack O'Connor dc2a79d266 add newline and backslash escaping to b3sum output
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-05-05 00:59:31 -04:00
Jack O'Connor 0db6fddc86 version 0.3.3
Changes since 0.3.2:
- `b3sum` binaries are built in CI and attached to new GitHub tags.
2020-04-28 11:20:39 -04:00
Jack O'Connor fcb4b83419 version 0.3.2
Changes since 0.3.1:
- Fixed a compiler error on older versions of Clang,
  https://github.com/BLAKE3-team/BLAKE3/issues/79.
2020-04-14 01:13:38 -04:00
Jack O'Connor 5e82396d80 version 0.3.1
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-04-02 10:08:47 -04:00
Jack O'Connor 6fbc1a679d version 0.3.0
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-30 00:36:13 -04:00
Jack O'Connor e06a0f255a refactor the Cargo feature set
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-29 18:02:03 -04:00
Jack O'Connor 7caf1ad4bb version 0.2.3
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-29 01:44:00 -04:00
Jack O'Connor 470d42a05a update b3sum/README.md 2020-03-16 12:26:16 -04:00
Jack O'Connor a0355ba8e0 add the --num-threads flag
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-16 12:24:03 -04:00
Jack O'Connor d925728aed wrap --help output to 80 columns 2020-03-15 15:47:58 -04:00
Jack O'Connor c197a773ac version 0.2.2
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-25 12:15:27 -05:00
Jack O'Connor 9f6104c8ed add examples to the b3sum readme 2020-02-19 16:48:53 -05:00
Jack O'Connor 865d201722 version 0.2.1
Changes since 0.2.0:
- Workarounds in the assembly implementations (enabled by the "c"
  feature), to build with older compilers.
2020-02-14 11:20:03 -05:00
Jack O'Connor afdaf3036b version 0.2.0
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-12 14:57:57 -05:00
Jack O'Connor efbfa0463c integrate assembly implementations into the blake3 crate 2020-02-12 10:23:17 -05:00
Jack O'Connor fc219f4f8d Hasher::update_with_join
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-06 15:07:15 -05:00
Jack O'Connor 0de4412884 version 0.1.4
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-02-03 12:05:26 -05:00
Jack O'Connor e17c45ddd5 version 0.1.3
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-22 21:35:24 -05:00
Jack O'Connor 491f799fd9 clarify the --no-mmap logic a bit 2020-01-20 12:03:31 -05:00
Cesar Eduardo Barros 273a679ddc b3sum: add no-mmap option
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-20 11:58:07 -05:00
Jack O'Connor 14cd5c51c4 version 0.1.2
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-17 13:58:55 -05:00
Jack O'Connor 7ee89fe738 update b3sum help text in README.md 2020-01-17 13:54:58 -05:00
Jack O'Connor e2ce07601f edit the --raw help string 2020-01-17 13:36:09 -05:00
Jack O'Connor 2db9f2d2ea
Merge pull request #22 from phayes/raw_output
Adds support for raw output to b3sum
2020-01-17 13:29:39 -05:00
Albert Safin f26880e282 b3sum: do not mmap files smaller than 16 KiB 2020-01-17 12:58:32 -05:00
Jack O'Connor 33a9bee51f update the b3sum README 2020-01-15 10:46:47 -05:00
phayes aec1d88e31
Using take() to limit the number of bytes copies 2020-01-14 14:35:18 -08:00
phayes a02b4cb040
bailing early if we have both --raw and multiple files 2020-01-13 14:56:06 -08:00
phayes 0e8734b7f6
Making sure our raw multi-file test is testing what we think it is 2020-01-13 14:48:24 -08:00
phayes 5cb01ad696
Using stdout_capture for capturing stdout that is not a string 2020-01-13 14:43:09 -08:00
phayes 2bd7614d1e
Fixing stdout locking 2020-01-13 14:40:30 -08:00
phayes ec1233bca3
Locking stdout for writing in a tight loop. 2020-01-13 14:36:28 -08:00
phayes 8d251af29f
Adds support for raw output to b3sum 2020-01-13 13:12:47 -08:00
Jack O'Connor 02250a7b7c version 0.1.1
Changes since 0.1.0:
- Optimizations contributed by @cesarb.
- Fix the build on x86_64-pc-windows-gnu when c_avx512 is enabled.
- Add an explicit error message for compilers that don't support c_avx512.
2020-01-13 14:47:28 -05:00
Jack O'Connor caa6622afa explicitly check for -mavx512f or /arch:AVX512 support
If AVX-512 is enabled, and the local C compiler doesn't support it, the
build is going to fail. However, if we check for this explicitly, we can
give a better error message.

Fixes https://github.com/BLAKE3-team/BLAKE3/issues/6.
2020-01-13 14:34:27 -05:00
Jack O'Connor 1d17689133 same license field fix in b3sum/Cargo.toml 2020-01-10 10:00:17 -05:00
Jack O'Connor 7f43ed9f47 use the Apache-2.0 license in Cargo.toml
This project is also CC0, but crates.io doesn't seem to understand that
one.
2020-01-09 11:48:09 -05:00
Jack O'Connor 3cf242b651 fill out Cargo.toml files for publication 2020-01-09 10:50:55 -05:00
Jack O'Connor e04b8b1fed clarify that b3sum --keyed takes raw key bytes 2020-01-07 17:44:50 -05:00
Jack O'Connor bee430b335 make the --length argument require a value 2020-01-05 19:21:47 -05:00
Jack O'Connor 2fac7447e0 make derive_key take a key of any length
The previous version of this API called for a key of exactly 256 bits.
That's good for optimal performance, but it would mean losing the
use-with-other-algorithms property for applications whose input keys are
a different size. There's no way for an abstraction over the previous
version to provide reliable domain separation for the "extract" step.
2019-12-28 17:56:29 -06:00
Jack O'Connor 7f20c473f2 show the default value for b3sum --length 2019-12-13 16:23:03 -05:00
Jack O'Connor ddd4f4a202 make the b3sum --help text wording more consistent 2019-12-13 16:17:57 -05:00
Jack O'Connor b1b507d43a make b3sum --keyed and --derive-key read the key from stdin
Putting secret keys on the command line is bad practice, because command
line args are usually globally visible within the OS. Even if these
flags are mostly intended for testing and experimentation, we might as
well do the right thing. Plus this saves people the trouble of hex
encoding their keys.
2019-12-13 16:10:55 -05:00
Jack O'Connor 1a6e863513 fix another warning in b3sum --no-default-features 2019-12-13 13:27:01 -05:00
Jack O'Connor aa0d282ee5 add to b3sum/README.md 2019-12-13 13:10:05 -05:00
Jack O'Connor 811b5109c5 add --no-names to b3sum
Printing all names by default is more consistent with Coreutils.
2019-12-13 13:08:50 -05:00
Jack O'Connor 9bf1020213 make the "c_avx512" feature a no-op on non-x86
This lets us enable it by default in b3sum.
2019-12-12 15:13:04 -05:00
Jack O'Connor 7cf6b8f174 initial version of b3sum 2019-12-12 13:18:57 -05:00