xref: /freebsd/sys/contrib/zstd/CHANGELOG (revision 02e9120893770924227138ba49df1edb3896112a)
1v1.5.2 (Jan, 2022)
2perf: Regain Minimal memset()-ing During Reuse of Compression Contexts (@Cyan4973, #2969)
3build: Build Zstd with `noexecstack` on All Architectures (@felixhandte, #2964)
4doc: Clarify Licensing (@terrelln, #2981)
5
6v1.5.1 (Dec, 2021)
7perf: rebalanced compression levels, to better match the intended speed/level curve, by @senhuang42
8perf: faster huffman decoder, using x64 assembly, by @terrelln
9perf: slightly faster high speed modes (strategies fast & dfast), by @felixhandte
10perf: improved binary size and faster compilation times, by @terrelln
11perf: new row64 mode, used notably in level 12, by @senhuang42
12perf: faster mid-level compression speed in presence of highly repetitive patterns, by @senhuang42
13perf: minor compression ratio improvements for small data at high levels, by @cyan4973
14perf: reduced stack usage (mostly useful for Linux Kernel), by @terrelln
15perf: faster compression speed on incompressible data, by @bindhvo
16perf: on-demand reduced ZSTD_DCtx state size, using build macro ZSTD_DECODER_INTERNAL_BUFFER, at a small cost of performance, by @bindhvo
17build: allows hiding static symbols in the dynamic library, using build macro, by @skitt
18build: support for m68k (Motorola 68000's), by @cyan4973
19build: improved AIX support, by @Helflym
20build: improved meson unofficial build, by @eli-schwartz
21cli : custom memory limit when training dictionary (#2925), by @embg
22cli : report advanced parameters information when compressing in very verbose mode (``-vv`), by @Svetlitski-FB
23
24v1.5.0  (May 11, 2021)
25api: Various functions promoted from experimental to stable API: (#2579-2581, @senhuang42)
26  `ZSTD_defaultCLevel()`
27  `ZSTD_getDictID_fromCDict()`
28api: Several experimental functions have been deprecated and will emit a compiler warning (#2582, @senhuang42)
29  `ZSTD_compress_advanced()`
30  `ZSTD_compress_usingCDict_advanced()`
31  `ZSTD_compressBegin_advanced()`
32  `ZSTD_compressBegin_usingCDict_advanced()`
33  `ZSTD_initCStream_srcSize()`
34  `ZSTD_initCStream_usingDict()`
35  `ZSTD_initCStream_usingCDict()`
36  `ZSTD_initCStream_advanced()`
37  `ZSTD_initCStream_usingCDict_advanced()`
38  `ZSTD_resetCStream()`
39api: ZSTDMT_NBWORKERS_MAX reduced to 64 for 32-bit environments (@Cyan4973)
40perf: Significant speed improvements for middle compression levels (#2494, @senhuang42 @terrelln)
41perf: Block splitter to improve compression ratio, enabled by default for high compression levels (#2447, @senhuang42)
42perf: Decompression loop refactor, speed improvements on `clang` and for `--long` modes (#2614 #2630, @Cyan4973)
43perf: Reduced stack usage during compression and decompression entropy stage (#2522 #2524, @terrelln)
44bug: Improve setting permissions of created files (#2525, @felixhandte)
45bug: Fix large dictionary non-determinism (#2607, @terrelln)
46bug: Fix non-determinism test failures on Linux i686 (#2606, @terrelln)
47bug: Fix various dedicated dictionary search bugs (#2540 #2586, @senhuang42 @felixhandte)
48bug: Ensure `ZSTD_estimateCCtxSize*() `monotonically increases with compression level (#2538, @senhuang42)
49bug: Fix --patch-from mode parameter bound bug with small files (#2637, @occivink)
50bug: Fix UBSAN error in decompression (#2625, @terrelln)
51bug: Fix superblock compression divide by zero bug (#2592, @senhuang42)
52bug: Make the number of physical CPU cores detection more robust (#2517, @PaulBone)
53doc: Improve `zdict.h` dictionary training API documentation (#2622, @terrelln)
54doc: Note that public `ZSTD_free*()` functions accept NULL pointers (#2521, @animalize)
55doc: Add style guide docs for open source contributors (#2626, @Cyan4973)
56tests: Better regression test coverage for different dictionary modes (#2559, @senhuang42)
57tests: Better test coverage of index reduction (#2603, @terrelln)
58tests: OSS-Fuzz coverage for seekable format (#2617, @senhuang42)
59tests: Test coverage for ZSTD threadpool API (#2604, @senhuang42)
60build: Dynamic library built multithreaded by default (#2584, @senhuang42)
61build: Move  `zstd_errors.h`  and  `zdict.h`  to  `lib/`  root (#2597, @terrelln)
62build: Allow `ZSTDMT_JOBSIZE_MIN` to be configured at compile-time, reduce default to 512KB (#2611, @Cyan4973)
63build: Single file library build script moved to `build/` directory (#2618, @felixhandte)
64build: `ZBUFF_*()` is no longer built by default (#2583, @senhuang42)
65build: Fixed Meson build (#2548, @SupervisedThinking @kloczek)
66build: Fix excessive compiler warnings with clang-cl and CMake (#2600, @nickhutchinson)
67build: Detect presence of `md5` on Darwin (#2609, @felixhandte)
68build: Avoid SIGBUS on armv6 (#2633, @bmwiedmann)
69cli: `--progress` flag added to always display progress bar (#2595, @senhuang42)
70cli: Allow reading from block devices with `--force` (#2613, @felixhandte)
71cli: Fix CLI filesize display bug (#2550, @Cyan4973)
72cli: Fix windows CLI `--filelist` end-of-line bug (#2620, @Cyan4973)
73contrib: Various fixes for linux kernel patch (#2539, @terrelln)
74contrib: Seekable format - Decompression hanging edge case fix (#2516, @senhuang42)
75contrib: Seekable format - New seek table-only API  (#2113 #2518, @mdittmer @Cyan4973)
76contrib: Seekable format - Fix seek table descriptor check when loading (#2534, @foxeng)
77contrib: Seekable format - Decompression fix for large offsets, (#2594, @azat)
78misc: Automatically published release tarballs available on Github (#2535, @felixhandte)
79
80v1.4.9  (Mar 1, 2021)
81bug: Use `umask()` to Constrain Created File Permissions (#2495, @felixhandte)
82bug: Make Simple Single-Pass Functions Ignore Advanced Parameters (#2498, @terrelln)
83api: Add (De)Compression Tracing Functionality (#2482, @terrelln)
84api: Support References to Multiple DDicts (#2446, @senhuang42)
85api: Add Function to Generate Skippable Frame (#2439, @senhuang42)
86perf: New Algorithms for the Long Distance Matcher (#2483, @mpu)
87perf: Performance Improvements for Long Distance Matcher (#2464, @mpu)
88perf: Don't Shrink Window Log when Streaming with a Dictionary (#2451, @terrelln)
89cli: Fix `--output-dir-mirror`'s Rejection of `..`-Containing Paths (#2512, @felixhandte)
90cli: Allow Input From Console When `-f`/`--force` is Passed (#2466, @felixhandte)
91cli: Improve Help Message (#2500, @senhuang42)
92tests: Remove Flaky Tests (#2455, #2486, #2445, @Cyan4973)
93tests: Correctly Invoke md5 Utility on NetBSD (#2492, @niacat)
94tests: Avoid Using `stat -c` on NetBSD (#2513, @felixhandte)
95build: Zstd CLI Can Now be Linked to Dynamic `libzstd` (#2457, #2454 @Cyan4973)
96build: Hide and Avoid Using Static-Only Symbols (#2501, #2504, @skitt)
97build: CMake: Enable Only C for lib/ and programs/ Projects (#2498, @concatime)
98build: CMake: Use `configure_file()` to Create the `.pc` File (#2462, @lazka)
99build: Fix Fuzzer Compiler Detection & Update UBSAN Flags (#2503, @terrelln)
100build: Add Guards for `_LARGEFILE_SOURCE` and `_LARGEFILE64_SOURCE` (#2444, @indygreg)
101build: Improve `zlibwrapper` Makefile (#2437, @Cyan4973)
102contrib: Add `recover_directory` Program (#2473, @terrelln)
103doc: Change License Year to 2021 (#2452 & #2465, @terrelln & @senhuang42)
104doc: Fix Typos (#2459, @ThomasWaldmann)
105
106v1.4.8  (Dec 18, 2020)
107hotfix: wrong alignment of an internal buffer
108
109v1.4.7  (Dec 16, 2020)
110perf: stronger --long mode at high compression levels, by @senhuang42
111perf: stronger --patch-from at high compression levels, thanks to --long improvements
112perf: faster dictionary compression at medium compression levels, by @felixhandte
113perf: small speed & memory usage improvements for ZSTD_compress2(), by @terrelln
114perf: improved fast compression speeds with Visual Studio, by @animalize
115cli : Set nb of threads with environment variable ZSTD_NBTHREADS, by @senhuang42
116cli : accept decompressing files with *.zstd suffix
117cli : provide a condensed summary by default when processing multiple files
118cli : fix : stdin input no longer confused as user prompt
119cli : improve accuracy of several error messages
120api : new sequence ingestion API, by @senhuang42
121api : shared thread pool: control total nb of threads used by multiple compression jobs, by @marxin
122api : new ZSTD_getDictID_fromCDict(), by @LuAPi
123api : zlibWrapper only uses public API, and is compatible with dynamic library, by @terrelln
124api : fix : multithreaded compression has predictable output even in special cases (see #2327) (issue not accessible from cli)
125api : fix : dictionary compression correctly respects dictionary compression level (see #2303) (issue not accessible from cli)
126build: fix cmake script when using path with spaces, by @terrelln
127build: improved compile-time detection of aarch64/neon platforms, by @bsdimp
128build: Fix building on AIX 5.1, by @likema
129build: compile paramgrill with cmake on Windows, requested by @mirh
130doc : clarify repcode updates in format specification, by @felixhandte
131
132v1.4.6
133fix : Always return dstSize_tooSmall when that is the case
134fix : Fix ZSTD_initCStream_advanced() with static allocation and no dictionary
135perf: Improve small block decompression speed by 20%+, by @terrelln
136perf: Reduce compression stack usage by 1 KB, by @terrelln
137perf: Improve decompression speed by improving ZSTD_wildcopy, by @helloguo (#2252, #2256)
138perf: Improve histogram construction, by @cyan4973 (#2253)
139cli : Add --output-dir-mirror option, by @xxie24 (#2219)
140cli : Warn when (de)compressing multiple files into a single output, by @senhuang42 (#2279)
141cli : Improved progress bar and status summary when (de)compressing multiple files, by @senhuang42 (#2283)
142cli : Call stat less often, by @felixhandte (#2262)
143cli : Allow --patch-from XXX and --filelist XXX in addition to --patch-from=XXX and --filelist=XXX, by @cyan4973 (#2250)
144cli : Allow --patch-from to compress stdin with --stream-size, by @bimbashrestha (#2206)
145api : Do not install zbuff.h, since it has long been deprecated, by @cyan4973 (#2166).
146api : Fix ZSTD_CCtx_setParameter() with ZSTD_c_compressionLevel to make 0 mean default level, by @i-do-cpp (#2291)
147api : Rename ZSTDMT_NBTHREADS_MAX to ZSTDMT_NBWORKERS_MAX, by @marxin (#2228).
148build: Install pkg-config file with CMake and MinGW, by @tonytheodore (#2183)
149build: Install DLL with CMake on Windows, by @BioDataAnalysis (#2221)
150build: Fix DLL install location with CMake, by @xantares and @bimbashrestha (#2186)
151build: Add ZSTD_NO_UNUSED_FUNCTIONS macro to hide unused functions
152build: Add ZSTD_NO_INTRINSICS macro to avoid explicit intrinsics
153build: Add STATIC_BMI2 macro for compile time detection of BMI2 on MSVC, by @Niadb (#2258)
154build: Fix -Wcomma warnings, by @cwoffenden
155build: Remove distutils requirement for meson build, by @neheb (#2197)
156build: Fix cli compilation with uclibc
157build: Fix cli compilation without st_mtime, by @ffontaine (#2246)
158build: Fix shadowing warnings in library
159build: Fix single file library compilation with Enscripten, by @yoshihitoh (#2227)
160misc: Improve single file library and include dictBuilder, by @cwoffenden
161misc: Allow compression dictionaries with missing symbols
162misc: Add freestanding translation script in contrib/freestanding_lib
163misc: Collect all of zstd's libc dependencies into zstd_deps.h
164doc : Add ZSTD_versionString() to manual, by @animalize
165doc : Fix documentation for ZSTD_CCtxParams_setParameter(), by @felixhandte (#2270)
166
167v1.4.5  (May 22, 2020)
168fix : Compression ratio regression on huge files (> 3 GB) using high levels (--ultra) and multithreading, by @terrelln
169perf: Improved decompression speed: x64 : +10% (clang) / +5% (gcc); ARM : from +15% to +50%, depending on SoC, by @terrelln
170perf: Automatically downsizes ZSTD_DCtx when too large for too long (#2069, by @bimbashreshta)
171perf: Improved fast compression speed on aarch64 (#2040, ~+3%, by @caoyzh)
172perf: Small level 1 compression speed gains (depending on compiler)
173cli : New --patch-from command, create and apply patches from files, by @bimbashreshta
174cli : New --filelist= : Provide a list of files to operate upon from a file
175cli : -b -d command can now benchmark decompression on multiple files
176cli : New --no-content-size command
177cli : New --show-default-cparams information command
178api : ZDICT_finalizeDictionary() is promoted to stable (#2111)
179api : new experimental parameter ZSTD_d_stableOutBuffer (#2094)
180build: Generate a single-file libzstd library (#2065, by @cwoffenden)
181build: Relative includes no longer require -I compiler flags for zstd lib subdirs (#2103, by @felixhandte)
182build: zstd now compiles cleanly under -pedantic (#2099)
183build: zstd now compiles with make-4.3
184build: Support mingw cross-compilation from Linux, by @Ericson2314
185build: Meson multi-thread build fix on windows
186build: Some misc icc fixes backed by new ci test on travis
187misc: bitflip analyzer tool, by @felixhandte
188misc: Extend largeNbDicts benchmark to compression
189misc: Edit-distance match finder in contrib/
190doc : Improved beginner CONTRIBUTING.md docs
191doc : New issue templates for zstd
192
193v1.4.4  (Nov 6, 2019)
194perf: Improved decompression speed, by > 10%, by @terrelln
195perf: Better compression speed when re-using a context, by @felixhandte
196perf: Fix compression ratio when compressing large files with small dictionary, by @senhuang42
197perf: zstd reference encoder can generate RLE blocks, by @bimbashrestha
198perf: minor generic speed optimization, by @davidbolvansky
199api: new ability to extract sequences from the parser for analysis, by @bimbashrestha
200api: fixed decoding of magic-less frames, by @terrelln
201api: fixed ZSTD_initCStream_advanced() performance with fast modes, reported by @QrczakMK
202cli: Named pipes support, by @bimbashrestha
203cli: short tar's extension support, by @stokito
204cli: command --output-dir-flat= , generates target files into requested directory, by @senhuang42
205cli: commands --stream-size=# and --size-hint=#, by @nmagerko
206cli: command --exclude-compressed, by @shashank0791
207cli: faster `-t` test mode
208cli: improved some error messages, by @vangyzen
209cli: fix command `-D dictionary` on Windows, reported by @artyompetrov
210cli: fix rare deadlock condition within dictionary builder, by @terrelln
211build: single-file decoder with emscripten compilation script, by @cwoffenden
212build: fixed zlibWrapper compilation on Visual Studio, reported by @bluenlive
213build: fixed deprecation warning for certain gcc version, reported by @jasonma163
214build: fix compilation on old gcc versions, by @cemeyer
215build: improved installation directories for cmake script, by Dmitri Shubin
216pack: modified pkgconfig, for better integration into openwrt, requested by @neheb
217misc: Improved documentation : ZSTD_CLEVEL, DYNAMIC_BMI2, ZSTD_CDict, function deprecation, zstd format
218misc: fixed educational decoder : accept larger literals section, and removed UNALIGNED() macro
219
220v1.4.3  (Aug 20, 2019)
221bug: Fix Dictionary Compression Ratio Regression by @cyan4973 (#1709)
222bug: Fix Buffer Overflow in legacy v0.3 decompression by @felixhandte (#1722)
223build: Add support for IAR C/C++ Compiler for Arm by @joseph0918 (#1705)
224
225v1.4.2  (Jul 26, 2019)
226bug: Fix bug in zstd-0.5 decoder by @terrelln (#1696)
227bug: Fix seekable decompression in-memory API by @iburinoc (#1695)
228misc: Validate blocks are smaller than size limit by @vivekmg (#1685)
229misc: Restructure source files by @ephiepark (#1679)
230
231v1.4.1  (Jul 20, 2019)
232bug: Fix data corruption in niche use cases by @terrelln (#1659)
233bug: Fuzz legacy modes, fix uncovered bugs by @terrelln (#1593, #1594, #1595)
234bug: Fix out of bounds read by @terrelln (#1590)
235perf: Improve decode speed by ~7% @mgrice (#1668)
236perf: Slightly improved compression ratio of level 3 and 4 (ZSTD_dfast) by @cyan4973 (#1681)
237perf: Slightly faster compression speed when re-using a context by @cyan4973 (#1658)
238perf: Improve compression ratio for small windowLog by @cyan4973 (#1624)
239perf: Faster compression speed in high compression mode for repetitive data by @terrelln (#1635)
240api: Add parameter to generate smaller dictionaries by @tyler-tran (#1656)
241cli: Recognize symlinks when built in C99 mode by @felixhandte (#1640)
242cli: Expose cpu load indicator for each file on -vv mode by @ephiepark (#1631)
243cli: Restrict read permissions on destination files by @chungy (#1644)
244cli: zstdgrep: handle -f flag by @felixhandte (#1618)
245cli: zstdcat: follow symlinks by @vejnar (#1604)
246doc: Remove extra size limit on compressed blocks by @felixhandte (#1689)
247doc: Fix typo by @yk-tanigawa (#1633)
248doc: Improve documentation on streaming buffer sizes by @cyan4973 (#1629)
249build: CMake: support building with LZ4 @leeyoung624 (#1626)
250build: CMake: install zstdless and zstdgrep by @leeyoung624 (#1647)
251build: CMake: respect existing uninstall target by @j301scott (#1619)
252build: Make: skip multithread tests when built without support by @michaelforney (#1620)
253build: Make: Fix examples/ test target by @sjnam (#1603)
254build: Meson: rename options out of deprecated namespace by @lzutao (#1665)
255build: Meson: fix build by @lzutao (#1602)
256build: Visual Studio: don't export symbols in static lib by @scharan (#1650)
257build: Visual Studio: fix linking by @absotively (#1639)
258build: Fix MinGW-W64 build by @myzhang1029 (#1600)
259misc: Expand decodecorpus coverage by @ephiepark (#1664)
260
261v1.4.0  (Apr 17, 2019)
262perf: Improve level 1 compression speed in most scenarios by 6% by @gbtucker and @terrelln
263api: Move the advanced API, including all functions in the staging section, to the stable section
264api: Make ZSTD_e_flush and ZSTD_e_end block for maximum forward progress
265api: Rename ZSTD_CCtxParam_getParameter to ZSTD_CCtxParams_getParameter
266api: Rename ZSTD_CCtxParam_setParameter to ZSTD_CCtxParams_setParameter
267api: Don't export ZSTDMT functions from the shared library by default
268api: Require ZSTD_MULTITHREAD to be defined to use ZSTDMT
269api: Add ZSTD_decompressBound() to provide an upper bound on decompressed size by @shakeelrao
270api: Fix ZSTD_decompressDCtx() corner cases with a dictionary
271api: Move ZSTD_getDictID_*() functions to the stable section
272api: Add ZSTD_c_literalCompressionMode flag to enable or disable literal compression by @terrelln
273api: Allow compression parameters to be set when a dictionary is used
274api: Allow setting parameters before or after ZSTD_CCtx_loadDictionary() is called
275api: Fix ZSTD_estimateCStreamSize_usingCCtxParams()
276api: Setting ZSTD_d_maxWindowLog to 0 means use the default
277cli: Ensure that a dictionary is not used to compress itself by @shakeelrao
278cli: Add --[no-]compress-literals flag to enable or disable literal compression
279doc: Update the examples to use the advanced API
280doc: Explain how to transition from old streaming functions to the advanced API in the header
281build: Improve the Windows release packages
282build: Improve CMake build by @hjmjohnson
283build: Build fixes for FreeBSD by @lwhsu
284build: Remove redundant warnings by @thatsafunnyname
285build: Fix tests on OpenBSD by @bket
286build: Extend fuzzer build system to work with the new clang engine
287build: CMake now creates the libzstd.so.1 symlink
288build: Improve Menson build by @lzutao
289misc: Fix symbolic link detection on FreeBSD
290misc: Use physical core count for -T0 on FreeBSD by @cemeyer
291misc: Fix zstd --list on truncated files by @kostmo
292misc: Improve logging in debug mode by @felixhandte
293misc: Add CirrusCI tests by @lwhsu
294misc: Optimize dictionary memory usage in corner cases
295misc: Improve the dictionary builder on small or homogeneous data
296misc: Fix spelling across the repo by @jsoref
297
298v1.3.8  (Dec 28, 2018)
299perf: better decompression speed on large files (+7%) and cold dictionaries (+15%)
300perf: slightly better compression ratio at high compression modes
301api : finalized advanced API, last stage before "stable" status
302api : new --rsyncable mode, by @terrelln
303api : support decompression of empty frames into NULL (used to be an error) (#1385)
304build: new set of macros to build a minimal size decoder, by @felixhandte
305build: fix compilation on MIPS32, reported by @clbr (#1441)
306build: fix compilation with multiple -arch flags, by @ryandesign
307build: highly upgraded meson build, by @lzutao
308build: improved buck support, by @obelisk
309build: fix cmake script : can create debug build, by @pitrou
310build: Makefile : grep works on both colored consoles and systems without color support
311build: fixed zstd-pgo, by @bmwiedemann
312cli : support ZSTD_CLEVEL environment variable, by @yijinfb (#1423)
313cli : --no-progress flag, preserving final summary (#1371), by @terrelln
314cli : ensure destination file is not source file (#1422)
315cli : clearer error messages, especially when input file not present
316doc : clarified zstd_compression_format.md, by @ulikunitz
317misc: fixed zstdgrep, returns 1 on failure, by @lzutao
318misc: NEWS renamed as CHANGELOG, in accordance with fboss
319
320v1.3.7  (Oct 20, 2018)
321perf: slightly better decompression speed on clang (depending on hardware target)
322fix : performance of dictionary compression for small input < 4 KB at levels 9 and 10
323build: no longer build backtrace by default in release mode; restrict further automatic mode
324build: control backtrace support through build macro BACKTRACE
325misc: added man pages for zstdless and zstdgrep, by @samrussell
326
327v1.3.6  (Oct 6, 2018)
328perf: much faster dictionary builder, by @jenniferliu
329perf: faster dictionary compression on small data when using multiple contexts, by @felixhandte
330perf: faster dictionary decompression when using a very large number of dictionaries simultaneously
331cli : fix : does no longer overwrite destination when source does not exist (#1082)
332cli : new command --adapt, for automatic compression level adaptation
333api : fix : block api can be streamed with > 4 GB, reported by @catid
334api : reduced ZSTD_DDict size by 2 KB
335api : minimum negative compression level is defined, and can be queried using ZSTD_minCLevel().
336build: support Haiku target, by @korli
337build: Read Legacy format is limited to v0.5+ by default. Can be changed at compile time with macro ZSTD_LEGACY_SUPPORT.
338doc : zstd_compression_format.md updated to match wording in IETF RFC 8478
339misc: tests/paramgrill, a parameter optimizer, by @GeorgeLu97
340
341v1.3.5  (Jun 29, 2018)
342perf: much faster dictionary compression, by @felixhandte
343perf: small quality improvement for dictionary generation, by @terrelln
344perf: slightly improved high compression levels (notably level 19)
345mem : automatic memory release for long duration contexts
346cli : fix : overlapLog can be manually set
347cli : fix : decoding invalid lz4 frames
348api : fix : performance degradation for dictionary compression when using advanced API, by @terrelln
349api : change : clarify ZSTD_CCtx_reset() vs ZSTD_CCtx_resetParameters(), by @terrelln
350build: select custom libzstd scope through control macros, by @GeorgeLu97
351build: OpenBSD patch, by @bket
352build: make and make all are compatible with -j
353doc : clarify zstd_compression_format.md, updated for IETF RFC process
354misc: pzstd compatible with reproducible compilation, by @lamby
355
356v1.3.4  (Mar 27, 2018)
357perf: faster speed (especially decoding speed) on recent cpus (haswell+)
358perf: much better performance associating --long with multi-threading, by @terrelln
359perf: better compression at levels 13-15
360cli : asynchronous compression by default, for faster experience (use --single-thread for former behavior)
361cli : smoother status report in multi-threading mode
362cli : added command --fast=#, for faster compression modes
363cli : fix crash when not overwriting existing files, by Pádraig Brady (@pixelb)
364api : `nbThreads` becomes `nbWorkers` : 1 triggers asynchronous mode
365api : compression levels can be negative, for even more speed
366api : ZSTD_getFrameProgression() : get precise progress status of ZSTDMT anytime
367api : ZSTDMT can accept new compression parameters during compression
368api : implemented all advanced dictionary decompression prototypes
369build: improved meson recipe, by Shawn Landden (@shawnl)
370build: VS2017 scripts, by @HaydnTrigg
371misc: all /contrib projects fixed
372misc: added /contrib/docker script by @gyscos
373
374v1.3.3  (Dec 21, 2017)
375perf: faster zstd_opt strategy (levels 16-19)
376fix : bug #944 : multithreading with shared ditionary and large data, reported by @gsliepen
377cli : fix : content size written in header by default
378cli : fix : improved LZ4 format support, by @felixhandte
379cli : new : hidden command `-S`, to benchmark multiple files while generating one result per file
380api : fix : support large skippable frames, by @terrelln
381api : fix : streaming interface was adding a useless 3-bytes null block to small frames
382api : change : when setting `pledgedSrcSize`, use `ZSTD_CONTENTSIZE_UNKNOWN` macro value to mean "unknown"
383build: fix : compilation under rhel6 and centos6, reported by @pixelb
384build: added `check` target
385
386v1.3.2  (Oct 10, 2017)
387new : long range mode, using --long command, by Stella Lau (@stellamplau)
388new : ability to generate and decode magicless frames (#591)
389changed : maximum nb of threads reduced to 200, to avoid address space exhaustion in 32-bits mode
390fix : multi-threading compression works with custom allocators
391fix : ZSTD_sizeof_CStream() was over-evaluating memory usage
392fix : a rare compression bug when compression generates very large distances and bunch of other conditions (only possible at --ultra -22)
393fix : 32-bits build can now decode large offsets (levels 21+)
394cli : added LZ4 frame support by default, by Felix Handte (@felixhandte)
395cli : improved --list output
396cli : new : can split input file for dictionary training, using command -B#
397cli : new : clean operation artefact on Ctrl-C interruption
398cli : fix : do not change /dev/null permissions when using command -t with root access, reported by @mike155 (#851)
399cli : fix : write file size in header in multiple-files mode
400api : added macro ZSTD_COMPRESSBOUND() for static allocation
401api : experimental : new advanced decompression API
402api : fix : sizeof_CCtx() used to over-estimate
403build: fix : no-multithread variant compiles without pool.c dependency, reported by Mitchell Blank Jr (@mitchblank) (#819)
404build: better compatibility with reproducible builds, by Bernhard M. Wiedemann (@bmwiedemann) (#818)
405example : added streaming_memory_usage
406license : changed /examples license to BSD + GPLv2
407license : fix a few header files to reflect new license (#825)
408
409v1.3.1  (Aug 21, 2017)
410New license : BSD + GPLv2
411perf: substantially decreased memory usage in Multi-threading mode, thanks to reports by Tino Reichardt (@mcmilk)
412perf: Multi-threading supports up to 256 threads. Cap at 256 when more are requested (#760)
413cli : improved and fixed --list command, by @ib (#772)
414cli : command -vV to list supported formats, by @ib (#771)
415build : fixed binary variants, reported by @svenha (#788)
416build : fix Visual compilation for non x86/x64 targets, reported by Greg Slazinski (@GregSlazinski) (#718)
417API exp : breaking change : ZSTD_getframeHeader() provides more information
418API exp : breaking change : pinned down values of error codes
419doc : fixed huffman example, by Ulrich Kunitz (@ulikunitz)
420new : contrib/adaptive-compression, I/O driven compression strength, by Paul Cruz (@paulcruz74)
421new : contrib/long_distance_matching, statistics by Stella Lau (@stellamplau)
422updated : contrib/linux-kernel, by Nick Terrell (@terrelln)
423
424v1.3.0  (Jul 6, 2017)
425cli : new : `--list` command, by Paul Cruz
426cli : changed : xz/lzma support enabled by default
427cli : changed : `-t *` continue processing list after a decompression error
428API : added : ZSTD_versionString()
429API : promoted to stable status : ZSTD_getFrameContentSize(), by Sean Purcell
430API exp : new advanced API : ZSTD_compress_generic(), ZSTD_CCtx_setParameter()
431API exp : new : API for static or external allocation : ZSTD_initStatic?Ctx()
432API exp : added : ZSTD_decompressBegin_usingDDict(), requested by Guy Riddle (#700)
433API exp : clarified memory estimation / measurement functions.
434API exp : changed : strongest strategy renamed ZSTD_btultra, fastest strategy ZSTD_fast set to 1
435tools : decodecorpus can generate random dictionary-compressed samples, by Paul Cruz
436new : contrib/seekable_format, demo and API, by Sean Purcell
437changed : contrib/linux-kernel, updated version and license, by Nick Terrell
438
439v1.2.0  (May 5, 2017)
440cli : changed : Multithreading enabled by default (use target zstd-nomt or HAVE_THREAD=0 to disable)
441cli : new : command -T0 means "detect and use nb of cores", by Sean Purcell
442cli : new : zstdmt symlink hardwired to `zstd -T0`
443cli : new : command --threads=# (#671)
444cli : changed : cover dictionary builder by default, for improved quality, by Nick Terrell
445cli : new : commands --train-cover and --train-legacy, to select dictionary algorithm and parameters
446cli : experimental targets `zstd4` and `xzstd4`, with support for lz4 format, by Sean Purcell
447cli : fix : does not output compressed data on console
448cli : fix : ignore symbolic links unless --force specified,
449API : breaking change : ZSTD_createCDict_advanced(), only use compressionParameters as argument
450API : added : prototypes ZSTD_*_usingCDict_advanced(), for direct control over frameParameters.
451API : improved: ZSTDMT_compressCCtx() reduced memory usage
452API : fix : ZSTDMT_compressCCtx() now provides srcSize in header (#634)
453API : fix : src size stored in frame header is controlled at end of frame
454API : fix : enforced consistent rules for pledgedSrcSize==0 (#641)
455API : fix : error code "GENERIC" replaced by "dstSizeTooSmall" when appropriate
456build: improved cmake script, by @Majlen
457build: enabled Multi-threading support for *BSD, by Baptiste Daroussin
458tools: updated Paramgrill. Command -O# provides best parameters for sample and speed target.
459new : contrib/linux-kernel version, by Nick Terrell
460
461v1.1.4  (Mar 18, 2017)
462cli : new : can compress in *.gz format, using --format=gzip command, by Przemyslaw Skibinski
463cli : new : advanced benchmark command --priority=rt
464cli : fix : write on sparse-enabled file systems in 32-bits mode, by @ds77
465cli : fix : --rm remains silent when input is stdin
466cli : experimental : xzstd, with support for xz/lzma decoding, by Przemyslaw Skibinski
467speed : improved decompression speed in streaming mode for single shot scenarios (+5%)
468memory: DDict (decompression dictionary) memory usage down from 150 KB to 20 KB
469arch: 32-bits variant able to generate and decode very long matches (>32 MB), by Sean Purcell
470API : new : ZSTD_findFrameCompressedSize(), ZSTD_getFrameContentSize(), ZSTD_findDecompressedSize()
471API : changed : dropped support of legacy versions <= v0.3 (can be changed by modifying ZSTD_LEGACY_SUPPORT value)
472build : new: meson build system in contrib/meson, by Dima Krasner
473build : improved cmake script, by @Majlen
474build : added -Wformat-security flag, as recommended by Padraig Brady
475doc : new : educational decoder, by Sean Purcell
476
477v1.1.3  (Feb 7, 2017)
478cli : zstd can decompress .gz files (can be disabled with `make zstd-nogz` or `make HAVE_ZLIB=0`)
479cli : new : experimental target `make zstdmt`, with multi-threading support
480cli : new : improved dictionary builder "cover" (experimental), by Nick Terrell, based on prior work by Giuseppe Ottaviano.
481cli : new : advanced commands for detailed parameters, by Przemyslaw Skibinski
482cli : fix zstdless on Mac OS-X, by Andrew Janke
483cli : fix #232 "compress non-files"
484dictBuilder : improved dictionary generation quality, thanks to Nick Terrell
485API : new : lib/compress/ZSTDMT_compress.h multithreading API (experimental)
486API : new : ZSTD_create?Dict_byReference(), requested by Bartosz Taudul
487API : new : ZDICT_finalizeDictionary()
488API : fix : ZSTD_initCStream_usingCDict() properly writes dictID into frame header, by Gregory Szorc (#511)
489API : fix : all symbols properly exposed in libzstd, by Nick Terrell
490build : support for Solaris target, by Przemyslaw Skibinski
491doc : clarified specification, by Sean Purcell
492
493v1.1.2  (Dec 15, 2016)
494API : streaming : decompression : changed : automatic implicit reset when chain-decoding new frames without init
495API : experimental : added : dictID retrieval functions, and ZSTD_initCStream_srcSize()
496API : zbuff : changed : prototypes now generate deprecation warnings
497lib : improved : faster decompression speed at ultra compression settings and 32-bits mode
498lib : changed : only public ZSTD_ symbols are now exposed
499lib : changed : reduced usage  of stack memory
500lib : fixed : several corner case bugs, by Nick Terrell
501cli : new : gzstd, experimental version able to decode .gz files, by Przemyslaw Skibinski
502cli : new : preserve file attributes
503cli : new : added zstdless and zstdgrep tools
504cli : fixed : status displays total amount decoded, even for file consisting of multiple frames (like pzstd)
505cli : fixed : zstdcat
506zlib_wrapper : added support for gz* functions, by Przemyslaw Skibinski
507install : better compatibility with FreeBSD, by Dimitry Andric
508source tree : changed : zbuff source files moved to lib/deprecated
509
510v1.1.1  (Nov 2, 2016)
511New : command -M#, --memory=, --memlimit=, --memlimit-decompress= to limit allowed memory consumption
512New : doc/zstd_manual.html, by Przemyslaw Skibinski
513Improved : slightly better compression ratio at --ultra levels (>= 20)
514Improved : better memory usage when using streaming compression API, thanks to @Rogier-5 report
515Added : API : ZSTD_initCStream_usingCDict(), ZSTD_initDStream_usingDDict() (experimental section)
516Added : example/multiple_streaming_compression.c
517Changed : zstd_errors.h is now installed within /include (and replaces errors_public.h)
518Updated man page
519Fixed : zstd-small, zstd-compress and zstd-decompress compilation targets
520
521v1.1.0  (Sep 28, 2016)
522New : contrib/pzstd, parallel version of zstd, by Nick Terrell
523added : NetBSD install target (#338)
524Improved : speed for batches of small files
525Improved : speed of zlib wrapper, by Przemyslaw Skibinski
526Changed : libzstd on Windows supports legacy formats, by Christophe Chevalier
527Fixed : CLI -d output to stdout by default when input is stdin (#322)
528Fixed : CLI correctly detects console on Mac OS-X
529Fixed : CLI supports recursive mode `-r` on Mac OS-X
530Fixed : Legacy decoders use unified error codes, reported by benrg (#341), fixed by Przemyslaw Skibinski
531Fixed : compatibility with OpenBSD, reported by Juan Francisco Cantero Hurtado (#319)
532Fixed : compatibility with Hurd, by Przemyslaw Skibinski (#365)
533Fixed : zstd-pgo, reported by octoploid (#329)
534
535v1.0.0  (Sep 1, 2016)
536Change Licensing, all project is now BSD, Copyright Facebook
537Small decompression speed improvement
538API : Streaming API supports legacy format
539API : ZDICT_getDictID(), ZSTD_sizeof_{CCtx, DCtx, CStream, DStream}(), ZSTD_setDStreamParameter()
540CLI supports legacy formats v0.4+
541Fixed : compression fails on certain huge files, reported by Jesse McGrew
542Enhanced documentation, by Przemyslaw Skibinski
543
544v0.8.1  (Aug 18, 2016)
545New streaming API
546Changed : --ultra now enables levels beyond 19
547Changed : -i# now selects benchmark time in second
548Fixed : ZSTD_compress* can now compress > 4 GB in a single pass, reported by Nick Terrell
549Fixed : speed regression on specific patterns (#272)
550Fixed : support for Z_SYNC_FLUSH, by Dmitry Krot (#291)
551Fixed : ICC compilation, by Przemyslaw Skibinski
552
553v0.8.0  (Aug 2, 2016)
554Improved : better speed on clang and gcc -O2, thanks to Eric Biggers
555New : Build on FreeBSD and DragonFly, thanks to JrMarino
556Changed : modified API : ZSTD_compressEnd()
557Fixed : legacy mode with ZSTD_HEAPMODE=0, by Christopher Bergqvist
558Fixed : premature end of frame when zero-sized raw block, reported by Eric Biggers
559Fixed : large dictionaries (> 384 KB), reported by Ilona Papava
560Fixed : checksum correctly checked in single-pass mode
561Fixed : combined --test amd --rm, reported by Andreas M. Nilsson
562Modified : minor compression level adaptations
563Updated : compression format specification to v0.2.0
564changed : zstd.h moved to /lib directory
565
566v0.7.5  (Aug 1, 2016)
567Transition version, supporting decoding of v0.8.x
568
569v0.7.4  (Jul 17, 2016)
570Added : homebrew for Mac, by Daniel Cade
571Added : more examples
572Fixed : segfault when using small dictionaries, reported by Felix Handte
573Modified : default compression level for CLI is now 3
574Updated : specification, to v0.1.1
575
576v0.7.3  (Jul 9, 2016)
577New : compression format specification
578New : `--` separator, stating that all following arguments are file names. Suggested by Chip Turner.
579New : `ZSTD_getDecompressedSize()`
580New : OpenBSD target, by Juan Francisco Cantero Hurtado
581New : `examples` directory
582fixed : dictBuilder using HC levels, reported by Bartosz Taudul
583fixed : legacy support from ZSTD_decompress_usingDDict(), reported by Felix Handte
584fixed : multi-blocks decoding with intermediate uncompressed blocks, reported by Greg Slazinski
585modified : removed "mem.h" and "error_public.h" dependencies from "zstd.h" (experimental section)
586modified : legacy functions no longer need magic number
587
588v0.7.2  (Jul 4, 2016)
589fixed : ZSTD_decompressBlock() using multiple consecutive blocks. Reported by Greg Slazinski.
590fixed : potential segfault on very large files (many gigabytes). Reported by Chip Turner.
591fixed : CLI displays system error message when destination file cannot be created (#231). Reported by Chip Turner.
592
593v0.7.1  (Jun 23, 2016)
594fixed : ZBUFF_compressEnd() called multiple times with too small `dst` buffer, reported by Christophe Chevalier
595fixed : dictBuilder fails if first sample is too small, reported by Руслан Ковалёв
596fixed : corruption issue, reported by cj
597modified : checksum enabled by default in command line mode
598
599v0.7.0  (Jun 17, 2016)
600New : Support for directory compression, using `-r`, thanks to Przemyslaw Skibinski
601New : Command `--rm`, to remove source file after successful de/compression
602New : Visual build scripts, by Christophe Chevalier
603New : Support for Sparse File-systems (do not use space for zero-filled sectors)
604New : Frame checksum support
605New : Support pass-through mode (when using `-df`)
606API : more efficient Dictionary API : `ZSTD_compress_usingCDict()`, `ZSTD_decompress_usingDDict()`
607API : create dictionary files from custom content, by Giuseppe Ottaviano
608API : support for custom malloc/free functions
609New : controllable Dictionary ID
610New : Support for skippable frames
611
612v0.6.1  (May 13, 2016)
613New : zlib wrapper API, thanks to Przemyslaw Skibinski
614New : Ability to compile compressor / decompressor separately
615Changed : new lib directory structure
616Fixed : Legacy codec v0.5 compatible with dictionary decompression
617Fixed : Decoder corruption error (#173)
618Fixed : null-string roundtrip (#176)
619New : benchmark mode can select directory as input
620Experimental : midipix support, VMS support
621
622v0.6.0  (Apr 13, 2016)
623Stronger high compression modes, thanks to Przemyslaw Skibinski
624API : ZSTD_getFrameParams() provides size of decompressed content
625New : highest compression modes require `--ultra` command to fully unleash their capacity
626Fixed : zstd cli return error code > 0 and removes dst file artifact when decompression fails, thanks to Chip Turner
627
628v0.5.1  (Feb 18, 2016)
629New : Optimal parsing => Very high compression modes, thanks to Przemyslaw Skibinski
630Changed : Dictionary builder integrated into libzstd and zstd cli
631Changed (!) : zstd cli now uses "multiple input files" as default mode. See `zstd -h`.
632Fix : high compression modes for big-endian platforms
633New : zstd cli : `-t` | `--test` command
634
635v0.5.0  (Feb 5, 2016)
636New : dictionary builder utility
637Changed : streaming & dictionary API
638Improved : better compression of small data
639
640v0.4.7  (Jan 22, 2016)
641Improved : small compression speed improvement in HC mode
642Changed : `zstd_decompress.c` has ZSTD_LEGACY_SUPPORT to 0 by default
643fix : bt search bug
644
645v0.4.6  (Jan 13, 2016)
646fix : fast compression mode on Windows
647New : cmake configuration file, thanks to Artyom Dymchenko
648Improved : high compression mode on repetitive data
649New : block-level API
650New : ZSTD_duplicateCCtx()
651
652v0.4.5  (Dec 18, 2015)
653new : -m/--multiple : compress/decompress multiple files
654
655v0.4.4  (Dec 14, 2015)
656Fixed : high compression modes for Windows 32 bits
657new : external dictionary API extended to buffered mode and accessible through command line
658new : windows DLL project, thanks to Christophe Chevalier
659
660v0.4.3  (Dec 7, 2015)
661new : external dictionary API
662new : zstd-frugal
663
664v0.4.2  (Dec 2, 2015)
665Generic minor improvements for small blocks
666Fixed : big-endian compatibility, by Peter Harris (#85)
667
668v0.4.1  (Dec 1, 2015)
669Fixed : ZSTD_LEGACY_SUPPORT=0 build mode (reported by Luben)
670removed `zstd.c`
671
672v0.4.0  (Nov 29, 2015)
673Command line utility compatible with high compression levels
674Removed zstdhc => merged into zstd
675Added : ZBUFF API (see zstd_buffered.h)
676Rolling buffer support
677
678v0.3.6  (Nov 10, 2015)
679small blocks params
680
681v0.3.5  (Nov 9, 2015)
682minor generic compression improvements
683
684v0.3.4  (Nov 6, 2015)
685Faster fast cLevels
686
687v0.3.3  (Nov 5, 2015)
688Small compression ratio improvement
689
690v0.3.2  (Nov 2, 2015)
691Fixed Visual Studio
692
693v0.3.1  (Nov 2, 2015)
694Small compression ratio improvement
695
696v0.3  (Oct 30, 2015)
697HC mode : compression levels 2-26
698
699v0.2.2  (Oct 28, 2015)
700Fix : Visual Studio 2013 & 2015 release compilation, by Christophe Chevalier
701
702v0.2.1  (Oct 24, 2015)
703Fix : Read errors, advanced fuzzer tests, by Hanno Böck
704
705v0.2.0  (Oct 22, 2015)
706**Breaking format change**
707Faster decompression speed
708Can still decode v0.1 format
709
710v0.1.3  (Oct 15, 2015)
711fix uninitialization warning, reported by Evan Nemerson
712
713v0.1.2  (Sep 11, 2015)
714frame concatenation support
715
716v0.1.1  (Aug 27, 2015)
717fix compression bug
718detects write-flush errors
719
720v0.1.0  (Aug 25, 2015)
721first release
722