1
0
mirror of https://github.com/BLAKE3-team/BLAKE3 synced 2024-09-26 21:20:56 +02:00
Commit Graph

28 Commits

Author SHA1 Message Date
Alex H
2104aaf2f4
Merge 03e0949d13 into 5b9af1c347 2024-03-11 20:18:47 -07:00
Jack O'Connor
6f3e6fc86c update memmap2 to v0.9 2024-01-21 18:37:01 -08:00
ultrabear
1322974a85
Improve performance of --no-mmap mode by enabling multithread.
This uses a double buffer of 1MiB each, reading to one buffer while
hashing the other in parallel. This is around 2x as fast as hashing
singlethreadedly on my machine (ryzen 2600) with an in memory benchmark.

This is still 2x slower than using memmap.
2023-11-05 21:21:47 -08:00
Jack O'Connor
5aa53f07f7 version 1.5.0
Changes since 1.4.1:
- The Rust crate's Hasher type has gained new helper methods for common
  forms of IO: update_reader, update_mmap, and update_mmap_rayon. The
  latter matches the default behavior of b3sum. The mmap methods are
  gated by the new "mmap" Cargo feature.
- Most of the Rust crate's public types now implement the Zeroize trait.
  This is gated by the new "zeroize" Cargo feature.
- The Rust crate's Hash types now implements the serde Serialize and
  Deserialize traits. This is gated by the new "serde" Cargo feature.
- The C library now uses atomics to cache detected CPU features under
  most compilers other than MSVC. Previously this was a non-atomic
  write, which was probably "benign" but made TSan unhappy.
- NEON support is now disabled by default on big-endian AArch64.
  Previously this was a build error if the caller didn't explicitly
  disable it.
2023-09-20 20:12:18 -07:00
Jack O'Connor
cb32f0bd14 replace the new file module with inherent methods on Hasher
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-16 17:04:27 -07:00
Banyc
e0bb915641 move file operations from b3sum to blake3 2023-09-16 14:20:39 -07:00
Jack O'Connor
d6265dafc9 update dev-dependencies 2023-09-10 13:40:12 -07:00
Jack O'Connor
760ed6a8bf version 1.4.1
Changes since 1.4.0:
- Improved performance in the ARM NEON implementation for both C and
  Rust callers. This affects AArch64 targets by default and ARMv7
  targets that explicitly enable (and support) NEON. The size of the
  improvement depends on the microarchitecture, but I've benchmarked
  ~1.3x on a Cortex-A53 and ~1.2x on an Apple M1. Contributed by
  @sdlyyxy in #319.
- The MSRV is now 1.66.1 for both the `blake3` crate and `b3sum`.
2023-07-06 14:30:32 -07:00
Jack O'Connor
99af1ffc66 update constant_time_eq to v0.3.0
This bumps the MSRV of both `blake3` and `b3sum` to 1.66.1.
2023-07-06 13:26:08 -07:00
Jack O'Connor
65733a753b version 1.4.0
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.
2023-06-08 13:06:32 -07:00
Jack O'Connor
0c7add10c6 update memmap2 to v0.7.0 2023-06-08 13:00:52 -07:00
Jack O'Connor
67e4d04a3c version 1.3.3
Changes since 1.3.2:
- Fix incorrect output from AVX-512 intrinsics under GCC 5.4 and 6.1 in
  debug mode. This bug was found in unit tests and probably doesn't
  affect the public API in practice. See
  https://github.com/BLAKE3-team/BLAKE3/issues/271.
2022-11-26 00:31:40 -05:00
Jack O'Connor
537e96747a version 1.3.2:
Changes since 1.3.1:
- Dependency updates only. This includes updating Clap to v4, which
  changes the format of the `b3sum --help` output. The new MSRV is
  1.59.0 for `blake3` and 1.60.0 for `b3sum`. Note that this project
  doesn't have any particular MSRV policy, and we don't consider MSRV
  bumps to be breaking changes.
2022-11-20 15:29:45 -08:00
Jack O'Connor
afa717caf5 downgrade os_str_bytes to v6.3.1 in b3sum/Cargo.lock
v6.4.0 has a bug where invalid UTF-16 filenames fail a debug_assert on
Windows. See https://github.com/dylni/os_str_bytes/issues/14. The vast
majority of b3sum users should be running a binary built in release mode
and shouldn't be affected by this. This lockfile change fixes our CI,
but note that `cargo install` doesn't respect lockfiles by default
(without --locked), so anyone running a debug binary against invalid
Windows filepaths (very rare) will still need to wait for an upstream
patch release.
2022-11-20 15:11:41 -08:00
Jack O'Connor
f10d41924a regenerate b3sum/Cargo.lock 2022-11-20 12:20:57 -08:00
Shun Sakai
cf9edb090b Split short summary from full help text 2022-10-03 13:28:52 +09:00
Shun Sakai
e4dfb96b41 Bump clap to v4.0 2022-10-03 12:07:33 +09:00
Shun Sakai
df7136837a Rewrite CLI using Derive API 2022-09-14 19:53:05 +09:00
Jack O'Connor
d77a70f512 refresh the Cargo.lock file for b3sum 2022-03-27 16:50:37 -04:00
Zach Crownover
cd0775f8e6
Update crossbeam-utils from yanked version 2022-03-26 01:53:05 +00:00
Zach Crownover
f7f535763c
Update crossbeam-channel from yanked version 2022-03-26 01:52:44 +00:00
Zach Crownover
be9ff324bd
Update block-buffer from yanked version 2022-03-26 01:50:55 +00:00
Zach Crownover
989c30e249
RUSTSEC-2020-0077
Migrate from the abandoned memmap library to the now maintained fork
of memmap2
2022-03-26 01:48:20 +00:00
Jack O'Connor
4e84c8c7ae version 1.3.1
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-25 12:02:56 -05:00
Jack O'Connor
9643f9563a version 1.3.0
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-08 00:09:10 -05:00
Jack O'Connor
81c8640410 update clap to v3 2022-01-07 23:57:15 -05:00
Matthias Schiffer
61d6621ba5 Update digest crate to 0.10 for traits-preview feature
Adjust to the following changes that happened in digest:

- The crypto-mac crate has been merged into digest (with "mac" feature
  enabled)
- Various traits have been split up
- The Digest and Mac traits now share their update/finalize/reset
  implementations
- The BlockInput trait was dropped without replacement apparently (as
  long as the low-level core API is not used)
2021-12-30 13:31:20 -05:00
Jack O'Connor
8dcba1514b check in the Cargo.lock for b3sum
We'll need to make sure to update this when we do a version bump. Adding
an explicit `!Cargo.lock` line to b3sum/.gitignore helps with this, by
making sure Cargo.lock shows up by defauls in searches like:

    rg "1\.2\.0"

Closes https://github.com/BLAKE3-team/BLAKE3/issues/210.
2021-12-18 15:27:57 -05:00