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

603 Commits

Author SHA1 Message Date
Jack O'Connor f7e1a7429f retain the old NEON rotations in inline comments 2023-07-05 10:29:02 -07:00
sdlyyxy 7038dad280 NEON rot7/rot12 use shl+sri 2023-07-05 13:28:45 -04:00
sdlyyxy a03b7af061 NEON: only use __builtin_shufflevector on clang 2023-07-05 13:28:45 -04:00
sdlyyxy 38a06e78d3 Improve NEON rot16/rot8 2023-07-05 13:28:45 -04:00
1f604 e47e570691 Fix typo exendable -> extendable 2023-06-27 11:31:51 -04:00
Henrik S. Gaßmann 3f396d2239 build(CMake): Rework NEON detection
Given the myriad of `-mfpu` options for ARM [1], the inability to
portably query for CPU support, and the lack of standardized ISA names
we have no other choice, but to opt out of automatically supplying NEON
compile flags. Instead we simply add the NEON optimized source file if
we detect an ISA with guaranteed NEON support (>= ARMv8) or the user
explicitly requests it (in which case he is expected to provide the
compile flags with `CMAKE_C_FLAGS` or `BLAKE3_CFLAGS_NEON` either
through a toolchain file or commandline parameters).

[1]: https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html
2023-06-17 22:57:45 -04:00
Jack O'Connor 74220e2ca1 correct the VERSION in CMakeLists.txt 2023-06-17 13:22:26 -07:00
Henrik S. Gaßmann 072bef5bf0 build(CMake): Fix pkg-config directory specification
- Properly add the install prefix to the libdir and includedir.
- Define the prefix once.
- Quote paths which may contain whitespace.
2023-06-17 14:57:25 -04: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 fbc96eb7ad factor out b3sum tests in ci.yml, to support a different MSRV 2023-06-08 12:49:32 -07:00
Jack O'Connor 4108923f52 add b3sum --seek 2023-06-06 20:25:00 -07:00
Henrik S. Gaßmann 76f9339312 build(cmake): Print the active SIMD configuration 2023-05-24 13:31:00 -07:00
Henrik S. Gaßmann 0e872a02ea build(cmake): Properly configure dispatcher for no SIMD
If no SIMD support could be configured we need to inform
`blake3_dispatch.c` about it.
2023-05-24 13:31:00 -07:00
Henrik S. Gaßmann 962d5f757e build(cmake): Correctly detect x86 and arm64 Windows
The ISA names communicated by `CMAKE_SYSTEM_PROCESSOR` aren't as much
standardized as one would wish they were. Factor the different names
into lists allowing for simpler checks and future updates.

Add hidden options for enabling SIMD support in case ISA detection
fails. These should only be used to temporarily workarounds until the
ISA name lists has been updated/fixed.
2023-05-24 13:31:00 -07:00
Jack O'Connor ef5679ef7b Update c/CMakeLists.txt
Co-authored-by: Henrik Gaßmann <BurningEnlightenment@users.noreply.github.com>
2023-05-23 14:48:45 -07:00
Jack O'Connor afebadf4a0 Update c/CMakeLists.txt
Co-authored-by: Henrik Gaßmann <BurningEnlightenment@users.noreply.github.com>
2023-05-23 14:48:45 -07:00
Henrik S. Gaßmann 1a9dd71681 Explicitly specify C symbol visibility
In order for blake3 to be usable as a shared library on Windows it is
required to annotate public symbols. Use this as an opportunity to prune
the symbol table for other OSes, too.
2023-05-23 14:48:45 -07:00
Henrik S. Gaßmann 4bb0466579 Refactor CMake buildsystem to be portable and modern
Aggreggate source files directly in the target instead of a proxy
variable.

Install CMake package config files in order to allow the project to be
found via `find_package()` by dependents.

Replace hard coded SIMD compiler flags with configurable options. Retain
the current GCC/Clang flags as defaults for these compilers. Add default
SIMD compiler flags for MSVC.

Remove hard coded compiler flags (including -fPIC). These are not
portable and should be set by the toolchain file or on the CLI.

- Guard ASM sources with triplet compatibility checks.
- Remove the `BLAKE3_STATIC` option in favor of [`BUILD_SHARED_LIBS`].

