1v1.4.0 2perf: Improve level 1 compression speed in most scenarios by 6% by @gbtucker and @terrelln 3api: Move the advanced API, including all functions in the staging section, to the stable section 4api: Make ZSTD_e_flush and ZSTD_e_end block for maximum forward progress 5api: Rename ZSTD_CCtxParam_getParameter to ZSTD_CCtxParams_getParameter 6api: Rename ZSTD_CCtxParam_setParameter to ZSTD_CCtxParams_setParameter 7api: Don't export ZSTDMT functions from the shared library by default 8api: Require ZSTD_MULTITHREAD to be defined to use ZSTDMT 9api: Add ZSTD_decompressBound() to provide an upper bound on decompressed size by @shakeelrao 10api: Fix ZSTD_decompressDCtx() corner cases with a dictionary 11api: Move ZSTD_getDictID_*() functions to the stable section 12api: Add ZSTD_c_literalCompressionMode flag to enable or disable literal compression by @terrelln 13api: Allow compression parameters to be set when a dictionary is used 14api: Allow setting parameters before or after ZSTD_CCtx_loadDictionary() is called 15api: Fix ZSTD_estimateCStreamSize_usingCCtxParams() 16api: Setting ZSTD_d_maxWindowLog to 0 means use the default 17cli: Ensure that a dictionary is not used to compress itself by @shakeelrao 18cli: Add --[no-]compress-literals flag to enable or disable literal compression 19doc: Update the examples to use the advanced API 20doc: Explain how to transition from old streaming functions to the advanced API in the header 21build: Improve the Windows release packages 22build: Improve CMake build by @hjmjohnson 23build: Build fixes for FreeBSD by @lwhsu 24build: Remove redundant warnings by @thatsafunnyname 25build: Fix tests on OpenBSD by @bket 26build: Extend fuzzer build system to work with the new clang engine 27build: CMake now creates the libzstd.so.1 symlink 28build: Improve Menson build by @lzutao 29misc: Fix symbolic link detection on FreeBSD 30misc: Use physical core count for -T0 on FreeBSD by @cemeyer 31misc: Fix zstd --list on truncated files by @kostmo 32misc: Improve logging in debug mode by @felixhandte 33misc: Add CirrusCI tests by @lwhsu 34misc: Optimize dictionary memory usage in corner cases 35misc: Improve the dictionary builder on small or homogeneous data 36misc: Fix spelling across the repo by @jsoref 37 38v1.3.8 39perf: better decompression speed on large files (+7%) and cold dictionaries (+15%) 40perf: slightly better compression ratio at high compression modes 41api : finalized advanced API, last stage before "stable" status 42api : new --rsyncable mode, by @terrelln 43api : support decompression of empty frames into NULL (used to be an error) (#1385) 44build: new set of macros to build a minimal size decoder, by @felixhandte 45build: fix compilation on MIPS32, reported by @clbr (#1441) 46build: fix compilation with multiple -arch flags, by @ryandesign 47build: highly upgraded meson build, by @lzutao 48build: improved buck support, by @obelisk 49build: fix cmake script : can create debug build, by @pitrou 50build: Makefile : grep works on both colored consoles and systems without color support 51build: fixed zstd-pgo, by @bmwiedemann 52cli : support ZSTD_CLEVEL environment variable, by @yijinfb (#1423) 53cli : --no-progress flag, preserving final summary (#1371), by @terrelln 54cli : ensure destination file is not source file (#1422) 55cli : clearer error messages, especially when input file not present 56doc : clarified zstd_compression_format.md, by @ulikunitz 57misc: fixed zstdgrep, returns 1 on failure, by @lzutao 58misc: NEWS renamed as CHANGELOG, in accordance with fboss 59 60v1.3.7 61perf: slightly better decompression speed on clang (depending on hardware target) 62fix : performance of dictionary compression for small input < 4 KB at levels 9 and 10 63build: no longer build backtrace by default in release mode; restrict further automatic mode 64build: control backtrace support through build macro BACKTRACE 65misc: added man pages for zstdless and zstdgrep, by @samrussell 66 67v1.3.6 68perf: much faster dictionary builder, by @jenniferliu 69perf: faster dictionary compression on small data when using multiple contexts, by @felixhandte 70perf: faster dictionary decompression when using a very large number of dictionaries simultaneously 71cli : fix : does no longer overwrite destination when source does not exist (#1082) 72cli : new command --adapt, for automatic compression level adaptation 73api : fix : block api can be streamed with > 4 GB, reported by @catid 74api : reduced ZSTD_DDict size by 2 KB 75api : minimum negative compression level is defined, and can be queried using ZSTD_minCLevel(). 76build: support Haiku target, by @korli 77build: Read Legacy format is limited to v0.5+ by default. Can be changed at compile time with macro ZSTD_LEGACY_SUPPORT. 78doc : zstd_compression_format.md updated to match wording in IETF RFC 8478 79misc: tests/paramgrill, a parameter optimizer, by @GeorgeLu97 80 81v1.3.5 82perf: much faster dictionary compression, by @felixhandte 83perf: small quality improvement for dictionary generation, by @terrelln 84perf: slightly improved high compression levels (notably level 19) 85mem : automatic memory release for long duration contexts 86cli : fix : overlapLog can be manually set 87cli : fix : decoding invalid lz4 frames 88api : fix : performance degradation for dictionary compression when using advanced API, by @terrelln 89api : change : clarify ZSTD_CCtx_reset() vs ZSTD_CCtx_resetParameters(), by @terrelln 90build: select custom libzstd scope through control macros, by @GeorgeLu97 91build: OpenBSD patch, by @bket 92build: make and make all are compatible with -j 93doc : clarify zstd_compression_format.md, updated for IETF RFC process 94misc: pzstd compatible with reproducible compilation, by @lamby 95 96v1.3.4 97perf: faster speed (especially decoding speed) on recent cpus (haswell+) 98perf: much better performance associating --long with multi-threading, by @terrelln 99perf: better compression at levels 13-15 100cli : asynchronous compression by default, for faster experience (use --single-thread for former behavior) 101cli : smoother status report in multi-threading mode 102cli : added command --fast=#, for faster compression modes 103cli : fix crash when not overwriting existing files, by Pádraig Brady (@pixelb) 104api : `nbThreads` becomes `nbWorkers` : 1 triggers asynchronous mode 105api : compression levels can be negative, for even more speed 106api : ZSTD_getFrameProgression() : get precise progress status of ZSTDMT anytime 107api : ZSTDMT can accept new compression parameters during compression 108api : implemented all advanced dictionary decompression prototypes 109build: improved meson recipe, by Shawn Landden (@shawnl) 110build: VS2017 scripts, by @HaydnTrigg 111misc: all /contrib projects fixed 112misc: added /contrib/docker script by @gyscos 113 114v1.3.3 115perf: faster zstd_opt strategy (levels 16-19) 116fix : bug #944 : multithreading with shared ditionary and large data, reported by @gsliepen 117cli : fix : content size written in header by default 118cli : fix : improved LZ4 format support, by @felixhandte 119cli : new : hidden command `-S`, to benchmark multiple files while generating one result per file 120api : fix : support large skippable frames, by @terrelln 121api : fix : streaming interface was adding a useless 3-bytes null block to small frames 122api : change : when setting `pledgedSrcSize`, use `ZSTD_CONTENTSIZE_UNKNOWN` macro value to mean "unknown" 123build: fix : compilation under rhel6 and centos6, reported by @pixelb 124build: added `check` target 125 126v1.3.2 127new : long range mode, using --long command, by Stella Lau (@stellamplau) 128new : ability to generate and decode magicless frames (#591) 129changed : maximum nb of threads reduced to 200, to avoid address space exhaustion in 32-bits mode 130fix : multi-threading compression works with custom allocators 131fix : ZSTD_sizeof_CStream() was over-evaluating memory usage 132fix : a rare compression bug when compression generates very large distances and bunch of other conditions (only possible at --ultra -22) 133fix : 32-bits build can now decode large offsets (levels 21+) 134cli : added LZ4 frame support by default, by Felix Handte (@felixhandte) 135cli : improved --list output 136cli : new : can split input file for dictionary training, using command -B# 137cli : new : clean operation artefact on Ctrl-C interruption 138cli : fix : do not change /dev/null permissions when using command -t with root access, reported by @mike155 (#851) 139cli : fix : write file size in header in multiple-files mode 140api : added macro ZSTD_COMPRESSBOUND() for static allocation 141api : experimental : new advanced decompression API 142api : fix : sizeof_CCtx() used to over-estimate 143build: fix : no-multithread variant compiles without pool.c dependency, reported by Mitchell Blank Jr (@mitchblank) (#819) 144build: better compatibility with reproducible builds, by Bernhard M. Wiedemann (@bmwiedemann) (#818) 145example : added streaming_memory_usage 146license : changed /examples license to BSD + GPLv2 147license : fix a few header files to reflect new license (#825) 148 149v1.3.1 150New license : BSD + GPLv2 151perf: substantially decreased memory usage in Multi-threading mode, thanks to reports by Tino Reichardt (@mcmilk) 152perf: Multi-threading supports up to 256 threads. Cap at 256 when more are requested (#760) 153cli : improved and fixed --list command, by @ib (#772) 154cli : command -vV to list supported formats, by @ib (#771) 155build : fixed binary variants, reported by @svenha (#788) 156build : fix Visual compilation for non x86/x64 targets, reported by Greg Slazinski (@GregSlazinski) (#718) 157API exp : breaking change : ZSTD_getframeHeader() provides more information 158API exp : breaking change : pinned down values of error codes 159doc : fixed huffman example, by Ulrich Kunitz (@ulikunitz) 160new : contrib/adaptive-compression, I/O driven compression strength, by Paul Cruz (@paulcruz74) 161new : contrib/long_distance_matching, statistics by Stella Lau (@stellamplau) 162updated : contrib/linux-kernel, by Nick Terrell (@terrelln) 163 164v1.3.0 165cli : new : `--list` command, by Paul Cruz 166cli : changed : xz/lzma support enabled by default 167cli : changed : `-t *` continue processing list after a decompression error 168API : added : ZSTD_versionString() 169API : promoted to stable status : ZSTD_getFrameContentSize(), by Sean Purcell 170API exp : new advanced API : ZSTD_compress_generic(), ZSTD_CCtx_setParameter() 171API exp : new : API for static or external allocation : ZSTD_initStatic?Ctx() 172API exp : added : ZSTD_decompressBegin_usingDDict(), requested by Guy Riddle (#700) 173API exp : clarified memory estimation / measurement functions. 174API exp : changed : strongest strategy renamed ZSTD_btultra, fastest strategy ZSTD_fast set to 1 175tools : decodecorpus can generate random dictionary-compressed samples, by Paul Cruz 176new : contrib/seekable_format, demo and API, by Sean Purcell 177changed : contrib/linux-kernel, updated version and license, by Nick Terrell 178 179v1.2.0 180cli : changed : Multithreading enabled by default (use target zstd-nomt or HAVE_THREAD=0 to disable) 181cli : new : command -T0 means "detect and use nb of cores", by Sean Purcell 182cli : new : zstdmt symlink hardwired to `zstd -T0` 183cli : new : command --threads=# (#671) 184cli : changed : cover dictionary builder by default, for improved quality, by Nick Terrell 185cli : new : commands --train-cover and --train-legacy, to select dictionary algorithm and parameters 186cli : experimental targets `zstd4` and `xzstd4`, with support for lz4 format, by Sean Purcell 187cli : fix : does not output compressed data on console 188cli : fix : ignore symbolic links unless --force specified, 189API : breaking change : ZSTD_createCDict_advanced(), only use compressionParameters as argument 190API : added : prototypes ZSTD_*_usingCDict_advanced(), for direct control over frameParameters. 191API : improved: ZSTDMT_compressCCtx() reduced memory usage 192API : fix : ZSTDMT_compressCCtx() now provides srcSize in header (#634) 193API : fix : src size stored in frame header is controlled at end of frame 194API : fix : enforced consistent rules for pledgedSrcSize==0 (#641) 195API : fix : error code "GENERIC" replaced by "dstSizeTooSmall" when appropriate 196build: improved cmake script, by @Majlen 197build: enabled Multi-threading support for *BSD, by Baptiste Daroussin 198tools: updated Paramgrill. Command -O# provides best parameters for sample and speed target. 199new : contrib/linux-kernel version, by Nick Terrell 200 201v1.1.4 202cli : new : can compress in *.gz format, using --format=gzip command, by Przemyslaw Skibinski 203cli : new : advanced benchmark command --priority=rt 204cli : fix : write on sparse-enabled file systems in 32-bits mode, by @ds77 205cli : fix : --rm remains silent when input is stdin 206cli : experimental : xzstd, with support for xz/lzma decoding, by Przemyslaw Skibinski 207speed : improved decompression speed in streaming mode for single shot scenarios (+5%) 208memory: DDict (decompression dictionary) memory usage down from 150 KB to 20 KB 209arch: 32-bits variant able to generate and decode very long matches (>32 MB), by Sean Purcell 210API : new : ZSTD_findFrameCompressedSize(), ZSTD_getFrameContentSize(), ZSTD_findDecompressedSize() 211API : changed : dropped support of legacy versions <= v0.3 (can be changed by modifying ZSTD_LEGACY_SUPPORT value) 212build : new: meson build system in contrib/meson, by Dima Krasner 213build : improved cmake script, by @Majlen 214build : added -Wformat-security flag, as recommended by Padraig Brady 215doc : new : educational decoder, by Sean Purcell 216 217v1.1.3 218cli : zstd can decompress .gz files (can be disabled with `make zstd-nogz` or `make HAVE_ZLIB=0`) 219cli : new : experimental target `make zstdmt`, with multi-threading support 220cli : new : improved dictionary builder "cover" (experimental), by Nick Terrell, based on prior work by Giuseppe Ottaviano. 221cli : new : advanced commands for detailed parameters, by Przemyslaw Skibinski 222cli : fix zstdless on Mac OS-X, by Andrew Janke 223cli : fix #232 "compress non-files" 224dictBuilder : improved dictionary generation quality, thanks to Nick Terrell 225API : new : lib/compress/ZSTDMT_compress.h multithreading API (experimental) 226API : new : ZSTD_create?Dict_byReference(), requested by Bartosz Taudul 227API : new : ZDICT_finalizeDictionary() 228API : fix : ZSTD_initCStream_usingCDict() properly writes dictID into frame header, by Gregory Szorc (#511) 229API : fix : all symbols properly exposed in libzstd, by Nick Terrell 230build : support for Solaris target, by Przemyslaw Skibinski 231doc : clarified specification, by Sean Purcell 232 233v1.1.2 234API : streaming : decompression : changed : automatic implicit reset when chain-decoding new frames without init 235API : experimental : added : dictID retrieval functions, and ZSTD_initCStream_srcSize() 236API : zbuff : changed : prototypes now generate deprecation warnings 237lib : improved : faster decompression speed at ultra compression settings and 32-bits mode 238lib : changed : only public ZSTD_ symbols are now exposed 239lib : changed : reduced usage of stack memory 240lib : fixed : several corner case bugs, by Nick Terrell 241cli : new : gzstd, experimental version able to decode .gz files, by Przemyslaw Skibinski 242cli : new : preserve file attributes 243cli : new : added zstdless and zstdgrep tools 244cli : fixed : status displays total amount decoded, even for file consisting of multiple frames (like pzstd) 245cli : fixed : zstdcat 246zlib_wrapper : added support for gz* functions, by Przemyslaw Skibinski 247install : better compatibility with FreeBSD, by Dimitry Andric 248source tree : changed : zbuff source files moved to lib/deprecated 249 250v1.1.1 251New : command -M#, --memory=, --memlimit=, --memlimit-decompress= to limit allowed memory consumption 252New : doc/zstd_manual.html, by Przemyslaw Skibinski 253Improved : slightly better compression ratio at --ultra levels (>= 20) 254Improved : better memory usage when using streaming compression API, thanks to @Rogier-5 report 255Added : API : ZSTD_initCStream_usingCDict(), ZSTD_initDStream_usingDDict() (experimental section) 256Added : example/multiple_streaming_compression.c 257Changed : zstd_errors.h is now installed within /include (and replaces errors_public.h) 258Updated man page 259Fixed : zstd-small, zstd-compress and zstd-decompress compilation targets 260 261v1.1.0 262New : contrib/pzstd, parallel version of zstd, by Nick Terrell 263added : NetBSD install target (#338) 264Improved : speed for batches of small files 265Improved : speed of zlib wrapper, by Przemyslaw Skibinski 266Changed : libzstd on Windows supports legacy formats, by Christophe Chevalier 267Fixed : CLI -d output to stdout by default when input is stdin (#322) 268Fixed : CLI correctly detects console on Mac OS-X 269Fixed : CLI supports recursive mode `-r` on Mac OS-X 270Fixed : Legacy decoders use unified error codes, reported by benrg (#341), fixed by Przemyslaw Skibinski 271Fixed : compatibility with OpenBSD, reported by Juan Francisco Cantero Hurtado (#319) 272Fixed : compatibility with Hurd, by Przemyslaw Skibinski (#365) 273Fixed : zstd-pgo, reported by octoploid (#329) 274 275v1.0.0 276Change Licensing, all project is now BSD, Copyright Facebook 277Small decompression speed improvement 278API : Streaming API supports legacy format 279API : ZDICT_getDictID(), ZSTD_sizeof_{CCtx, DCtx, CStream, DStream}(), ZSTD_setDStreamParameter() 280CLI supports legacy formats v0.4+ 281Fixed : compression fails on certain huge files, reported by Jesse McGrew 282Enhanced documentation, by Przemyslaw Skibinski 283 284v0.8.1 285New streaming API 286Changed : --ultra now enables levels beyond 19 287Changed : -i# now selects benchmark time in second 288Fixed : ZSTD_compress* can now compress > 4 GB in a single pass, reported by Nick Terrell 289Fixed : speed regression on specific patterns (#272) 290Fixed : support for Z_SYNC_FLUSH, by Dmitry Krot (#291) 291Fixed : ICC compilation, by Przemyslaw Skibinski 292 293v0.8.0 294Improved : better speed on clang and gcc -O2, thanks to Eric Biggers 295New : Build on FreeBSD and DragonFly, thanks to JrMarino 296Changed : modified API : ZSTD_compressEnd() 297Fixed : legacy mode with ZSTD_HEAPMODE=0, by Christopher Bergqvist 298Fixed : premature end of frame when zero-sized raw block, reported by Eric Biggers 299Fixed : large dictionaries (> 384 KB), reported by Ilona Papava 300Fixed : checksum correctly checked in single-pass mode 301Fixed : combined --test amd --rm, reported by Andreas M. Nilsson 302Modified : minor compression level adaptations 303Updated : compression format specification to v0.2.0 304changed : zstd.h moved to /lib directory 305 306v0.7.5 307Transition version, supporting decoding of v0.8.x 308 309v0.7.4 310Added : homebrew for Mac, by Daniel Cade 311Added : more examples 312Fixed : segfault when using small dictionaries, reported by Felix Handte 313Modified : default compression level for CLI is now 3 314Updated : specification, to v0.1.1 315 316v0.7.3 317New : compression format specification 318New : `--` separator, stating that all following arguments are file names. Suggested by Chip Turner. 319New : `ZSTD_getDecompressedSize()` 320New : OpenBSD target, by Juan Francisco Cantero Hurtado 321New : `examples` directory 322fixed : dictBuilder using HC levels, reported by Bartosz Taudul 323fixed : legacy support from ZSTD_decompress_usingDDict(), reported by Felix Handte 324fixed : multi-blocks decoding with intermediate uncompressed blocks, reported by Greg Slazinski 325modified : removed "mem.h" and "error_public.h" dependencies from "zstd.h" (experimental section) 326modified : legacy functions no longer need magic number 327 328v0.7.2 329fixed : ZSTD_decompressBlock() using multiple consecutive blocks. Reported by Greg Slazinski. 330fixed : potential segfault on very large files (many gigabytes). Reported by Chip Turner. 331fixed : CLI displays system error message when destination file cannot be created (#231). Reported by Chip Turner. 332 333v0.7.1 334fixed : ZBUFF_compressEnd() called multiple times with too small `dst` buffer, reported by Christophe Chevalier 335fixed : dictBuilder fails if first sample is too small, reported by Руслан Ковалёв 336fixed : corruption issue, reported by cj 337modified : checksum enabled by default in command line mode 338 339v0.7.0 340New : Support for directory compression, using `-r`, thanks to Przemyslaw Skibinski 341New : Command `--rm`, to remove source file after successful de/compression 342New : Visual build scripts, by Christophe Chevalier 343New : Support for Sparse File-systems (do not use space for zero-filled sectors) 344New : Frame checksum support 345New : Support pass-through mode (when using `-df`) 346API : more efficient Dictionary API : `ZSTD_compress_usingCDict()`, `ZSTD_decompress_usingDDict()` 347API : create dictionary files from custom content, by Giuseppe Ottaviano 348API : support for custom malloc/free functions 349New : controllable Dictionary ID 350New : Support for skippable frames 351 352v0.6.1 353New : zlib wrapper API, thanks to Przemyslaw Skibinski 354New : Ability to compile compressor / decompressor separately 355Changed : new lib directory structure 356Fixed : Legacy codec v0.5 compatible with dictionary decompression 357Fixed : Decoder corruption error (#173) 358Fixed : null-string roundtrip (#176) 359New : benchmark mode can select directory as input 360Experimental : midipix support, VMS support 361 362v0.6.0 363Stronger high compression modes, thanks to Przemyslaw Skibinski 364API : ZSTD_getFrameParams() provides size of decompressed content 365New : highest compression modes require `--ultra` command to fully unleash their capacity 366Fixed : zstd cli return error code > 0 and removes dst file artifact when decompression fails, thanks to Chip Turner 367 368v0.5.1 369New : Optimal parsing => Very high compression modes, thanks to Przemyslaw Skibinski 370Changed : Dictionary builder integrated into libzstd and zstd cli 371Changed (!) : zstd cli now uses "multiple input files" as default mode. See `zstd -h`. 372Fix : high compression modes for big-endian platforms 373New : zstd cli : `-t` | `--test` command 374 375v0.5.0 376New : dictionary builder utility 377Changed : streaming & dictionary API 378Improved : better compression of small data 379 380v0.4.7 381Improved : small compression speed improvement in HC mode 382Changed : `zstd_decompress.c` has ZSTD_LEGACY_SUPPORT to 0 by default 383fix : bt search bug 384 385v0.4.6 386fix : fast compression mode on Windows 387New : cmake configuration file, thanks to Artyom Dymchenko 388Improved : high compression mode on repetitive data 389New : block-level API 390New : ZSTD_duplicateCCtx() 391 392v0.4.5 393new : -m/--multiple : compress/decompress multiple files 394 395v0.4.4 396Fixed : high compression modes for Windows 32 bits 397new : external dictionary API extended to buffered mode and accessible through command line 398new : windows DLL project, thanks to Christophe Chevalier 399 400v0.4.3 : 401new : external dictionary API 402new : zstd-frugal 403 404v0.4.2 : 405Generic minor improvements for small blocks 406Fixed : big-endian compatibility, by Peter Harris (#85) 407 408v0.4.1 409Fixed : ZSTD_LEGACY_SUPPORT=0 build mode (reported by Luben) 410removed `zstd.c` 411 412v0.4.0 413Command line utility compatible with high compression levels 414Removed zstdhc => merged into zstd 415Added : ZBUFF API (see zstd_buffered.h) 416Rolling buffer support 417 418v0.3.6 419small blocks params 420 421v0.3.5 422minor generic compression improvements 423 424v0.3.4 425Faster fast cLevels 426 427v0.3.3 428Small compression ratio improvement 429 430v0.3.2 431Fixed Visual Studio 432 433v0.3.1 : 434Small compression ratio improvement 435 436v0.3 437HC mode : compression levels 2-26 438 439v0.2.2 440Fix : Visual Studio 2013 & 2015 release compilation, by Christophe Chevalier 441 442v0.2.1 443Fix : Read errors, advanced fuzzer tests, by Hanno Böck 444 445v0.2.0 446**Breaking format change** 447Faster decompression speed 448Can still decode v0.1 format 449 450v0.1.3 451fix uninitialization warning, reported by Evan Nemerson 452 453v0.1.2 454frame concatenation support 455 456v0.1.1 457fix compression bug 458detects write-flush errors 459 460v0.1.0 461first release 462