1v1.3.3 2perf: faster zstd_opt strategy (levels 17-19) 3fix : bug #944 : multithreading with shared ditionary and large data, reported by @gsliepen 4cli : fix : content size written in header by default 5cli : fix : improved LZ4 format support, by @felixhandte 6cli : new : hidden command `-S`, to benchmark multiple files while generating one result per file 7api : fix : support large skippable frames, by @terrelln 8api : fix : streaming interface was adding a useless 3-bytes null block to small frames 9api : change : when setting `pledgedSrcSize`, use `ZSTD_CONTENTSIZE_UNKNOWN` macro value to mean "unknown" 10build: fix : compilation under rhel6 and centos6, reported by @pixelb 11build: added `check` target 12 13v1.3.2 14new : long range mode, using --long command, by Stella Lau (@stellamplau) 15new : ability to generate and decode magicless frames (#591) 16changed : maximum nb of threads reduced to 200, to avoid address space exhaustion in 32-bits mode 17fix : multi-threading compression works with custom allocators 18fix : ZSTD_sizeof_CStream() was over-evaluating memory usage 19fix : a rare compression bug when compression generates very large distances and bunch of other conditions (only possible at --ultra -22) 20fix : 32-bits build can now decode large offsets (levels 21+) 21cli : added LZ4 frame support by default, by Felix Handte (@felixhandte) 22cli : improved --list output 23cli : new : can split input file for dictionary training, using command -B# 24cli : new : clean operation artefact on Ctrl-C interruption 25cli : fix : do not change /dev/null permissions when using command -t with root access, reported by @mike155 (#851) 26cli : fix : write file size in header in multiple-files mode 27api : added macro ZSTD_COMPRESSBOUND() for static allocation 28api : experimental : new advanced decompression API 29api : fix : sizeof_CCtx() used to over-estimate 30build: fix : no-multithread variant compiles without pool.c dependency, reported by Mitchell Blank Jr (@mitchblank) (#819) 31build: better compatibility with reproducible builds, by Bernhard M. Wiedemann (@bmwiedemann) (#818) 32example : added streaming_memory_usage 33license : changed /examples license to BSD + GPLv2 34license : fix a few header files to reflect new license (#825) 35 36v1.3.1 37New license : BSD + GPLv2 38perf: substantially decreased memory usage in Multi-threading mode, thanks to reports by Tino Reichardt (@mcmilk) 39perf: Multi-threading supports up to 256 threads. Cap at 256 when more are requested (#760) 40cli : improved and fixed --list command, by @ib (#772) 41cli : command -vV to list supported formats, by @ib (#771) 42build : fixed binary variants, reported by @svenha (#788) 43build : fix Visual compilation for non x86/x64 targets, reported by Greg Slazinski (@GregSlazinski) (#718) 44API exp : breaking change : ZSTD_getframeHeader() provides more information 45API exp : breaking change : pinned down values of error codes 46doc : fixed huffman example, by Ulrich Kunitz (@ulikunitz) 47new : contrib/adaptive-compression, I/O driven compression strength, by Paul Cruz (@paulcruz74) 48new : contrib/long_distance_matching, statistics by Stella Lau (@stellamplau) 49updated : contrib/linux-kernel, by Nick Terrell (@terrelln) 50 51v1.3.0 52cli : new : `--list` command, by Paul Cruz 53cli : changed : xz/lzma support enabled by default 54cli : changed : `-t *` continue processing list after a decompression error 55API : added : ZSTD_versionString() 56API : promoted to stable status : ZSTD_getFrameContentSize(), by Sean Purcell 57API exp : new advanced API : ZSTD_compress_generic(), ZSTD_CCtx_setParameter() 58API exp : new : API for static or external allocation : ZSTD_initStatic?Ctx() 59API exp : added : ZSTD_decompressBegin_usingDDict(), requested by Guy Riddle (#700) 60API exp : clarified memory estimation / measurement functions. 61API exp : changed : strongest strategy renamed ZSTD_btultra, fastest strategy ZSTD_fast set to 1 62tools : decodecorpus can generate random dictionary-compressed samples, by Paul Cruz 63new : contrib/seekable_format, demo and API, by Sean Purcell 64changed : contrib/linux-kernel, updated version and license, by Nick Terrell 65 66v1.2.0 67cli : changed : Multithreading enabled by default (use target zstd-nomt or HAVE_THREAD=0 to disable) 68cli : new : command -T0 means "detect and use nb of cores", by Sean Purcell 69cli : new : zstdmt symlink hardwired to `zstd -T0` 70cli : new : command --threads=# (#671) 71cli : changed : cover dictionary builder by default, for improved quality, by Nick Terrell 72cli : new : commands --train-cover and --train-legacy, to select dictionary algorithm and parameters 73cli : experimental targets `zstd4` and `xzstd4`, with support for lz4 format, by Sean Purcell 74cli : fix : does not output compressed data on console 75cli : fix : ignore symbolic links unless --force specified, 76API : breaking change : ZSTD_createCDict_advanced(), only use compressionParameters as argument 77API : added : prototypes ZSTD_*_usingCDict_advanced(), for direct control over frameParameters. 78API : improved: ZSTDMT_compressCCtx() reduced memory usage 79API : fix : ZSTDMT_compressCCtx() now provides srcSize in header (#634) 80API : fix : src size stored in frame header is controlled at end of frame 81API : fix : enforced consistent rules for pledgedSrcSize==0 (#641) 82API : fix : error code "GENERIC" replaced by "dstSizeTooSmall" when appropriate 83build: improved cmake script, by @Majlen 84build: enabled Multi-threading support for *BSD, by Baptiste Daroussin 85tools: updated Paramgrill. Command -O# provides best parameters for sample and speed target. 86new : contrib/linux-kernel version, by Nick Terrell 87 88v1.1.4 89cli : new : can compress in *.gz format, using --format=gzip command, by Przemyslaw Skibinski 90cli : new : advanced benchmark command --priority=rt 91cli : fix : write on sparse-enabled file systems in 32-bits mode, by @ds77 92cli : fix : --rm remains silent when input is stdin 93cli : experimental : xzstd, with support for xz/lzma decoding, by Przemyslaw Skibinski 94speed : improved decompression speed in streaming mode for single shot scenarios (+5%) 95memory: DDict (decompression dictionary) memory usage down from 150 KB to 20 KB 96arch: 32-bits variant able to generate and decode very long matches (>32 MB), by Sean Purcell 97API : new : ZSTD_findFrameCompressedSize(), ZSTD_getFrameContentSize(), ZSTD_findDecompressedSize() 98API : changed : dropped support of legacy versions <= v0.3 (can be changed by modifying ZSTD_LEGACY_SUPPORT value) 99build : new: meson build system in contrib/meson, by Dima Krasner 100build : improved cmake script, by @Majlen 101build : added -Wformat-security flag, as recommended by Padraig Brady 102doc : new : educational decoder, by Sean Purcell 103 104v1.1.3 105cli : zstd can decompress .gz files (can be disabled with `make zstd-nogz` or `make HAVE_ZLIB=0`) 106cli : new : experimental target `make zstdmt`, with multi-threading support 107cli : new : improved dictionary builder "cover" (experimental), by Nick Terrell, based on prior work by Giuseppe Ottaviano. 108cli : new : advanced commands for detailed parameters, by Przemyslaw Skibinski 109cli : fix zstdless on Mac OS-X, by Andrew Janke 110cli : fix #232 "compress non-files" 111dictBuilder : improved dictionary generation quality, thanks to Nick Terrell 112API : new : lib/compress/ZSTDMT_compress.h multithreading API (experimental) 113API : new : ZSTD_create?Dict_byReference(), requested by Bartosz Taudul 114API : new : ZDICT_finalizeDictionary() 115API : fix : ZSTD_initCStream_usingCDict() properly writes dictID into frame header, by Gregory Szorc (#511) 116API : fix : all symbols properly exposed in libzstd, by Nick Terrell 117build : support for Solaris target, by Przemyslaw Skibinski 118doc : clarified specification, by Sean Purcell 119 120v1.1.2 121API : streaming : decompression : changed : automatic implicit reset when chain-decoding new frames without init 122API : experimental : added : dictID retrieval functions, and ZSTD_initCStream_srcSize() 123API : zbuff : changed : prototypes now generate deprecation warnings 124lib : improved : faster decompression speed at ultra compression settings and 32-bits mode 125lib : changed : only public ZSTD_ symbols are now exposed 126lib : changed : reduced usage of stack memory 127lib : fixed : several corner case bugs, by Nick Terrell 128cli : new : gzstd, experimental version able to decode .gz files, by Przemyslaw Skibinski 129cli : new : preserve file attributes 130cli : new : added zstdless and zstdgrep tools 131cli : fixed : status displays total amount decoded, even for file consisting of multiple frames (like pzstd) 132cli : fixed : zstdcat 133zlib_wrapper : added support for gz* functions, by Przemyslaw Skibinski 134install : better compatibility with FreeBSD, by Dimitry Andric 135source tree : changed : zbuff source files moved to lib/deprecated 136 137v1.1.1 138New : command -M#, --memory=, --memlimit=, --memlimit-decompress= to limit allowed memory consumption 139New : doc/zstd_manual.html, by Przemyslaw Skibinski 140Improved : slightly better compression ratio at --ultra levels (>= 20) 141Improved : better memory usage when using streaming compression API, thanks to @Rogier-5 report 142Added : API : ZSTD_initCStream_usingCDict(), ZSTD_initDStream_usingDDict() (experimental section) 143Added : example/multiple_streaming_compression.c 144Changed : zstd_errors.h is now installed within /include (and replaces errors_public.h) 145Updated man page 146Fixed : zstd-small, zstd-compress and zstd-decompress compilation targets 147 148v1.1.0 149New : contrib/pzstd, parallel version of zstd, by Nick Terrell 150added : NetBSD install target (#338) 151Improved : speed for batches of small files 152Improved : speed of zlib wrapper, by Przemyslaw Skibinski 153Changed : libzstd on Windows supports legacy formats, by Christophe Chevalier 154Fixed : CLI -d output to stdout by default when input is stdin (#322) 155Fixed : CLI correctly detects console on Mac OS-X 156Fixed : CLI supports recursive mode `-r` on Mac OS-X 157Fixed : Legacy decoders use unified error codes, reported by benrg (#341), fixed by Przemyslaw Skibinski 158Fixed : compatibility with OpenBSD, reported by Juan Francisco Cantero Hurtado (#319) 159Fixed : compatibility with Hurd, by Przemyslaw Skibinski (#365) 160Fixed : zstd-pgo, reported by octoploid (#329) 161 162v1.0.0 163Change Licensing, all project is now BSD, Copyright Facebook 164Small decompression speed improvement 165API : Streaming API supports legacy format 166API : ZDICT_getDictID(), ZSTD_sizeof_{CCtx, DCtx, CStream, DStream}(), ZSTD_setDStreamParamter() 167CLI supports legacy formats v0.4+ 168Fixed : compression fails on certain huge files, reported by Jesse McGrew 169Enhanced documentation, by Przemyslaw Skibinski 170 171v0.8.1 172New streaming API 173Changed : --ultra now enables levels beyond 19 174Changed : -i# now selects benchmark time in second 175Fixed : ZSTD_compress* can now compress > 4 GB in a single pass, reported by Nick Terrell 176Fixed : speed regression on specific patterns (#272) 177Fixed : support for Z_SYNC_FLUSH, by Dmitry Krot (#291) 178Fixed : ICC compilation, by Przemyslaw Skibinski 179 180v0.8.0 181Improved : better speed on clang and gcc -O2, thanks to Eric Biggers 182New : Build on FreeBSD and DragonFly, thanks to JrMarino 183Changed : modified API : ZSTD_compressEnd() 184Fixed : legacy mode with ZSTD_HEAPMODE=0, by Christopher Bergqvist 185Fixed : premature end of frame when zero-sized raw block, reported by Eric Biggers 186Fixed : large dictionaries (> 384 KB), reported by Ilona Papava 187Fixed : checksum correctly checked in single-pass mode 188Fixed : combined --test amd --rm, reported by Andreas M. Nilsson 189Modified : minor compression level adaptations 190Updated : compression format specification to v0.2.0 191changed : zstd.h moved to /lib directory 192 193v0.7.5 194Transition version, supporting decoding of v0.8.x 195 196v0.7.4 197Added : homebrew for Mac, by Daniel Cade 198Added : more examples 199Fixed : segfault when using small dictionaries, reported by Felix Handte 200Modified : default compression level for CLI is now 3 201Updated : specification, to v0.1.1 202 203v0.7.3 204New : compression format specification 205New : `--` separator, stating that all following arguments are file names. Suggested by Chip Turner. 206New : `ZSTD_getDecompressedSize()` 207New : OpenBSD target, by Juan Francisco Cantero Hurtado 208New : `examples` directory 209fixed : dictBuilder using HC levels, reported by Bartosz Taudul 210fixed : legacy support from ZSTD_decompress_usingDDict(), reported by Felix Handte 211fixed : multi-blocks decoding with intermediate uncompressed blocks, reported by Greg Slazinski 212modified : removed "mem.h" and "error_public.h" dependencies from "zstd.h" (experimental section) 213modified : legacy functions no longer need magic number 214 215v0.7.2 216fixed : ZSTD_decompressBlock() using multiple consecutive blocks. Reported by Greg Slazinski. 217fixed : potential segfault on very large files (many gigabytes). Reported by Chip Turner. 218fixed : CLI displays system error message when destination file cannot be created (#231). Reported by Chip Turner. 219 220v0.7.1 221fixed : ZBUFF_compressEnd() called multiple times with too small `dst` buffer, reported by Christophe Chevalier 222fixed : dictBuilder fails if first sample is too small, reported by Руслан Ковалёв 223fixed : corruption issue, reported by cj 224modified : checksum enabled by default in command line mode 225 226v0.7.0 227New : Support for directory compression, using `-r`, thanks to Przemyslaw Skibinski 228New : Command `--rm`, to remove source file after successful de/compression 229New : Visual build scripts, by Christophe Chevalier 230New : Support for Sparse File-systems (do not use space for zero-filled sectors) 231New : Frame checksum support 232New : Support pass-through mode (when using `-df`) 233API : more efficient Dictionary API : `ZSTD_compress_usingCDict()`, `ZSTD_decompress_usingDDict()` 234API : create dictionary files from custom content, by Giuseppe Ottaviano 235API : support for custom malloc/free functions 236New : controllable Dictionary ID 237New : Support for skippable frames 238 239v0.6.1 240New : zlib wrapper API, thanks to Przemyslaw Skibinski 241New : Ability to compile compressor / decompressor separately 242Changed : new lib directory structure 243Fixed : Legacy codec v0.5 compatible with dictionary decompression 244Fixed : Decoder corruption error (#173) 245Fixed : null-string roundtrip (#176) 246New : benchmark mode can select directory as input 247Experimental : midipix support, VMS support 248 249v0.6.0 250Stronger high compression modes, thanks to Przemyslaw Skibinski 251API : ZSTD_getFrameParams() provides size of decompressed content 252New : highest compression modes require `--ultra` command to fully unleash their capacity 253Fixed : zstd cli return error code > 0 and removes dst file artifact when decompression fails, thanks to Chip Turner 254 255v0.5.1 256New : Optimal parsing => Very high compression modes, thanks to Przemyslaw Skibinski 257Changed : Dictionary builder integrated into libzstd and zstd cli 258Changed (!) : zstd cli now uses "multiple input files" as default mode. See `zstd -h`. 259Fix : high compression modes for big-endian platforms 260New : zstd cli : `-t` | `--test` command 261 262v0.5.0 263New : dictionary builder utility 264Changed : streaming & dictionary API 265Improved : better compression of small data 266 267v0.4.7 268Improved : small compression speed improvement in HC mode 269Changed : `zstd_decompress.c` has ZSTD_LEGACY_SUPPORT to 0 by default 270fix : bt search bug 271 272v0.4.6 273fix : fast compression mode on Windows 274New : cmake configuration file, thanks to Artyom Dymchenko 275Improved : high compression mode on repetitive data 276New : block-level API 277New : ZSTD_duplicateCCtx() 278 279v0.4.5 280new : -m/--multiple : compress/decompress multiple files 281 282v0.4.4 283Fixed : high compression modes for Windows 32 bits 284new : external dictionary API extended to buffered mode and accessible through command line 285new : windows DLL project, thanks to Christophe Chevalier 286 287v0.4.3 : 288new : external dictionary API 289new : zstd-frugal 290 291v0.4.2 : 292Generic minor improvements for small blocks 293Fixed : big-endian compatibility, by Peter Harris (#85) 294 295v0.4.1 296Fixed : ZSTD_LEGACY_SUPPORT=0 build mode (reported by Luben) 297removed `zstd.c` 298 299v0.4.0 300Command line utility compatible with high compression levels 301Removed zstdhc => merged into zstd 302Added : ZBUFF API (see zstd_buffered.h) 303Rolling buffer support 304 305v0.3.6 306small blocks params 307 308v0.3.5 309minor generic compression improvements 310 311v0.3.4 312Faster fast cLevels 313 314v0.3.3 315Small compression ratio improvement 316 317v0.3.2 318Fixed Visual Studio 319 320v0.3.1 : 321Small compression ratio improvement 322 323v0.3 324HC mode : compression levels 2-26 325 326v0.2.2 327Fix : Visual Studio 2013 & 2015 release compilation, by Christophe Chevalier 328 329v0.2.1 330Fix : Read errors, advanced fuzzer tests, by Hanno Böck 331 332v0.2.0 333**Breaking format change** 334Faster decompression speed 335Can still decode v0.1 format 336 337v0.1.3 338fix uninitialization warning, reported by Evan Nemerson 339 340v0.1.2 341frame concatenation support 342 343v0.1.1 344fix compression bug 345detects write-flush errors 346 347v0.1.0 348first release 349