xref: /aosp_15_r20/external/lz4/NEWS (revision 27162e4e17433d5aa7cb38e7b6a433a09405fc7f)
1v1.10.0
2cli  : multithreading compression support: improves speed by X times threads allocated
3cli  : overlap decompression with i/o, improving speed by ~+60%
4cli  : support environment variables LZ4_CLEVEL and LZ4_NBWORKERS
5cli  : license of CLI more clearly labelled GPL-2.0-or-later
6cli  : fix: refuse to compress directories
7cli  : fix dictionary compression benchmark on multiple files
8cli  : change: no more implicit `stdout` (except when input is `stdin`)
9lib  : new level 2, offering mid-way performance (speed and compression)
10lib  : Improved lz4frame compression speed for small data (up to +160% at 1KB)
11lib  : Slightly faster (+5%) HC compression speed (levels 3-9), by @JunHe77
12lib  : dictionary compression support now in stable status
13lib  : lz4frame states can be safely reset and reused after a processing error (described by @QrczakMK)
14lib  : `lz4file` API improvements, by @vsolontsov-volant and @t-mat
15lib  : new experimental symbol `LZ4_compress_destSize_extState()`
16build: cmake minimum version raised to 3.5
17build: cmake improvements, by @foxeng, @Ohjurot, @LocalSpook, @teo-tsirpanis, @ur4t and @t-mat
18build: meson scripts are now hosted into `build/` directory, by @eli-schwartz
19build: meson improvements, by @tristan957
20build: Visual Studio solutions generated by `cmake` via scripts
21port : support for loongArch, risc-v, m68k, mips and sparc architectures
22port : improved Visual Studio compatibility, by @t-mat
23port : freestanding support improvements, by @t-mat
24
25v1.9.4
26perf : faster decoding speed (~+20%) on aarch64 platforms
27perf : faster decoding speed (~+70%) for -BD4 setting in CLI
28api  : new function `LZ4_decompress_safe_partial_usingDict()` by @yawqi
29api  : lz4frame: ability to provide custom allocators at state creation
30api  : can skip checksum validation for improved decoding speed
31api  : new experimental unit `lz4file` for file i/o API, by @anjiahao1
32api  : new experimental function `LZ4F_uncompressedUpdate()`, by @alexmohr
33cli  : `--list` works on `stdin` input, by @Low-power
34cli  : `--no-crc` does not produce (compression) nor check (decompression) checksums
35cli  : fix: `--test` and `--list` produce an error code when parsing invalid input
36cli  : fix: `--test -m` does no longer create decompressed file artifacts
37cli  : fix: support skippable frames when passed via `stdin`, reported by @davidmankin
38build: fix: Makefile respects CFLAGS directives passed via environment variable
39build: `LZ4_FREESTANDING`, new build macro for freestanding environments, by @t-mat
40build: `make` and `make test` are compatible with `-j` parallel run
41build: AS/400 compatibility, by @jonrumsey
42build: Solaris 10 compatibility, by @pekdon
43build: MSVC 2022 support, by @t-mat
44build: improved meson script, by @eli-schwartz
45doc  : Updated LZ4 block format, provide an "implementation notes" section
46
47v1.9.3
48perf: highly improved speed in kernel space, by @terrelln
49perf: faster speed with Visual Studio, thanks to @wolfpld and @remittor
50perf: improved dictionary compression speed, by @felixhandte
51perf: fixed LZ4_compress_HC_destSize() ratio, detected by @hsiangkao
52perf: reduced stack usage in high compression mode, by @Yanpas
53api : LZ4_decompress_safe_partial() supports unknown compressed size, requested by @jfkthame
54api : improved LZ4F_compressBound() with automatic flushing, by Christopher Harvie
55api : can (de)compress to/from NULL without UBs
56api : fix alignment test on 32-bit systems (state initialization)
57api : fix LZ4_saveDictHC() in corner case scenario, detected by @IgorKorkin
58cli : `-l` legacy format is now compatible with `-m` multiple files, by Filipe Calasans
59cli : benchmark mode supports dictionary, by @rkoradi
60cli : fix --fast with large argument, detected by @picoHz
61build: link to user-defined memory functions with LZ4_USER_MEMORY_FUNCTIONS, suggested by Yuriy Levchenko
62build: contrib/cmake_unofficial/ moved to build/cmake/
63build: visual/* moved to build/
64build: updated meson script, by @neheb
65build: tinycc support, by Anton Kochkov
66install: Haiku support, by Jerome Duval
67doc : updated LZ4 frame format, clarify EndMark
68
69v1.9.2
70fix : out-of-bound read in exceptional circumstances when using decompress_partial(), by @terrelln
71fix : 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)), by @terrelln
72fix : rare data corruption bug with LZ4_compress_destSize(), by @terrelln
73fix : data corruption bug when Streaming with an Attached Dict in HC Mode, by @felixhandte
74perf: enable LZ4_FAST_DEC_LOOP on aarch64/GCC by default, by @prekageo
75perf: improved lz4frame streaming API speed, by @dreambottle
76perf: speed up lz4hc on slow patterns when using external dictionary, by @terrelln
77api: better in-place decompression and compression support
78cli : --list supports multi-frames files, by @gstedman
79cli: --version outputs to stdout
80cli : add option --best as an alias of -12 , by @Low-power
81misc: Integration into oss-fuzz by @cmeister2, expanded list of scenarios by @terrelln
82
83v1.9.1
84fix : decompression functions were reading a few bytes beyond input size (introduced in v1.9.0, reported by @ppodolsky and @danlark1)
85api : fix : lz4frame initializers compatibility with c++, reported by @degski
86cli : added command --list, based on a patch by @gabrielstedman
87build: improved Windows build, by @JPeterMugaas
88build: AIX, by Norman Green
89
90v1.9.0
91perf: large decompression speed improvement on x86/x64 (up to +20%) by @djwatson
92api : changed : _destSize() compression variants are promoted to stable API
93api : new : LZ4_initStream(HC), replacing LZ4_resetStream(HC)
94api : changed : LZ4_resetStream(HC) as recommended reset function, for better performance on small data
95cli : support custom block sizes, by @blezsan
96build: source code can be amalgamated, by Bing Xu
97build: added meson build, by @lzutao
98build: new build macros : LZ4_DISTANCE_MAX, LZ4_FAST_DEC_LOOP
99install: MidnightBSD, by @laffer1
100install: msys2 on Windows 10, by @vtorri
101
102v1.8.3
103perf: minor decompression speed improvement (~+2%) with gcc
104fix : corruption in v1.8.2 at level 9 for files > 64KB under rare conditions (#560)
105cli : new command --fast, by @jennifermliu
106cli : fixed elapsed time, and added cpu load indicator (on -vv) (#555)
107api : LZ4_decompress_safe_partial() now decodes exactly the nb of bytes requested (feature request #566)
108build : added Haiku target, by @fbrosson, and MidnightBSD, by @laffer1
109doc : updated documentation regarding dictionary compression
110
111v1.8.2
112perf: *much* faster dictionary compression on small files, by @felixhandte
113perf: improved decompression speed and binary size, by Alexey Tourbin (@svpv)
114perf: slightly faster HC compression and decompression speed
115perf: very small compression ratio improvement
116fix : compression compatible with low memory addresses (< 0xFFFF)
117fix : decompression segfault when provided with NULL input, by @terrelln
118cli : new command --favor-decSpeed
119cli : benchmark mode more accurate for small inputs
120fullbench : can bench _destSize() variants, by @felixhandte
121doc : clarified block format parsing restrictions, by Alexey Tourbin (@svpv)
122
123v1.8.1
124perf : faster and stronger ultra modes (levels 10+)
125perf : slightly faster compression and decompression speed
126perf : fix bad degenerative case, reported by @c-morgenstern
127fix : decompression failed when using a combination of extDict + low memory address (#397), reported and fixed by Julian Scheid (@jscheid)
128cli : support for dictionary compression (`-D`), by Felix Handte @felixhandte
129cli : fix : `lz4 -d --rm` preserves timestamp (#441)
130cli : fix : do not modify /dev/null permission as root, by @aliceatlas
131api : `_destSize()` variant supported for all compression levels
132build  : `make` and `make test` compatible with `-jX`, reported by @mwgamera
133build  : can control LZ4LIB_VISIBILITY macro, by @mikir
134install: fix man page directory (#387), reported by Stuart Cardall (@itoffshore)
135
136v1.8.0
137cli : fix : do not modify /dev/null permissions, reported by @Maokaman1
138cli : added GNU separator -- specifying that all following arguments are files
139API : added LZ4_compress_HC_destSize(), by Oleg (@remittor)
140API : added LZ4F_resetDecompressionContext()
141API : lz4frame : negative compression levels trigger fast acceleration, request by Lawrence Chan
142API : lz4frame : can control block checksum and dictionary ID
143API : fix : expose obsolete decoding functions, reported by Chen Yufei
144API : experimental : lz4frame_static : new dictionary compression API
145build : fix : static lib installation, by Ido Rosen
146build : dragonFlyBSD, OpenBSD, NetBSD supported
147build : LZ4_MEMORY_USAGE can be modified at compile time, through external define
148doc : Updated LZ4 Frame format to v1.6.0, restoring Dictionary-ID field
149doc : lz4 api manual, by Przemyslaw Skibinski
150
151v1.7.5
152lz4hc : new high compression mode : levels 10-12 compress more and slower, by Przemyslaw Skibinski
153lz4cat : fix : works with relative path (#284) and stdin (#285) (reported by @beiDei8z)
154cli : fix minor notification when using -r recursive mode
155API : lz4frame : LZ4F_frameBound(0) gives upper bound of *flush() and *End() operations (#290, #280)
156doc : markdown version of man page, by Takayuki Matsuoka (#279)
157build : Makefile : fix make -jX lib+exe concurrency (#277)
158build : cmake : improvements by Michał Górny (#296)
159
160v1.7.4.2
161fix : Makefile : release build compatible with PIE and customized compilation directives provided through environment variables (#274, reported by Antoine Martin)
162
163v1.7.4
164Improved : much better speed in -mx32 mode
165cli : fix : Large file support in 32-bits mode on Mac OS-X
166fix : compilation on gcc 4.4 (#272), reported by Antoine Martin
167
168v1.7.3
169Changed : moved to versioning; package, cli and library have same version number
170Improved: Small decompression speed boost
171Improved: Small compression speed improvement on 64-bits systems
172Improved: Small compression ratio and speed improvement on small files
173Improved: Significant speed boost on ARMv6 and ARMv7
174Fix : better ratio on 64-bits big-endian targets
175Improved cmake build script, by Evan Nemerson
176New liblz4-dll project, by Przemyslaw Skibinki
177Makefile: Generates object files (*.o) for faster (re)compilation on low power systems
178cli : new : --rm and --help commands
179cli : new : preserved file attributes, by Przemyslaw Skibinki
180cli : fix : crash on some invalid inputs
181cli : fix : -t correctly validates lz4-compressed files, by Nick Terrell
182cli : fix : detects and reports fread() errors, thanks to Hiroshi Fujishima report #243
183cli : bench : new : -r recursive mode
184lz4cat : can cat multiple files in a single command line (#184)
185Added : doc/lz4_manual.html, by Przemyslaw Skibinski
186Added : dictionary compression and frame decompression examples, by Nick Terrell
187Added : Debianization, by Evgeniy Polyakov
188
189r131
190New    : Dos/DJGPP target, thanks to Louis Santillan (#114)
191Added  : Example using lz4frame library, by Zbigniew Jędrzejewski-Szmek (#118)
192Changed: xxhash symbols are modified (namespace emulation) within liblz4
193
194r130:
195Fixed  : incompatibility sparse mode vs console, reported by Yongwoon Cho (#105)
196Fixed  : LZ4IO exits too early when frame crc not present, reported by Yongwoon Cho (#106)
197Fixed  : incompatibility sparse mode vs append mode, reported by Takayuki Matsuoka (#110)
198Performance fix : big compression speed boost for clang (+30%)
199New    : cross-version test, by Takayuki Matsuoka
200
201r129:
202Added  : LZ4_compress_fast(), LZ4_compress_fast_continue()
203Added  : LZ4_compress_destSize()
204Changed: New lz4 and lz4hc compression API. Previous function prototypes still supported.
205Changed: Sparse file support enabled by default
206New    : LZ4 CLI improved performance compressing/decompressing multiple files (#86, kind contribution from Kyle J. Harper & Takayuki Matsuoka)
207Fixed  : GCC 4.9+ optimization bug - Reported by Markus Trippelsdorf, Greg Slazinski & Evan Nemerson
208Changed: Enums converted to LZ4F_ namespace convention - by Takayuki Matsuoka
209Added  : AppVeyor CI environment, for Visual tests - Suggested by Takayuki Matsuoka
210Modified:Obsolete functions generate warnings - Suggested by Evan Nemerson, contributed by Takayuki Matsuoka
211Fixed  : Bug #75 (unfinished stream), reported by Yongwoon Cho
212Updated: Documentation converted to MarkDown format
213
214r128:
215New    : lz4cli sparse file support (Requested by Neil Wilson, and contributed by Takayuki Matsuoka)
216New    : command -m, to compress multiple files in a single command (suggested by Kyle J. Harper)
217Fixed  : Restored lz4hc compression ratio (slightly lower since r124)
218New    : lz4 cli supports long commands (suggested by Takayuki Matsuoka)
219New    : lz4frame & lz4cli frame content size support
220New    : lz4frame supports skippable frames, as requested by Sergey Cherepanov
221Changed: Default "make install" directory is /usr/local, as notified by Ron Johnson
222New    : lz4 cli supports "pass-through" mode, requested by Neil Wilson
223New    : datagen can generate sparse files
224New    : scan-build tests, thanks to kind help by Takayuki Matsuoka
225New    : g++ compatibility tests
226New    : arm cross-compilation test, thanks to kind help by Takayuki Matsuoka
227Fixed  : Fuzzer + frametest compatibility with NetBSD (issue #48, reported by Thomas Klausner)
228Added  : Visual project directory
229Updated: Man page & Specification
230
231r127:
232N/A   : added a file on SVN
233
234r126:
235New   : lz4frame API is now integrated into liblz4
236Fixed : GCC 4.9 bug on highest performance settings, reported by Greg Slazinski
237Fixed : bug within LZ4 HC streaming mode, reported by James Boyle
238Fixed : older compiler don't like nameless unions, reported by Cheyi Lin
239Changed : lz4 is C90 compatible
240Changed : added -pedantic option, fixed a few mminor warnings
241
242r125:
243Changed : endian and alignment code
244Changed : directory structure : new "lib" directory
245Updated : lz4io, now uses lz4frame
246Improved: slightly improved decoding speed
247Fixed : LZ4_compress_limitedOutput(); Special thanks to Christopher Speller !
248Fixed : some alignment warnings under clang
249Fixed : deprecated function LZ4_slideInputBufferHC()
250
251r124:
252New : LZ4 HC streaming mode
253Fixed : LZ4F_compressBound() using null preferencesPtr
254Updated : xxHash to r38
255Updated library number, to 1.4.0
256
257r123:
258Added : experimental lz4frame API, thanks to Takayuki Matsuoka and Christopher Jackson for testings
259Fix : s390x support, thanks to Nobuhiro Iwamatsu
260Fix : test mode (-t) no longer requires confirmation, thanks to Thary Nguyen
261
262r122:
263Fix : AIX & AIX64 support (SamG)
264Fix : mips 64-bits support (lew van)
265Added : Examples directory, using code examples from Takayuki Matsuoka
266Updated : Framing specification, to v1.4.1
267Updated : xxHash, to r36
268
269r121:
270Added : Makefile : install for kFreeBSD and Hurd (Nobuhiro Iwamatsu)
271Fix : Makefile : install for OS-X and BSD, thanks to Takayuki Matsuoka
272
273r120:
274Modified : Streaming API, using strong types
275Added : LZ4_versionNumber(), thanks to Takayuki Matsuoka
276Fix : OS-X : library install name, thanks to Clemens Lang
277Updated : Makefile : synchronize library version number with lz4.h, thanks to Takayuki Matsuoka
278Updated : Makefile : stricter compilation flags
279Added : pkg-config, thanks to Zbigniew Jędrzejewski-Szmek (issue 135)
280Makefile : lz4-test only test native binaries, as suggested by Michał Górny (issue 136)
281Updated : xxHash to r35
282
283r119:
284Fix : Issue 134 : extended malicious address space overflow in 32-bits mode for some specific configurations
285
286r118:
287New : LZ4 Streaming API (Fast version), special thanks to Takayuki Matsuoka
288New : datagen : parametrable synthetic data generator for tests
289Improved : fuzzer, support more test cases, more parameters, ability to jump to specific test
290fix : support ppc64le platform (issue 131)
291fix : Issue 52 (malicious address space overflow in 32-bits mode when using large custom format)
292fix : Makefile : minor issue 130 : header files permissions
293
294r117:
295Added : man pages for lz4c and lz4cat
296Added : automated tests on Travis, thanks to Takayuki Matsuoka !
297fix : block-dependency command line (issue 127)
298fix : lz4fullbench (issue 128)
299
300r116:
301hotfix (issue 124 & 125)
302
303r115:
304Added : lz4cat utility, installed on POSX systems (issue 118)
305OS-X compatible compilation of dynamic library (issue 115)
306
307r114:
308Makefile : library correctly compiled with -O3 switch (issue 114)
309Makefile : library compilation compatible with clang
310Makefile : library is versioned and linked (issue 119)
311lz4.h : no more static inline prototypes (issue 116)
312man : improved header/footer (issue 111)
313Makefile : Use system default $(CC) & $(MAKE) variables (issue 112)
314xxhash : updated to r34
315
316r113:
317Large decompression speed improvement for GCC 32-bits. Thanks to Valery Croizier !
318LZ4HC : Compression Level is now a programmable parameter (CLI from 4 to 9)
319Separated IO routines from command line (lz4io.c)
320Version number into lz4.h (suggested by Francesc Alted)
321
322r112:
323quickfix
324
325r111 :
326Makefile : added capability to install libraries
327Modified Directory tree, to better separate libraries from programs.
328
329r110 :
330lz4 & lz4hc : added capability to allocate state & stream state with custom allocator (issue 99)
331fuzzer & fullbench : updated to test new functions
332man : documented -l command (Legacy format, for Linux kernel compression) (issue 102)
333cmake : improved version by Mika Attila, building programs and libraries (issue 100)
334xxHash : updated to r33
335Makefile : clean also delete local package .tar.gz
336
337r109 :
338lz4.c : corrected issue 98 (LZ4_compress_limitedOutput())
339Makefile : can specify version number from makefile
340
341r108 :
342lz4.c : corrected compression efficiency issue 97 in 64-bits chained mode (-BD) for streams > 4 GB (thanks Roman Strashkin for reporting)
343
344r107 :
345Makefile : support DESTDIR for staged installs. Thanks Jorge Aparicio.
346Makefile : make install installs both lz4 and lz4c (Jorge Aparicio)
347Makefile : removed -Wno-implicit-declaration compilation switch
348lz4cli.c : include <stduni.h> for isatty() (Luca Barbato)
349lz4.h : introduced LZ4_MAX_INPUT_SIZE constant (Shay Green)
350lz4.h : LZ4_compressBound() : unified macro and inline definitions (Shay Green)
351lz4.h : LZ4_decompressSafe_partial() : clarify comments (Shay Green)
352lz4.c : LZ4_compress() verify input size condition (Shay Green)
353bench.c : corrected a bug in free memory size evaluation
354cmake : install into bin/ directory (Richard Yao)
355cmake : check for just C compiler (Elan Ruusamae)
356
357r106 :
358Makefile : make dist modify text files in the package to respect Unix EoL convention
359lz4cli.c : corrected small display bug in HC mode
360
361r105 :
362Makefile : New install script and man page, contributed by Prasad Pandit
363lz4cli.c : Minor modifications, for easier extensibility
364COPYING  : added license file
365LZ4_Streaming_Format.odt : modified file name to remove white space characters
366Makefile : .exe suffix now properly added only for Windows target
367