Repository navigation
Conversation
Update Makefile
When XXH_FORCE_MEMORY_ACCESS==1, which is the default on supported
compilers unlike stated in the README, a strict aliasing violation
occurs in XXH_read64, resulting in miscompilation on GCC (but not Clang)
in some oddly specific circumstances.
The following code reproduces the problem on x86_64 GCC 14.2.1 when
compiled with -O3:
#define XXH_INLINE_ALL
#include <inttypes.h>
#include <stdio.h>
#include <xxhash.h>
int main() {
// it seems this has to be exactly 24 bytes.
union {
char x[24];
// force 8-byte alignment without making
// aliasable with uint64_t.
void *y[3];
} data = {.x = "garblegarblegarblegarble"};
uint64_t hash = XXH64(&data, sizeof(data), 0);
printf("%016"PRIx64"\n", hash);
return 0;
}
A bogus -Wuninitialized warning is produced if enabled, and the
resulting program outputs an incorrect hash.
While this definitely looks like a compiler bug in some ways, I see no
reason to assume aligned(1) alone should excempt the type from aliasing
restrictions regardless, and adding may_alias does fix the problem.
The separate strict aliasing bug when XXH_FORCE_ALIGN_CHECK==1,
discussed in #383, still remains.
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.0 to 4.6.2. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](actions/upload-artifact@65c4c4a...ea165f8) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
…ons/upload-artifact-4.6.2 build(deps): bump actions/upload-artifact from 4.6.0 to 4.6.2
no longer supported by Github Actions
remove Ubuntu-20 tests
We've observed the NEON implementation perform 25% to 40% better than the SVE one. aarch64 builds will now prefer the NEON variation instead of the SVE one. The SVE version can still be used by explicitly defining XXH_SVE
fix typos
The pkg-config file has License variable that allows you to set the license for the software. This sets BSD-2-Clause to License. Ref: https://github.com/pkgconf/pkgconf/blob/master/man/pc.5#L116 Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Add License variable to pkg-config file
Prefer NEON over SVE
Updated cmake build script and tests
using multiconf.make
now handle by multiconf.make
refactor Make build
- object files preserve their relative path - correcly recompile xxhsum depending on DISPATCH value
and added it back to clean: since fuzzer target is conditional, hence it's not always part of clean_cache
no need to specify anything in user's Makefile, clean_cache target is automatically invoked from `make clean`.
Refactor Make Build
- no need for WHOLE_ARCHIVE - dependency management regrouped in one section
win32 long path
Update version number to v0.8.4
Clarify benchmark units
Update v0.8.4 changelog
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
Refresh README
Pin GitHub Actions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
XXH_memcpy(),XXH_memset()andXXH_memcmp()can be redirected at compile timeXXH_NO_EXTERNC_GUARDbuild macro for complex C++ integration-s,--seed), by @d06i--terminates option parsing, --quiet is not quiet if passed as last argument #1098 reported by @unterkomplexXXH_INLINE_ALLcompatibility withXXH_NAMESPACEand x86 runtime dispatch, by @pps83, XXH_INLINE_ALL conflict with xxh_x86dispatch #1071 reported by @Dr-Hexextern "C"block, <xxhash.h> includes system headers inside extern "C" block #1122 reported by @andreas-schwabLIBXXH_DISPATCH=1now applies to static and dynamic libraries, xxh_x86dispatch.h not installed when DISPATCH=1 #1058 reported by @xiotabuild/cmakeand improved cross-compilation detectionxxhsumdocumentation and clarified the algorithm specification files