xref: /freebsd/sys/contrib/zstd/CHANGELOG (revision 4bc52338)
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