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