NEWS 17 KB

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