Skip to content

v0.8.4 - #1151

Merged
Cyan4973 merged 286 commits into
releasefrom
dev
Sep 19, 2026
Merged

v0.8.4#1151
Cyan4973 merged 286 commits into
releasefrom
dev

Conversation

@Cyan4973

Copy link
Copy Markdown
Owner

Cyan4973 and others added 30 commits February 9, 2025 19:08
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
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
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
Updated cmake build script and tests
using multiconf.make
now handle by multiconf.make
- 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`.
- no need for WHOLE_ARCHIVE
- dependency management regrouped in one section
@Cyan4973 Cyan4973 self-assigned this Sep 18, 2026
@github-advanced-security

Copy link
Copy Markdown

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:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

Comment thread .github/workflows/ci.yml Fixed
Comment thread .github/workflows/ci.yml Fixed
Comment thread .github/workflows/ci.yml Fixed
Comment thread .github/workflows/cmake-cross-compile-test.yml Fixed
@Cyan4973
Cyan4973 merged commit c87183a into release Sep 19, 2026
90 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.