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