-
released this
2024-03-22 00:05:51 +02:00 | 564 commits to dev since this releaseThis release highlights the deployment of Google Chrome 123, introducing zstd-encoding for Web traffic, introduced as a preferable option for compression of dynamic contents. With limited web server support for zstd-encoding due to its novelty, we are launching an updated Zstandard version to facilitate broader adoption.
New stable parameter ZSTD_c_targetCBlockSize
Using zstd compression for large documents over the Internet, data is segmented into smaller blocks of up to 128 KB, for incremental updates. This is crucial for applications like Chrome that process parts of documents as they arrive. However, on slow or congested networks, there can be some brief unresponsiveness in the middle of a block transmission, delaying update. To mitigate such scenarios, libzstd introduces the new parameter ZSTD_c_targetCBlockSize, enabling the division of blocks into even smaller segments to enhance initial byte delivery speed. Activating this feature incurs a cost, both runtime (equivalent to -2% speed at level 8) and a slight compression efficiency decrease (<0.1%), but offers some interesting latency reduction, notably beneficial in areas with less powerful network infrastructure.Granular binary size selection
libzstd provides build customization, including options to compile only the compression or decompression modules, minimizing binary size. Enhanced in v1.5.6 (source), it now allows for even finer control by enabling selective inclusion or exclusion of specific components within these modules. This advancement aids applications needing precise binary size management.Miscellaneous Enhancements
This release includes various minor enhancements and bug fixes to enhance user experience. Key updates include an expanded list of recognized compressed file suffixes for the --exclude-compressed flag, improving efficiency by skipping presumed incompressible content. Furthermore, compatibility has been broadened to include additional chipsets (sparc64, ARM64EC, risc-v) and operating systems (QNX, AIX, Solaris, HP-UX).Change Log
api: Promote ZSTD_c_targetCBlockSize to Stable API by @felixhandte
api: new experimental ZSTD_d_maxBlockSize parameter, to reduce streaming decompression memory, by @terrelln
perf: improve performance of param ZSTD_c_targetCBlockSize, by @Cyan4973
perf: improved compression of arrays of integers at high compression, by @Cyan4973
lib: reduce binary size with selective built-time exclusion, by @felixhandte
lib: improved huffman speed on small data and linux kernel, by @terrelln
lib: accept dictionaries with partial literal tables, by @terrelln
lib: fix CCtx size estimation with external sequence producer, by @embg
lib: fix corner case decoder behaviors, by @Cyan4973 and @aimuz
lib: fix zdict prototype mismatch in static_only mode, by @ldv-alt
lib: fix several bugs in magicless-format decoding, by @embg
cli: add common compressed file types to --exclude-compressed by @daniellerozenblit (requested by @dcog989)
cli: fix mixing -c and -o commands with --rm, by @Cyan4973
cli: fix erroneous exclusion of hidden files with --output-dir-mirror by @felixhandte
cli: improved time accuracy on BSD, by @felixhandte
cli: better errors on argument parsing, by @KapJI
tests: better compatibility with older versions of grep, by @Cyan4973
tests: lorem ipsum generator as default content generator, by @Cyan4973
build: cmake improvements by @terrelln, @sighingnow, @gjasny, @JohanMabille, @Saverio976, @gruenich, @teo-tsirpanis
build: bazel support, by @jondo2010
build: fix cross-compiling for AArch64 with lld by @jcelerier
build: fix Apple platform compatibility, by @nidhijaju
build: fix Visual 2012 and lower compatibility, by @Cyan4973
build: improve win32 support, by @DimitriPapadopoulos
build: better C90 compliance for zlibWrapper, by @emaste
port: make: fat binaries on macos, by @mredig
port: ARM64EC compatibility for Windows, by @dunhor
port: QNX support by @klausholstjacobsen
port: MSYS2 and Cygwin makefile installation and test support, by @QBos07
port: risc-v support validation in CI, by @Cyan4973
port: sparc64 support validation in CI, by @Cyan4973
port: AIX compatibility, by @likema
port: HP-UX compatibility, by @likema
doc: Improved specification accuracy, by @elasota
bug: Fix and deprecate ZSTD_generateSequences (#3981), by @terrellnFull change list (auto-generated)
Add win32 to windows-artifacts.yml by @Kim-SSi in #3600
Fix mmap-dict help output by @daniellerozenblit in #3601
[oss-fuzz] Fix simple_round_trip fuzzer with overlapping decompression by @terrelln in #3612
Reduce streaming decompression memory by (128KB - blockSizeMax) by @terrelln in #3616
removed travis & appveyor scripts by @Cyan4973 in #3621
Add ZSTD_d_maxBlockSize parameter by @terrelln in #3617
[doc] add decoder errata paragraph by @Cyan4973 in #3620
add makefile entry to build fat binary on macos by @mredig in #3614
Disable unused variable warning in msan configurations by @danlark1 in #3624
#3634
Allow Build-Time Exclusion of Individual Compression Strategies by @felixhandte in #3623
Get zstd working with ARM64EC on Windows by @dunhor in #3636
minor : update streaming_compression example by @Cyan4973 in #3631
Fix UBSAN issue (zero addition to NULL) by @terrelln in #3658
Add options in Makefile to cmake by @sighingnow in #3657
fix a minor inefficiency in compress_superblock by @Cyan4973 in #3668
Fixed a bug in the educational decoder by @Cyan4973 in #3659
changed LLU suffix into ULL for Visual 2012 and lower by @Cyan4973 in #3664
fixed decoder behavior when nbSeqs==0 is encoded using 2 bytes by @Cyan4973 in #3669
detect extraneous bytes in the Sequences section by @Cyan4973 in #3674
Bitstream produces only zeroes after an overflow event by @Cyan4973 in #3676
Update FreeBSD CI images to latest supported releases by @emaste in #3684
Clean up a false error message in the LDM debug log by @embg in #3686
Hide ASM symbols on Apple platforms by @nidhijaju in #3688
Changed the decoding loop to detect more invalid cases of corruption sooner by @Cyan4973 in #3677
Fix Intel Xcode builds with assembly by @gjasny in #3665
Save one byte on the frame epilogue by @Coder-256 in #3700
Update fileio.c: fix build failure with enabled LTO by @LocutusOfBorg in #3695
fileio_asyncio: handle malloc fails in AIO_ReadPool_create by @void0red in #3704
Fix typographical error in README.md by @nikohoffren in #3701
Fixed typo by @alexsifivetw in #3712
Improve dual license wording in README by @terrelln in #3718
Unpoison Workspace Memory Before Custom-Free by @felixhandte in #3725
added ZSTD_decompressDCtx() benchmark option to fullbench by @Cyan4973 in #3726
No longer reject dictionaries with literals maxSymbolValue < 255 by @terrelln in #3731
fix: ZSTD_BUILD_DECOMPRESSION message by @0o001 in #3728
Updated Makefiles for full MSYS2 and Cygwin installation and testing … by @QBos07 in #3720
Work around nullptr-with-nonzero-offset warning by @terrelln in #3738
Fix & refactor Huffman repeat tables for dictionaries by @terrelln in #3737
zdictlib: fix prototype mismatch by @ldv-alt in #3733
Fixed zstd cmake shared build on windows by @JohanMabille in #3739
Added qnx in the posix test section of platform.h by @klausholstjacobsen in #3745
added some documentation on ZSTD_estimate*Size() variants by @Cyan4973 in #3755
Improve macro guards for ZSTD_assertValidSequence by @terrelln in #3770
Stop suppressing pointer-overflow UBSAN errors by @terrelln in #3776
fix x32 tests on Github CI by @Cyan4973 in #3777
Fix new typos found by codespell by @DimitriPapadopoulos in #3771
Do not test WIN32, instead test _WIN32 by @DimitriPapadopoulos in #3772
Fix a very small formatting typo in the lib/README.md file by @dloidolt in #3763
Fix pzstd Makefile to allow setting DESTDIR and BINDIR separately by @paulmenzel in #3752
Remove FlexArray pattern from ZSTDMT by @Cyan4973 in #3786
solving flexArray issue #3785 in fse by @Cyan4973 in #3789
Add doc on how to use it with cmake FetchContent by @Saverio976 in #3795
Correct FSE probability bit consumption in specification by @elasota in #3806
Add Bazel module instructions to README.md by @jondo2010 in #3812
Clarify that a stream containing too many Huffman weights is invalid by @elasota in #3813
[cmake] Require CMake version 3.5 or newer by @gruenich in #3807
Three fixes for the Linux kernel by @terrelln in #3822
[huf] Improve fast huffman decoding speed in linux kernel by @terrelln in #3826
[huf] Improve fast C & ASM performance on small data by @terrelln in #3827
update xxhash library to v0.8.2 by @Cyan4973 in #3820
Modernize macros to use do { } while (0) by @terrelln in #3831
Clarify that the presence of weight value 1 is required, and a lone implied 1 weight is invalid by @elasota in #3814
Move offload API params into ZSTD_CCtx_params by @embg in #3839
Update FreeBSD CI: drop 12.4 (nearly EOL) by @emaste in #3845
Make offload API compatible with static CCtx by @embg in #3854
zlibWrapper: convert to C89 / ANSI C by @emaste in #3846
Fix a nullptr dereference in ZSTD_createCDict_advanced2() by @michoecho in #3847
Cirrus-CI: Add FreeBSD 14 by @emaste in #3855
CI: meson: use builtin handling for MSVC by @eli-schwartz in #3858
cli: better errors on argument parsing by @KapJI in #3850
Clarify that probability tables must not contain non-zero probabilities for invalid values by @elasota in #3817
[x-compile] Fix cross-compiling for AArch64 with lld by @jcelerier in #3760
playTests.sh does no longer needs grep -E by @Cyan4973 in #3865
minor: playTests.sh more compatible with older versions of grep by @Cyan4973 in #3877
disable Intel CET Compatibility tests by @Cyan4973 in #3884
improve cmake test by @Cyan4973 in #3883
add sparc64 compilation test by @Cyan4973 in #3886
add a lorem ipsum generator by @Cyan4973 in #3890
Update Dependency in Intel CET Test; Re-Enable Test by @felixhandte in #3893
Improve compression of Arrays of Integers (High compression mode) by @Cyan4973 in #3895
[Zstd] Less verbose log for patch mode. by @sandreenko in #3899
fix 5921623844651008 by @Cyan4973 in #3900
Fix fuzz issue 5131069967892480 by @Cyan4973 in #3902
Advertise Availability of Security Vulnerability Notifications by @felixhandte in #3909
updated setup-msys2 to v2.22.0 by @Cyan4973 in #3914
Lorem Ipsum generator update by @Cyan4973 in #3913
Reduce scope of variables by @gruenich in #3903
Improve speed of ZSTD_c_targetCBlockSize by @Cyan4973 in #3915
More regular block sizes with targetCBlockSize by @Cyan4973 in #3917
removed sprintf usage from zstdcli.c by @Cyan4973 in #3916
Export a zstd::libzstd CMake target if only static or dynamic linkage is specified. by @teo-tsirpanis in #3811
fix version of actions/checkout by @Cyan4973 in #3926
minor Makefile refactoring by @Cyan4973 in #3753
lib/decompress: check for reserved bit corruption in zstd by @aimuz in #3840
Fix state table formatting by @elasota in #3816
Specify offset 0 as invalid and specify required fixup behavior by @elasota in #3824
update -V documentation by @Cyan4973 in #3928
fix LLU->ULL by @Cyan4973 in #3929
Fix building xxhash on AIX 5.1 by @likema in #3860
Fix building on HP-UX 11.11 PA-RISC by @likema in #3862
Fix AsyncIO reading seed queueing by @yoniko in #3940
Use ZSTD_LEGACY_SUPPORT=5 in "make test" by @embg in #3943
Pin sanitizer CI jobs to ubuntu-20.04 by @embg in #3945
chore: fix some typos by @acceptacross in #3949
new method to deal with offset==0 erroneous edge case by @Cyan4973 in #3937
add tests inspired from #2927 by @Cyan4973 in #3948
cmake refactor: move HP-UX specific logic into its own function by @Cyan4973 in #3946
Fix #3719 : mixing -c, -o and --rm by @Cyan4973 in #3942
minor: fix incorrect debug level by @Cyan4973 in #3936
add RISC-V emulation tests to Github CI by @Cyan4973 in #3934
prevent XXH64 from being autovectorized by XXH512 by default by @Cyan4973 in #3933
Stop Hardcoding the POSIX Version on BSDs by @felixhandte in #3952
Convert the CircleCI workflow to a GitHub Actions workflow by @jk0 in #3901
Add common compressed file types to --exclude-compressed by @daniellerozenblit in #3951
Export ZSTD_LEGACY_SUPPORT in tests/Makefile by @embg in #3955
Exercise ZSTD_findDecompressedSize() in the simple decompression fuzzer by @embg in #3959
Update ZSTD_RowFindBestMatch comment by @yoniko in #3947
Add the zeroSeq sample by @Cyan4973 in #3954
[cpu] Backport fix for rbx clobbering on Windows with Clang by @terrelln in #3957
Do not truncate file name in verbose mode by @Cyan4973 in #3956
updated documentation by @Cyan4973 in #3958
[asm][aarch64] Mark that BTI and PAC are supported by @terrelln in #3961
Use utimensat() on FreeBSD by @felixhandte in #3960
reduce the amount of #include in cover.h by @Cyan4973 in #3962
Remove Erroneous Exclusion of Hidden Files and Folders in --output-dir-mirror by @felixhandte in #3963
Promote ZSTD_c_targetCBlockSize Parameter to Stable API by @felixhandte in #3964
[cmake] Always create libzstd target by @terrelln in #3965
Remove incorrect docs regarding ZSTD_findFrameCompressedSize() by @embg in #3967
add line number to debug traces by @Cyan4973 in #3966
bump version number by @Cyan4973 in #3969
Export zstd's public headers via BUILD_INTERFACE by @terrelln in #3968
Fix bug with streaming decompression of magicless format by @embg in #3971
pzstd: use c++14 without conditions by @kanavin in #3682
Fix bugs in simple decompression fuzzer by @yoniko in #3978
Fuzzing and bugfixes for magicless-format decoding by @embg in #3976
Fix & fuzz ZSTD_generateSequences by @terrelln in #3981
Fail on errors when building fuzzers by @yoniko in #3979
[cmake] Emit warnings for contradictory build settings by @terrelln in #3975
Document the process for adding a new fuzzer by @embg in #3982
Fix -Werror=pointer-arith in fuzzers by @embg in #3983
Doc update by @Cyan4973 in #3977
v1.5.6 by @Cyan4973 in #3984
New Contributors
@Kim-SSi made their first contribution in #3600
@mredig made their first contribution in #3614
@dunhor made their first contribution in #3636
@sighingnow made their first contribution in #3657
@nidhijaju made their first contribution in #3688
@gjasny made their first contribution in #3665
@Coder-256 made their first contribution in #3700
@LocutusOfBorg made their first contribution in #3695
@void0red made their first contribution in #3704
@nikohoffren made their first contribution in #3701
@alexsifivetw made their first contribution in #3712
@0o001 made their first contribution in #3728
@QBos07 made their first contribution in #3720
@JohanMabille made their first contribution in #3739
@klausholstjacobsen made their first contribution in #3745
@Saverio976 made their first contribution in #3795
@elasota made their first contribution in #3806
@jondo2010 made their first contribution in #3812
@gruenich made their first contribution in #3807
@michoecho made their first contribution in #3847
@KapJI made their first contribution in #3850
@jcelerier made their first contribution in #3760
@sandreenko made their first contribution in #3899
@teo-tsirpanis made their first contribution in #3811
@aimuz made their first contribution in #3840
@acceptacross made their first contribution in #3949
@jk0 made their first contribution in #3901
Full Changelog: v1.5.5...v1.5.6Downloads
mirror of
https://github.com/facebook/zstd.git
synced 2025-03-04 16:15:54 +02:00