1
0
Fork 0
mirror of https://github.com/BLAKE3-team/BLAKE3 synced 2024-05-27 12:46:02 +02:00
Commit Graph

383 Commits

Author SHA1 Message Date
Jack O'Connor 92d421dea1 add a larger test case
One thing I like to test is that, if I hack simd_degree to be higher
than MAX_SIMD_DEGREE, assertions fire. This requires a test case long
enough to exceed that number of chunks.
2020-01-22 21:19:47 -05:00
Jack O'Connor 78e858d050 expand comments about lazy merging 2020-01-21 12:09:42 -05:00
Jack O'Connor ccadbad244 stack size in the optimized impl should be MAX_DEPTH + 1 2020-01-21 11:41:20 -05:00
Jack O'Connor d0c8fc16b3 use a better popcnt fallback algorithm
This one loops once for every set bit, rather than once for each bit
position to the right of the highest set bit.

https://en.wikipedia.org/wiki/Hamming_weight#Efficient_implementation
2020-01-21 10:47:00 -05:00
Jack O'Connor 67262dff31 double the maximum incremental subtree size
Because compress_subtree_to_parent_node effectively cuts its input in
half, we can give it an input that's twice as big, without violating the
CV stack invariant.
2020-01-20 19:25:55 -05:00
Jack O'Connor 4a92e8eeb1 add the reference impl doc test to CI 2020-01-20 16:36:30 -05:00
Jack O'Connor 4021636022 test the BLAKE3_NO_* vars in CI 2020-01-20 16:19:16 -05:00
Jack O'Connor 40f4bdc22a switch from BLAKE3_USE_* to BLAKE3_NO_*
This means that compiling C sources includes all implementations by
default, which is what most callers are going to want.
2020-01-20 15:24:03 -05:00
Samuel Neves 66da5afb0c make things more modular 2020-01-20 12:03:31 -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
Samuel Neves b8c33e11ef manually prefetch message blocks 2020-01-19 18:45:37 +00:00
Jack O'Connor a3147eb909 comment about parallelism 2020-01-18 14:32:52 -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 28701d1585 add a README.md in c/blake3_c_rust_bindings 2020-01-16 18:29:20 -05:00
Jack O'Connor 84c26670bf add blake3_c_rust_bindings for testing and benchmarking 2020-01-16 16:09:42 -05:00
Jack O'Connor 33a9bee51f update the b3sum README 2020-01-15 10:46:47 -05:00
Jack O'Connor e60934a129 more consistent use of Self in the reference impl 2020-01-15 10:41:06 -05:00
phayes aec1d88e31
Using take() to limit the number of bytes copies 2020-01-14 14:35:18 -08:00
Jack O'Connor c8c442a99b add comments to the reference impl 2020-01-14 15:22:22 -05: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 b9b1d48545 avoid using MSVC-style flags with the GNU toolchain on Windows 2020-01-13 13:34:06 -05:00
Jack O'Connor 5c7004c518 a bit of README formatting 2020-01-13 13:21:06 -05:00
Jack O'Connor de3ff01b14 mention the default output size in the README 2020-01-13 12:09:43 -05:00
Jack O'Connor 3ec157a9e9 add a CI badge 2020-01-13 12:09:43 -05:00
Cesar Eduardo Barros 9f509a8f1f Inline trivial functions
For the Read and Write traits, this also allows the compiler to see that
the return value is always Ok, allowing it to remove the Err case from
the caller as dead code.
2020-01-12 18:27:42 -05:00
Cesar Eduardo Barros 4690c5f14e Use fixed-size constant_time_eq
The generic constant_time_eq has several branches on the slice length,
which are not necessary when the slice length is known. However, the
optimizer is not allowed to look into the core of constant_time_eq, so
these branches cannot be elided.

Use instead a fixed-size variant of constant_time_eq, which has no
branches since the length is known.
2020-01-12 17:40:57 -05:00
Jack O'Connor b04974461a include the right context string in the test_vectors.json comment
I must've written the comment one way, and then changed the context
string later, without realizing that I'd copied it. Apologies to
everyone whose time I wasted with this.

Fixes https://github.com/BLAKE3-team/BLAKE3/issues/15.
2020-01-12 17:07:23 -05:00
Jack O'Connor 793c8a2444 disambiguate the two test
We can't change the context used in test_vectors.json without breaking
people, but we can change the one in unit tests.
2020-01-11 00:23:07 -05:00
Jack O'Connor d7d71b2c5f move 0-length checks to the top-level C API functions 2020-01-10 10:49:33 -05:00
Guido Vranken 253e830c26 C impl: Prevent memcpy undefined behavior 2020-01-10 10:41:35 -05:00
Jack O'Connor 8d3f33802d correct the comments around SIMD rotations 2020-01-10 10:29:48 -05:00
Jack O'Connor 9096249e09 enable CI on pull requests
As per instructions at:
https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
2020-01-10 10:22:12 -05:00
Jack O'Connor 1d17689133 same license field fix in b3sum/Cargo.toml 2020-01-10 10:00:17 -05:00
Brendan Molloy a7e11c7cf7 Update license field in Cargo.toml
Fixes the issue of crates.io not recognising the license, and using the `OR` terminology to describe the dual licensing option.
2020-01-10 09:57:25 -05:00
Leonard Buskin 0397d42740 Fix misspelled words_from_little_endian_bytes 2020-01-10 09:54:35 -05:00
Jack O'Connor bef2034c0b fix cross_test.sh
This is a hacky test script, and it broke when I added a feature flag,
while our CI was past quota :(
2020-01-09 16:49:37 -05:00
Jack O'Connor a794a9124f link directly to the blake3.pdf file in the spec repo 2020-01-09 15:40:22 -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