[`BUILD_SHARED_LIBS`]: https://cmake.org/cmake/help/v3.9/variable/BUILD_SHARED_LIBS.html
2023-05-23 14:48:45 -07:00
Joel Rosdahl 2dd4e57f68 Fix typos 2023-05-23 14:39:27 -07:00
Jean-Philippe Aumasson 71a2646180
B3 users 2023-05-01 19:54:49 +02:00
Jack O'Connor e6e32bc2b1 small doc tweak 2023-05-01 01:28:01 -07:00
Eduardo Leegwater Simões 8176a2202d add `from_bytes` for conversions from `[u8; 32]`
The function is `const`, so it is fundamentally different from the
`From` trait implementation by allowing compile-time instantiation of a
`Hash`.
2023-05-01 03:23:16 -05:00
Eduardo Leegwater Simões ce48d79f38 make `Hash::as_bytes` const 2023-05-01 03:23:16 -05:00
SteveGremory 3f65cabb7d Fixed CI for CMake. 2023-05-01 01:01:01 -07:00
SteveGremory d7f43a339a Added CI Support for the CMake build, Linux/macOS only (for now) 2023-05-01 01:00:59 -07:00
SteveGremory b0a3863c06 Minor changes to CMake, added SSE support. Added options to only make either static or shared libs. 2023-05-01 00:59:56 -07:00
SteveGremory 3d8a673f59 Fixed on macOS 2023-05-01 00:59:56 -07:00
SteveGremory b494d215e5 Hotfix CMakeLists.txt 2023-05-01 00:59:56 -07:00
SteveGremory 1569e34555 Added CMake support, CMakeLists.txt taken from issue 102 2023-05-01 00:59:56 -07:00
Samuel Neves 9ac0a9b896 correct SSSE3 detection; fixes #300
SSSE3 is indicated by bit 9 of ECX, not bit 0, which indicates the
presence of SSE3.

There are very few CPUs in use affected by this bug; SSE3 was part of
the Prescott new instructions, introduced in the later Pentium 4 chips,
whereas SSSE3 was introduced in Intel's Core 2 and AMD's Bulldozer. This
leaves a few Pentium 4 and Athlon 64 models that will potentially run an
illegal pshufb or pblendw.
2023-04-21 21:28:01 +01:00
Jack O'Connor a9750c7fec upgrade all Cargo.toml files to edition=2021
The MSRV is already 1.60, so this doesn't affect much. The only impact
to other code is that we no longer need to explicitly import TryInto.
2023-03-25 16:36:37 -07:00
Jack O'Connor 64747d48ff do another saturating_add for consistency
This one is less security/correctness-critical than the other one I just
added, but I might as well be consistent.
2023-02-04 10:35:59 -08:00
Jack O'Connor 697ca13550 suppress expected stderr prints in b3sum tests 2023-02-04 10:16:08 -08:00
Jack O'Connor 4c51c06008 add a colon to the b3sum warning format
This matches what md5sum does.
2023-02-04 10:15:25 -08:00
Jack O'Connor f1dcbeadc2 do a saturating_add for files_failed 2023-02-04 10:15:25 -08:00
joveian 98135307bf Use u64 instead of i64 2023-02-04 10:14:52 -08:00
joveian 4c819d01bc Add --check summary of failures
Add a warning to stderr at the end similar to other *sum utilities when --check is used and some files failed verification.

At least the last part of the comment above check_one_checkfile seemed to be incorrect so I removed that comment.

Fixes #283
2023-02-04 10:14:52 -08:00
namazso c303437aab Correct section names on Windows GNU assembly 2023-01-23 11:19:19 -08:00
Alberto González Palomo 606a5825d9 Make sign conversion explicit. Fix #287.
Implicit sign conversions cause warnings when using -Wsign-conversion
but that is easy to avoid by making the conversions explicit.
2023-01-19 13:13:32 -08:00
Jack O'Connor e366618d22 test `b3sum --keyed` with bad key lengths 2022-12-13 15:56:08 -08:00
Jack O'Connor 2465e0a935 expand the short description of b3sum --keyed 2022-12-13 15:50:30 -08: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 342f9f8067 fix incorrect output from AVX-512 intrinsics in debug mode under GCC 5.4 and 6.1
Fixes https://github.com/BLAKE3-team/BLAKE3/issues/271.

The `_mm512_cmp_epu32_mask` intrinsic is broken under GCC 5.4 and 6.1.
This led to incorrect output in the AVX-512 implementation when building
with intrinsics instead of assembly. This fix is a simplified version of
Samuel's proposed fix here:
f10816e857 (commitcomment-90742995)
2022-11-23 14:14:19 -08:00
Jack O'Connor 5dad698d3f test multiple initial counter values for hash_many
I'm adding the i32::MAX test case here because I personally screwed it
up while I was working on
https://github.com/BLAKE3-team/BLAKE3/issues/271. The correct
implementation of the carry bit is the ANDNOT of old high bit (1) and
the new high bit (0). Using XOR instead of ANDNOT gives the correct
answer in the overflow case, but it also reports an incorrect "extra"
overflow when the high bit goes from 0 to 1.
2022-11-22 23:31:29 -08:00
Jack O'Connor 62772b2d04 add GCC 5.4 to CI 2022-11-22 23:22:14 -08:00
Jack O'Connor 8b9608ba17 grammar fix in b3sum help output 2022-11-20 17:24:58 -08:00
Jack O'Connor 56b72b1738 add another retry loop to upload_github_release_asset.py
While we're at it, black format the .py files in this directory.
2022-11-20 17:18:35 -08: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