| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| lz4-1.9.4.tar.gz.sha256 | 2023-09-11 | 83 Bytes | |
| lz4-1.9.4.tar.gz | 2023-09-11 | 354.1 kB | |
| lz4_win32_v1_9_4.zip | 2022-08-26 | 352.7 kB | |
| lz4_win64_v1_9_4.zip | 2022-08-26 | 618.8 kB | |
| LZ4 v1.9.4.tar.gz | 2022-08-15 | 354.1 kB | |
| LZ4 v1.9.4.zip | 2022-08-15 | 465.8 kB | |
| README.md | 2022-08-15 | 7.6 kB | |
| Totals: 7 Items | 2.2 MB | 52 | |
LZ4 v1.9.4 is a maintenance release, featuring a substantial amount (~350 commits) of minor fixes and improvements, making it a recommended upgrade. The stable portion of liblz4 API is unmodified, making this release a drop-in replacement for existing features.
Improved decompression speed
Performance wasn't a major focus of this release, but there are nonetheless a few improvements worth mentioning :
- Decompression speed on high-end ARM64 platform is improved, by ~+20%. This is notably the case for recent M1 chips, featured in macbook laptops and nucs. Some server-class ARM64 cpus are also impacted, most notably when employing gcc as a compiler. Due to the diversity of aarch64 chips in service, it's still difficult to have a one-size-fits-all policy for this platform.
- For the specific scenario of data compressed with -BD4 setting (small blocks, <= 64 KB, linked) decompressed block-by-block into a flush buffer, decompression speed is improved ~+70%. This is most visible in the lz4 CLI, which triggers this exact scenario, but since the improvement is achieved at library level, it may also apply to other scenarios.
- Additionally, for compressed data employing the lz4frame format (native format of lz4 CLI), it's possible to ignore checksum validation during decompression, resulting in speed improvements of ~+40% . This capability is exposed at both CLI (see --no-crc) and library levels.
New experimental library capabilities
New liblz4 capabilities are provided in this version. They are considered experimental at this stage, and the most useful ones will be upgraded as candidate "stable" status in an upcoming release :
- Ability to require lz4frame API to employ custom allocators for dynamic allocation.
- Partial decompression of LZ4 blocks compressed with a dictionary, using LZ4_decompress_safe_partial_usingDict() by @yawqi
- Create lz4frame blocks which are intentionally uncompressed, using LZ4F_uncompressedUpdate(), by @alexmohr
- New API unit lz4file, abstracting File I/O operations for higher-level programs and libraries, by @anjiahao1
- liblz4 can be built for freestanding environments, using the new build macro LZ4_FREESTANDING, by @t-mat. In which case, it will not link to any standard library, disable all dynamic allocations, and rely on user-provided memcpy() and memset() operations.
Miscellaneous
- Fixed an annoying
Makefilebug introduced inv1.9.3, in whichCFLAGSwas no longer respected when provided from environment variable. The root cause was an obscure bug inmake, which has been fixed upstream following this bug report. There is no need to updatemaketo buildliblz4though, theMakefilehas been modified to circumvent the issue and remains compatible with older versions ofmake. Makefileis compatible with-jparallel run, including to run parallel tests (make -j test).- Documentation of LZ4 Block format has been updated, featuring notably a paragraph "Implementation notes", underlining common pitfalls for new implementers of the format
Changes list
Here is a more detailed list of updates introduced in v1.9.4 :
- perf : faster decoding speed (~+20%) on Apple Silicon platforms, by @zeux
- perf : faster decoding speed (~+70%) for
-BD4setting in CLI - api : new function
LZ4_decompress_safe_partial_usingDict()by @yawqi - api :
lz4frame: ability to provide custom allocators at state creation - api : can skip checksum validation for improved decoding speed
- api : new experimental unit
lz4filefor file i/o API, by @anjiahao1 - api : new experimental function
LZ4F_uncompressedUpdate(), by @alexmohr - cli :
--listworks onstdininput, by @Low-power - cli :
--no-crcdoes not produce (compression) nor check (decompression) checksums - cli : fix:
--testand--listproduce an error code when parsing invalid input - cli : fix:
--test -mdoes no longer create decompressed file artifacts - cli : fix: support skippable frames when passed via
stdin, reported by @davidmankin - build: fix:
MakefilerespectsCFLAGSdirectives passed via environment variable - build:
LZ4_FREESTANDING, new build macro for freestanding environments, by @t-mat - build:
makeandmake testare compatible with-jparallel run - build: AS/400 compatibility, by @jonrumsey
- build: Solaris 10 compatibility, by @pekdon
- build: MSVC 2022 support, by @t-mat
- build: improved meson script, by @eli-schwartz
- doc : Updated LZ4 block format, provide an "implementation notes" section
New Contributors
- @emaxerrno made their first contribution in https://github.com/lz4/lz4/pull/884
- @servusdei2018 made their first contribution in https://github.com/lz4/lz4/pull/886
- @aqrit made their first contribution in https://github.com/lz4/lz4/pull/898
- @attilaolah made their first contribution in https://github.com/lz4/lz4/pull/919
- @XVilka made their first contribution in https://github.com/lz4/lz4/pull/922
- @hmaarrfk made their first contribution in https://github.com/lz4/lz4/pull/962
- @ThomasWaldmann made their first contribution in https://github.com/lz4/lz4/pull/965
- @sigiesec made their first contribution in https://github.com/lz4/lz4/pull/964
- @klebertarcisio made their first contribution in https://github.com/lz4/lz4/pull/973
- @jasperla made their first contribution in https://github.com/lz4/lz4/pull/972
- @GabeNI made their first contribution in https://github.com/lz4/lz4/pull/1001
- @ITotalJustice made their first contribution in https://github.com/lz4/lz4/pull/1005
- @lifegpc made their first contribution in https://github.com/lz4/lz4/pull/1000
- @eloj made their first contribution in https://github.com/lz4/lz4/pull/1011
- @pekdon made their first contribution in https://github.com/lz4/lz4/pull/999
- @fanzeyi made their first contribution in https://github.com/lz4/lz4/pull/1017
- @a1346054 made their first contribution in https://github.com/lz4/lz4/pull/1024
- @kmou424 made their first contribution in https://github.com/lz4/lz4/pull/1026
- @kostasdizas made their first contribution in https://github.com/lz4/lz4/pull/1030
- @fwessels made their first contribution in https://github.com/lz4/lz4/pull/1032
- @zeux made their first contribution in https://github.com/lz4/lz4/pull/1040
- @DimitriPapadopoulos made their first contribution in https://github.com/lz4/lz4/pull/1042
- @mcfi made their first contribution in https://github.com/lz4/lz4/pull/1054
- @eli-schwartz made their first contribution in https://github.com/lz4/lz4/pull/1049
- @leonvictor made their first contribution in https://github.com/lz4/lz4/pull/1052
- @tristan957 made their first contribution in https://github.com/lz4/lz4/pull/1064
- @anjiahao1 made their first contribution in https://github.com/lz4/lz4/pull/1068
- @danyeaw made their first contribution in https://github.com/lz4/lz4/pull/1075
- @yawqi made their first contribution in https://github.com/lz4/lz4/pull/1093
- @nathannaveen made their first contribution in https://github.com/lz4/lz4/pull/1088
- @alexmohr made their first contribution in https://github.com/lz4/lz4/pull/1094
- @yoniko made their first contribution in https://github.com/lz4/lz4/pull/1100
- @jonrumsey made their first contribution in https://github.com/lz4/lz4/pull/1104
- @dpelle made their first contribution in https://github.com/lz4/lz4/pull/1125
- @SpaceIm made their first contribution in https://github.com/lz4/lz4/pull/1133