zstd v1.4.1 Release Notes
Release Date: 2019-07-19 // almost 5 years ago-
๐ง Maintenance
๐ This release is primarily a maintenance release.
0๏ธโฃ It includes a few bug fixes, including a fix for a rare data corruption bug, which could only be triggered in a niche use case, when doing all of the following: using multithreading mode, with an overlap size >= 512 MB, using a strategy >=
ZSTD_btlazy
, and compressing more than 4 GB. None of the default compression levels meet these requirements (not even--ultra
ones).๐ Performance
๐ This release also includes some performance improvements, among which the primary improvement is that Zstd decompression is ~7% faster, thanks to @mgrice.
๐ See this comparison of decompression speeds at different compression levels, measured on the Silesia Corpus, on an Intel i9-9900K with GCC 9.1.0.
Level v1.4.0 v1.4.1 Delta 1 1390 MB/s 1453 MB/s +4.5% 3 1208 MB/s 1301 MB/s +7.6% 5 1129 MB/s 1233 MB/s +9.2% 7 1224 MB/s 1347 MB/s +10.0% 16 1278 MB/s 1430 MB/s +11.8% Detailed list of changes
- ๐ bug: Fix data corruption in niche use cases by @terrelln (#1659)
- ๐ bug: Fuzz legacy modes, fix uncovered bugs by @terrelln (#1593, #1594, #1595)
- ๐ bug: Fix out of bounds read by @terrelln (#1590)
- perf: Improved decoding speed by ~7% @mgrice (#1668)
- perf: Large compression ratio improvement for small
windowLog
by @Cyan4973 (#1624) - perf: Faster compression speed in high compression mode for repetitive data by @terrelln (#1635)
- perf: Slightly improved compression ratio of level 3 and 4 (
ZSTD_dfast
) by @Cyan4973 (#1681) - perf: Slightly faster compression speed when re-using a context by @Cyan4973 (#1658)
- api: Add parameter to generate smaller dictionaries by @Tyler-Tran (#1656)
- cli: Recognize symlinks when built in C99 mode by @felixhandte (#1640)
- cli: Expose cpu load indicator for each file on -vv mode by @ephiepark (#1631)
- cli: Restrict read permissions on destination files by @chungy (#1644)
- cli: zstdgrep: handle -f flag by @felixhandte (#1618)
- cli: zstdcat: follow symlinks by @vejnar (#1604)
- ๐ doc: Remove extra size limit on compressed blocks by @felixhandte (#1689)
- ๐ doc: Improve documentation on streaming buffer sizes by @Cyan4973 (#1629)
- ๐ build: CMake: support building with LZ4 @LeeYoung624 (#1626)
- ๐ build: CMake: install zstdless and zstdgrep by @LeeYoung624 (#1647)
- ๐ build: CMake: respect existing uninstall target by @j301scott (#1619)
- ๐ build: Make: skip multithread tests when built without support by @michaelforney (#1620)
- ๐ build: Make: Fix examples/ test target by @sjnam (#1603)
- ๐ build: Meson: rename options out of deprecated namespace by @lzutao (#1665)
- ๐ build: Meson: fix build by @lzutao (#1602)
- ๐ build: Visual Studio: don't export symbols in static lib by @scharan (#1650)
- ๐ build: Visual Studio: fix linking by @Absotively (#1639)
- ๐ build: Fix MinGW-W64 build by @myzhang1029 (#1600)
- misc: Expand decodecorpus coverage by @ephiepark (#1664)