LZ4 v1.9.3 is a maintenance release, offering more than 200+ commits to fix multiple corner cases and build scenarios. Update is recommended. Existing liblz4 API is not modified, so it should be a drop-in replacement.
Changes list
Here is a more detailed list of updates introduced in v1.9.3 :
perf: highly improved speed in kernel space, by @terrelln
perf: faster speed with Visual Studio, thanks to @wolfpld and @remittor
perf: improved dictionary compression speed, by @felixhandte
perf: fixed LZ4_compress_HC_destSize() ratio, detected by @hsiangkao
perf: reduced stack usage in high compression mode, by @Yanpas
api : LZ4_decompress_safe_partial() supports unknown compressed size, requested by @jfkthame
api : improved LZ4F_compressBound() with automatic flushing, by Christopher Harvie
api : can (de)compress to/from NULL without UBs
api : fix alignment test on 32-bit systems (state initialization)
api : fix LZ4_saveDictHC() in corner case scenario, detected by @IgorKorkin
cli : compress multiple files using the legacy format, by Filipe Calasans
cli : benchmark mode supports dictionary, by @rkoradi
cli : fix --fast with large argument, detected by @picoHz
build: link to user-defined memory functions with LZ4_USER_MEMORY_FUNCTIONS
build: contrib/cmake_unofficial/ moved to build/cmake/
build: visual/* moved to build/
build: updated meson script, by @neheb
build: tinycc support, by Anton Kochkov
install: Haiku support, by Jerome Duval
doc : updated LZ4 frame format, clarify EndMark
pkglint --only "https instead of http" -r -F
With manual adjustments afterwards since pkglint 19.4.4 fixed a few
indentations in unrelated lines.
This mainly affects projects hosted at SourceForce, as well as
freedesktop.org, CTAN and GNU.
LZ4 v1.9.2
fix : out-of-bound read in exceptional circumstances when using decompress_partial()
fix : slim opportunity for out-of-bound write with compress_fast() with a large enough input and when providing an output smaller than recommended (< LZ4_compressBound(inputSize))
fix : rare data corruption bug with LZ4_compress_destSize()
fix : data corruption bug when Streaming with an Attached Dict in HC Mode
perf: enable LZ4_FAST_DEC_LOOP on aarch64/GCC by default
perf: improved lz4frame streaming API speed
perf: speed up lz4hc on slow patterns when using external dictionary
api: better in-place decompression and compression support
cli : --list supports multi-frames files
cli: --version outputs to stdout
cli : add option --best as an alias of -12
misc: Integration into oss-fuzz
LZ4 v1.9.1
Changes
fix : decompression functions were reading a few bytes beyond input size
api : fix : lz4frame initializers compatibility with c++
cli : added command --list
build: improved Windows build
build: AIX, by Norman Green
LZ4 v1.9.0
This release brings an assortment of small improvements and bug fixes, as detailed below :
perf: large decompression speed improvement on x86/x64 (up to +20%)
api : changed : _destSize() compression variants are promoted to stable API
api : new : LZ4_initStream(HC), replacing LZ4_resetStream(HC)
api : changed : LZ4_resetStream(HC) as recommended reset function, for better performance on small data
cli : support custom block sizes
build: source code can be amalgamated, by Bing Xu
build: added meson build
build: new build macros : LZ4_DISTANCE_MAX, LZ4_FAST_DEC_LOOP
install: MidnightBSD
install: msys2 on Windows 10
- perf: minor decompression speed improvement (~+2%) with gcc
- fix : corruption in v1.8.2 at level 9 for files > 64KB under rare
conditions (#560)
- cli : new command --fast, by @jennifermliu
- api : LZ4_decompress_safe_partial() now decodes exactly the nb of
bytes requested (feature request #566)
- build : added Haiku target, by @fbrosson, and MidnightBSD, by @laffer1
- doc : updated documentation regarding dictionary compression
v1.8.2
perf: *much* faster dictionary compression on small files
perf: improved decompression speed and binary size
perf: slightly faster HC compression and decompression speed
perf: very small compression ratio improvement
fix : compression compatible with low memory addresses (< 0xFFFF)
fix : decompression segfault when provided with NULL input
cli : new command --favor-decSpeed
cli : benchmark mode more accurate for small inputs
fullbench : can bench _destSize() variants
doc : clarified block format parsing restrictions
v1.8.1.2:
It's the same as v1.8.1, but the version number in source code has been fixed.
The version number is used in cli and documentation display, to create the full name of dynamic library, and can be requested via LZ4_versionNumber().
v1.8.1
perf : faster and stronger ultra modes (levels 10+)
perf : slightly faster compression and decompression speed
perf : fix bad degenerative case
fix : decompression failed when using a combination of extDict + low memory address
cli : support for dictionary compression (-D)
cli : fix : lz4 -d --rm preserves timestamp
cli : fix : do not modify /dev/null permission as root
api : _destSize() variant supported for all compression levels
build : make and make test compatible with -jX
build : can control LZ4LIB_VISIBILITY macro
install: fix man page directory
cli : fix : do not modify /dev/null permissions, reported by @Maokaman1
cli : added GNU separator -- specifying that all following arguments are files
cli : restored -BX command enabling block checksum
API : added LZ4_compress_HC_destSize(), by @remittor
API : added LZ4F_resetDecompressionContext()
API : lz4frame : negative compression levels trigger fast acceleration, request by @llchan
API : lz4frame : can control block checksum and dictionary ID
API : fix : expose obsolete decoding functions, reported by @cyfdecyf
API : experimental : lz4frame_static.h : new dictionary compression API
build : fix : static lib installation, by @ido
build : dragonFlyBSD, OpenBSD, NetBSD supported
build : LZ4_MEMORY_USAGE can be modified at compile time, through external define
doc : Updated LZ4 Frame format to v1.6.0, restoring Dictionary-ID field in header
doc : lz4's API manual in .html format, by @inikep
- lz4hc : new high compression mode : levels 10-12 compress more and slower
- lz4cat : fix : works with relative path (#284) and stdin (#285)
- cli : fix minor notification when using -r recursive mode
- API : lz4frame : LZ4F_frameBound(0) gives upper bound of *flush() and *End() operations
- doc : markdown version of man page
- build : Makefile : fix make -jX lib+exe concurrency
- build : cmake : improvements by Michal Gorny
Changes since release 131:
v1.7.4.2
- fix : Makefile : release build compatible with PIE and customized
compilation directives provided through environment variables (#274,
reported by Antoine Martin)
v1.7.4
- Improved : much better speed in -mx32 mode
- cli : fix : Large file support in 32-bits mode on Mac OS-X
- fix : compilation on gcc 4.4 (#272), reported by Antoine Martin
v1.7.3
- Changed : moved to versioning; package, cli and library have same
version number
- Improved: Small decompression speed boost
- Improved: Small compression speed improvement on 64-bits systems
- Improved: Small compression ratio and speed improvement on small files
- Improved: Significant speed boost on ARMv6 and ARMv7
- Fix : better ratio on 64-bits big-endian targets
- Improved cmake build script, by Evan Nemerson
- New liblz4-dll project, by Przemyslaw Skibinki
- Makefile: Generates object files (*.o) for faster (re)compilation on
low power systems
- cli : new : --rm and --help commands
- cli : new : preserved file attributes, by Przemyslaw Skibinki
- cli : fix : crash on some invalid inputs
- cli : fix : -t correctly validates lz4-compressed files, by Nick
Terrell
- cli : fix : detects and reports fread() errors, thanks to Hiroshi
Fujishima report #243
- cli : bench : new : -r recursive mode
- lz4cat : can cat multiple files in a single command line (#184)
- Added : doc/lz4_manual.html, by Przemyslaw Skibinski
- Added : dictionary compression and frame decompression examples, by
Nick Terrell
- Added : Debianization, by Evgeniy Polyakov
Problems found with existing distfile for eagle:
distfiles/bicom101.zip
distfiles/szip-2.1nb3/szip-2.1.tar.gz
distfiles/xmill-0.9.1.tar.gz
No changes made to these distinfo files.
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
- New : Dos/DJGPP target, thanks to Louis Santillan
- Added : Example using lz4frame library, by Zbigniew Jedrzejewski-Szmek
- Changed: liblz4 : xxhash symbols are dynamically changed (namespace
emulation) to avoid symbol conflict
- Changed: liblz4.a (static library) no longer compiled with -fPIC
by default
LZ4 r130
Fixed : incompatibility sparse mode vs console
Fixed : LZ4IO exits too early when frame crc not present
Fixed : incompatibility sparse mode vs append mode
Performance fix : big compression speed boost for clang (+30%)
New : cross-version test, by Takayuki Matsuoka
LZ4 r129
New : LZ4_compress_fast()
Changed: New lz4 and lz4hc compression API. Previous function
prototypes still supported.
Changed: Sparse file support enabled by default
New : LZ4 CLI improved performance compressing/decompressing multiple file
Added : LZ4_compress_destSize()
Fixed : GCC 4.9+ vector optimization
Changed: Enums converted to LZ4F_ namespace convention
Added : AppVeyor CI environment, for Visual tests
Modified:Obsolete functions generate warnings
Fixed : Bug #75 (unfinished stream)
Updated: Documentation converted to MarkDown format
LZ4 r128
New : lz4cli sparse file support
New : command -m, to compress multiple files in a single command
Fixed : Restored lz4hc compression ratio (slightly lower since r124)
New : lz4 cli supports long commands
New : lz4frame & lz4cli frame content size support
New : lz4frame supports skippable frames
Changed: Default "make install" directory is /usr/local
New : lz4 cli supports "pass-through" mode
New : datagen can generate sparse files
New : scan-build tests
New : g++ compatibility tests
New : arm cross-compilation test
Fixed : Fuzzer + frametest compatibility with NetBSD
Added : Visual project directory
Updated: Man page & Specification
r127:
N/A : added a file on SVN
r126:
New : lz4frame API is now integrated into liblz4
Fixed : GCC 4.9 bug on highest performance settings, reported by Greg Slazinski
Fixed : bug within LZ4 HC streaming mode, reported by James Boyle
Fixed : older compiler don't like nameless unions, reported by Cheyi Lin
Changed : lz4 is C90 compatible
Changed : added -pedantic option, fixed a few mminor warnings
r125:
Changed : endian and alignment code
Changed : directory structure : new "lib" directory
Updated : lz4io, now uses lz4frame
Improved: slightly improved decoding speed
Fixed : LZ4_compress_limitedOutput(); Special thanks to Christopher Speller !
Fixed : some alignment warnings under clang
Fixed : deprecated function LZ4_slideInputBufferHC()
r123:
Added : experimental lz4frame API, thanks to Takayuki Matsuoka and
Christopher Jackson for testings
Fix : s390x support, thanks to Nobuhiro Iwamatsu
Fix : test mode (-t) no longer requires confirmation, thanks to Thary Nguyen
r122:
Fix : AIX & AIX64 support (SamG)
Fix : mips 64-bits support (lew van)
Added : Examples directory, using code examples from Takayuki Matsuoka
Updated : Framing specification, to v1.4.1
Updated : xxHash, to r36
r121:
Added : Makefile : install for kFreeBSD and Hurd (Nobuhiro Iwamatsu)
Fix : Makefile : install for OS-X and BSD, thanks to Takayuki Matsuoka
LZ4 is a very fast lossless compression algorithm, providing
compression speed at 400 MB/s per core, scalable with multi-cores
CPU. It also features an extremely fast decoder, with speed in
multiple GB/s per core, typically reaching RAM speed limits on
multi-core systems.