Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge commit '09c2c0c18' as 'third-party/xxHash'
- Loading branch information
Showing
72 changed files
with
18,021 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# Set the default behavior | ||
* text eol=lf | ||
|
||
# Explicitly declare source files | ||
*.c text eol=lf | ||
*.h text eol=lf | ||
|
||
# Denote files that should not be modified. | ||
*.odt binary | ||
|
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# objects | ||
*.o | ||
*.obj | ||
*.s | ||
|
||
# libraries | ||
libxxhash.* | ||
!libxxhash.pc.in | ||
|
||
# Executables | ||
*.exe | ||
xxh32sum | ||
xxh64sum | ||
xxh128sum | ||
xxhsum | ||
xxhsum32 | ||
xxhsum_privateXXH | ||
xxhsum_inlinedXXH | ||
dispatch | ||
tests/generate_unicode_test | ||
|
||
# local conf | ||
.clang_complete | ||
|
||
# Mac OS-X artefacts | ||
*.dSYM | ||
.DS_Store | ||
|
||
# Wasm / emcc / emscripten artefacts | ||
*.html | ||
*.wasm | ||
*.js | ||
|
||
# CMake build directories | ||
build*/ | ||
|
||
# project managers artifacts | ||
.projectile | ||
|
||
# analyzer artifacts | ||
infer-out | ||
|
||
# test artifacts | ||
.test* | ||
tmp* | ||
tests/*.unicode | ||
tests/unicode_test* |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,142 @@ | ||
language: c | ||
|
||
# Dump CPU info before start | ||
before_install: | ||
- cat /proc/cpuinfo || echo /proc/cpuinfo is not present | ||
|
||
matrix: | ||
fast_finish: true | ||
include: | ||
|
||
- name: General linux x64 tests | ||
arch: amd64 | ||
addons: | ||
apt: | ||
packages: | ||
- g++-multilib | ||
- gcc-multilib | ||
- cppcheck | ||
script: | ||
- make -B test-all | ||
- make clean | ||
- CFLAGS="-Werror" MOREFLAGS="-Wno-sign-conversion" make dispatch # removing sign conversion warnings due to a bug in gcc-5's definition of some AVX512 intrinsics | ||
- make clean | ||
- CFLAGS="-O1 -mavx512f -Werror" make | ||
- make clean | ||
- CFLAGS="-Wall -Wextra -Werror" make DISPATCH=1 | ||
- make clean | ||
- CFLAGS="-std=c90 -pedantic -Wno-long-long -Werror" make xxhsum # check C90 + long long compliance | ||
- make c90test # strict c90, with no long long support; resulting in no XXH64_* symbol | ||
- make noxxh3test # check library can be compiled with XXH_NO_XXH3, resulting in no XXH3_* symbol | ||
|
||
|
||
- name: Check results consistency on x64 | ||
arch: amd64 | ||
script: | ||
- CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR make check # Scalar code path | ||
- make clean | ||
- CPPFLAGS=-DXXH_VECTOR=XXH_SSE2 make check # SSE2 code path | ||
- make clean | ||
- CPPFLAGS="-mavx2 -DXXH_VECTOR=XXH_AVX2" make check # AVX2 code path | ||
- make clean | ||
- CPPFLAGS="-mavx512f -DXXH_VECTOR=XXH_AVX512" make check # AVX512 code path | ||
- make clean | ||
- CPPFLAGS=-DXXH_REROLL=1 make check # reroll code path (#240) | ||
- make -C tests/bench | ||
|
||
- name: macOS General Test | ||
os: osx | ||
compiler: clang | ||
script: | ||
- CFLAGS="-Werror" make # test library build | ||
- make clean | ||
- make test MOREFLAGS='-Werror' | tee # test scenario where `stdout` is not the console | ||
|
||
- name: ARM compilation and consistency checks (Qemu) | ||
dist: xenial | ||
arch: amd64 | ||
addons: | ||
apt: | ||
packages: | ||
- qemu-system-arm | ||
- qemu-user-static | ||
- gcc-arm-linux-gnueabi | ||
- libc6-dev-armel-cross | ||
script: | ||
# arm (32-bit) | ||
- CC=arm-linux-gnueabi-gcc CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR LDFLAGS=-static RUN_ENV=qemu-arm-static make check # Scalar code path | ||
- make clean | ||
# NEON (32-bit) | ||
- CC=arm-linux-gnueabi-gcc CPPFLAGS=-DXXH_VECTOR=XXH_NEON CFLAGS="-O3 -march=armv7-a -fPIC -mfloat-abi=softfp -mfpu=neon-vfpv4" LDFLAGS=-static RUN_ENV=qemu-arm-static make check # NEON code path | ||
|
||
- name: aarch64 compilation and consistency checks | ||
dist: xenial | ||
arch: arm64 | ||
script: | ||
# aarch64 | ||
- CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR make check # Scalar code path | ||
# NEON (64-bit) | ||
- make clean | ||
- CPPFLAGS=-DXXH_VECTOR=XXH_NEON make check # NEON code path | ||
# clang | ||
- make clean | ||
- CC=clang CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR make check # Scalar code path | ||
# clang + NEON | ||
- make clean | ||
- CC=clang CPPFLAGS=-DXXH_VECTOR=XXH_NEON make check # NEON code path | ||
|
||
# We need Bionic here because the QEMU versions shipped in the older repos | ||
# do not support POWER8 emulation, and compiling QEMU from source is a pain. | ||
- name: PowerPC + PPC64 compilation and consistency checks (Qemu on Bionic) | ||
dist: bionic | ||
arch: amd64 | ||
addons: | ||
apt: | ||
packages: | ||
- qemu-system-ppc | ||
- qemu-user-static | ||
- gcc-powerpc-linux-gnu | ||
- gcc-powerpc64-linux-gnu | ||
- libc6-dev-powerpc-cross | ||
- libc6-dev-ppc64-cross | ||
script: | ||
- CC=powerpc-linux-gnu-gcc RUN_ENV=qemu-ppc-static LDFLAGS=-static make check # Scalar code path | ||
- make clean | ||
- CC=powerpc64-linux-gnu-gcc RUN_ENV=qemu-ppc64-static CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR CFLAGS="-O3" LDFLAGS="-static -m64" make check # Scalar code path | ||
# VSX code | ||
- make clean | ||
- CC=powerpc64-linux-gnu-gcc RUN_ENV="qemu-ppc64-static -cpu power8" CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-O3 -maltivec -mvsx -mcpu=power8 -mpower8-vector" LDFLAGS="-static -m64" make check # VSX code path | ||
# altivec.h redefinition issue #426 | ||
- make clean | ||
- CC=powerpc64-linux-gnu-gcc CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-maltivec -mvsx -mcpu=power8 -mpower8-vector" make -C tests test_ppc_redefine | ||
|
||
- name: PPC64LE compilation and consistency checks | ||
dist: xenial | ||
arch: ppc64le | ||
script: | ||
# Scalar (universal) code path | ||
- CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR LDFLAGS=-static make check | ||
# VSX code path (64-bit) | ||
- make clean | ||
- CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-O3 -maltivec -mvsx -mpower8-vector -mcpu=power8" LDFLAGS="-static" make check | ||
# altivec.h redefinition issue #426 | ||
- make clean | ||
- CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-maltivec -mvsx -mcpu=power8 -mpower8-vector" make -C tests test_ppc_redefine | ||
|
||
- name: IBM s390x compilation and consistency checks | ||
dist: bionic | ||
arch: s390x | ||
script: | ||
# Scalar (universal) code path | ||
- CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR LDFLAGS=-static make check | ||
# s390x code path (64-bit) | ||
- make clean | ||
- CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-O3 -march=arch11 -mzvector" LDFLAGS="-static" make check | ||
|
||
- name: cmake build test | ||
script: | ||
- cd cmake_unofficial | ||
- mkdir build | ||
- cd build | ||
- cmake .. | ||
- CFLAGS=-Werror make |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
v0.8.1 | ||
- perf : much improved performance for XXH3 streaming variants, notably on gcc and msvc | ||
- perf : improved XXH64 speed and latency on small inputs | ||
- perf : small XXH32 speed and latency improvement on small inputs of random size | ||
- perf : minor stack usage improvement for XXH32 and XXH64 | ||
- api : new experimental variants XXH3_*_withSecretandSeed() | ||
- api : update XXH3_generateSecret(), can no generate secret of any size (>= XXH3_SECRET_SIZE_MIN) | ||
- cli : xxhsum can now generate and check XXH3 checksums, using command `-H3` | ||
- build: can build xxhash without XXH3, with new build macro XXH_NO_XXH3 | ||
- build: fix xxh_x86dispatch build with MSVC, by @apankrat | ||
- build: XXH_INLINE_ALL can always be used safely, even after XXH_NAMESPACE or a previous XXH_INLINE_ALL | ||
- build: improved PPC64LE vector support, by @mpe | ||
- install: fix pkgconfig, by @ellert | ||
- install: compatibility with Haiku, by @Begasus | ||
- doc : code comments made compatible with doxygen, by @easyaspi314 | ||
- misc : XXH_ACCEPT_NULL_INPUT_POINTER is no longer necessary, all functions can accept NULL input pointers, as long as size == 0 | ||
- misc : complete refactor of CI tests on Github Actions, offering much larger coverage, by @t-mat | ||
- misc : xxhsum code base split into multiple specialized units, within directory cli/, by @easyaspi314 | ||
|
||
v0.8.0 | ||
- api : stabilize XXH3 | ||
- cli : xxhsum can parse BSD-style --check lines, by @WayneD | ||
- cli : `xxhsum -` accepts console input, requested by @jaki | ||
- cli : xxhsum accepts -- separator, by @jaki | ||
- cli : fix : print correct default algo for symlinked helpers, by @martinetd | ||
- install: improved pkgconfig script, allowing custom install locations, requested by @ellert | ||
|
||
v0.7.4 | ||
- perf: automatic vector detection and selection at runtime (`xxh_x86dispatch.h`), initiated by @easyaspi314 | ||
- perf: added AVX512 support, by @gzm55 | ||
- api : new: secret generator `XXH_generateSecret()`, suggested by @koraa | ||
- api : fix: XXH3_state_t is movable, identified by @koraa | ||
- api : fix: state is correctly aligned in AVX mode (unlike `malloc()`), by @easyaspi314 | ||
- api : fix: streaming generated wrong values in some combination of random ingestion lengths, reported by @WayneD | ||
- cli : fix unicode print on Windows, by @easyaspi314 | ||
- cli : can `-c` check file generated by sfv | ||
- build: `make DISPATCH=1` generates `xxhsum` and `libxxhash` with runtime vector detection (x86/x64 only) | ||
- install: cygwin installation support | ||
- doc : Cryptol specification of XXH32 and XXH64, by @weaversa | ||
|
||
v0.7.3 | ||
- perf: improved speed for large inputs (~+20%) | ||
- perf: improved latency for small inputs (~10%) | ||
- perf: s390x Vectorial code, by @easyaspi314 | ||
- cli: improved support for Unicode filenames on Windows, thanks to @easyaspi314 and @t-mat | ||
- api: `xxhash.h` can now be included in any order, with and without `XXH_STATIC_LINKING_ONLY` and `XXH_INLINE_ALL` | ||
- build: xxHash's implementation transferred into `xxhash.h`. No more need to have `xxhash.c` in the `/include` directory for `XXH_INLINE_ALL` to work | ||
- install: created pkg-config file, by @bket | ||
- install: VCpkg installation instructions, by @LilyWangL | ||
- doc: Highly improved code documentation, by @easyaspi314 | ||
- misc: New test tool in `/tests/collisions`: brute force collision tester for 64-bit hashes | ||
|
||
v0.7.2 | ||
- Fixed collision ratio of `XXH128` for some specific input lengths, reported by @svpv | ||
- Improved `VSX` and `NEON` variants, by @easyaspi314 | ||
- Improved performance of scalar code path (`XXH_VECTOR=0`), by @easyaspi314 | ||
- `xxhsum`: can generate 128-bit hashes with the `-H2` option (note: for experimental purposes only! `XXH128` is not yet frozen) | ||
- `xxhsum`: option `-q` removes status notifications | ||
|
||
v0.7.1 | ||
- Secret first: the algorithm computation can be altered by providing a "secret", which is any blob of bytes, of size >= `XXH3_SECRET_SIZE_MIN`. | ||
- `seed` is still available, and acts as a secret generator | ||
- updated `ARM NEON` variant by @easyaspi314 | ||
- Streaming implementation is available | ||
- Improve compatibility and performance with Visual Studio, with help from @aras-p | ||
- Better integration when using `XXH_INLINE_ALL`: do not pollute host namespace, use its own macros, such as `XXH_ASSERT()`, `XXH_ALIGN`, etc. | ||
- 128-bit variant provides helper functions for comparison of hashes. | ||
- Better `clang` generation of `rotl` instruction, thanks to @easyaspi314 | ||
- `XXH_REROLL` build macro to reduce binary size, by @easyaspi314 | ||
- Improved `cmake` script, by @Mezozoysky | ||
- Full benchmark program provided in `/tests/bench` |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
# Doxygen config for xxHash | ||
DOXYFILE_ENCODING = UTF-8 | ||
|
||
PROJECT_NAME = "xxHash" | ||
PROJECT_NUMBER = "0.8.0" | ||
PROJECT_BRIEF = "Extremely fast non-cryptographic hash function" | ||
OUTPUT_DIRECTORY = doxygen | ||
OUTPUT_LANGUAGE = English | ||
|
||
# We already separate the internal docs. | ||
INTERNAL_DOCS = YES | ||
# Consistency | ||
SORT_MEMBER_DOCS = NO | ||
BRIEF_MEMBER_DESC = YES | ||
REPEAT_BRIEF = YES | ||
|
||
# Warnings | ||
QUIET = YES | ||
# Until we document everything | ||
WARN_IF_UNDOCUMENTED = NO | ||
|
||
# TODO: Add the other files. It is just xxhash.h for now. | ||
FILE_PATTERNS = xxhash.h xxh_x86dispatch.c | ||
# Note: xxHash's source files are technically ASCII only. | ||
INPUT_ENCODING = UTF-8 | ||
TAB_SIZE = 4 | ||
MARKDOWN_SUPPORT = YES | ||
|
||
# xxHash is a C library | ||
OPTIMIZE_OUTPUT_FOR_C = YES | ||
# So we can document the internals | ||
EXTRACT_STATIC = YES | ||
# Document the macros | ||
MACRO_EXPANSION = YES | ||
EXPAND_ONLY_PREDEF = YES | ||
# Predefine some macros to clean up the output. | ||
PREDEFINED = "XXH_DOXYGEN=" \ | ||
"XXH_PUBLIC_API=" \ | ||
"XXH_FORCE_INLINE=static inline" \ | ||
"XXH_NO_INLINE=static" \ | ||
"XXH_RESTRICT=restrict" \ | ||
"XSUM_API=" \ | ||
"XXH_STATIC_LINKING_ONLY" \ | ||
"XXH_IMPLEMENTATION" \ | ||
"XXH_ALIGN(N)=alignas(N)" \ | ||
"XXH_ALIGN_MEMBER(align,type)=alignas(align) type" | ||
|
||
# We want HTML docs | ||
GENERATE_HTML = YES | ||
HTML_OUTPUT = html | ||
HTML_FILE_EXTENSION = .html | ||
# Tweak the colors a bit | ||
HTML_COLORSTYLE_HUE = 220 | ||
HTML_COLORSTYLE_GAMMA = 100 | ||
HTML_COLORSTYLE_SAT = 100 | ||
|
||
# We don't want LaTeX. | ||
GENERATE_LATEX = NO |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
xxHash Library | ||
Copyright (c) 2012-2020 Yann Collet | ||
All rights reserved. | ||
|
||
BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) | ||
|
||
Redistribution and use in source and binary forms, with or without modification, | ||
are permitted provided that the following conditions are met: | ||
|
||
* Redistributions of source code must retain the above copyright notice, this | ||
list of conditions and the following disclaimer. | ||
|
||
* Redistributions in binary form must reproduce the above copyright notice, this | ||
list of conditions and the following disclaimer in the documentation and/or | ||
other materials provided with the distribution. | ||
|
||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR | ||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
Oops, something went wrong.