-
v0.8.1 Stable
released this
2021-11-29 12:34:10 -06:00 | 785 commits to dev since this releasexxHash
v0.8.1is a general clean up of the code base, following the stabilization ofxxh3andxxh128inv0.8.0.
There are a few welcomed evolutions and improvements, but for the most part, this release consists of fixes for multiple corner cases and scenarios, that shall improve usability oflibxxhashandxxhsumacross a wide range of platforms.
StableAPIentry points have not changed, all entry points labelled "stable" will continue to work as intended in this release and future ones.Improved performance
While the "big picture" is unchanged, there are a few notable improvements.
XXH3/XXH128feature a large speed improvement in streaming mode, which is particularly sensible forgccandMSVC(clangwas already in good shape), by as much as +40%, making streaming speed essentially on par with single-shot mode when ingesting large quantities of data.XXH64and evenXXH32feature improved latency performance for small inputs of random sizes. Perhaps as importantly, their binary size is smaller.New capabilities
There is a new experimental
XXH3variant, named_withSecretandSeed(). In a nutshell, it combinesseedfor small inputs, withsecretfor large inputs.
The main driver for this variant is a wish to skip the delay fromsecret's transparent generation when using_withSeed()variant with large inputs, resulting in measurable performance drop for "not so large" sizes (< 1 KB) (note: this delay is insensible for "large" inputs, such as > 256 KB). Coupled with new functionXXH3_generateSecret_fromSeed(), which generates the same secret as the one generated internally when using the_withSeed()variant, it results in exactly the same return values, while skipping thesecretgeneration stage, thus improving speed.Experimental
XXH3_generateSecret()has been extended to allow generation ofsecretof any size (though respecting the specification's minimum size). It's generally recommended to use this generator to ensure a source of "high entropy" for thesecret.On the CLI front, a highly demanded
xxhsumfeature was an ability to generateXXH3checksum values. This is achieved inv0.8.1, using the--tagformat, which ensures thatXXH3results cannot be confused with (default)XXH64ones, even though they feature the same 64-bit width.Detailed changelist
- perf : much improved performance for
XXH3streaming variants, notably ongccandmsvc - perf : improved
XXH64speed and latency on small inputs - perf : small
XXH32speed and latency improvement on small inputs of random size - perf : minor stack usage improvement for
XXH32andXXH64 - api : new experimental variants
XXH3_*_withSecretandSeed() - api : updated
XXH3_generateSecret(), can now generate secret of any size (>= XXH3_SECRET_SIZE_MIN) - cli :
xxhsumcan now generate and checkXXH3checksums, using command-H3 - build: can build xxhash without
XXH3, with new build macroXXH_NO_XXH3 - build: fix
xxh_x86dispatchbuild with MSVC, by @apankrat - build:
XXH_INLINE_ALLcan always be used safely, even afterXXH_NAMESPACEor a previousXXH_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_POINTERis no longer necessary, all functions can acceptNULLinput pointers, as long assize == 0 - misc : complete refactor of CI tests on Github Actions, offering much larger coverage, by @t-mat
- misc :
xxhsumcode base split into multiple specialized units, within directorycli/, by @easyaspi314
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- perf : much improved performance for