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