- May 06, 2021
-
-
Nick Terrell authored
The LDM change in PR #2602 changed the algorithm slightly. The compressed size is generally positive, and when it is worse, it is only a few bytes.
-
- May 05, 2021
-
-
Yann Collet authored
faster speed for decompressSequencesLong
-
Felix Handte authored
Improve Setting Permissions of Created Files
-
W. Felix Handte authored
-
W. Felix Handte authored
I think in some unix emulation environments on Windows, (cygwin?) mode bits are somehow respected. So we might as well pass them in. Can't hurt.
-
W. Felix Handte authored
-
W. Felix Handte authored
-
W. Felix Handte authored
-
W. Felix Handte authored
`open()`'s mode bits are only applied to files that are created by the call. If the output file already exists, but is not readable, the `fopen()` would fail, preventing us from removing it, which would mean that the file would not end up with the correct permission bits. It's not clear to me why the `fopen()` is there at all. `UTIL_isRegularFile()` should be sufficient, AFAICT.
-
W. Felix Handte authored
-
W. Felix Handte authored
-
Felix Handte authored
Allow Reading from Block Devices with `--force`
-
Yann Collet authored
pipeline increased from 4 to 8 slots. This change substantially improves decompression speed when there are long distance offsets. example with enwik9 compressed at level 22 : gcc-9 : 947 -> 1039 MB/s clang-10: 884 -> 946 MB/s I also checked the "cold dictionary" scenario, and found a smaller benefit, around ~2% (measurements are more noisy for this scenario).
-
Yann Collet authored
-
Azat Khuzhin authored
* seekable_format: fix from-file reading (not in-memory) It tries to check the buffer boundary, but there is no buffer for from-file reading. * seekable_decompression: break when ZSTD_seekable_decompress() returns zero * seekable_decompression_mem: break when ZSTD_seekable_decompress() returns zero * seekable_format: cap the offset+len up to the last dOffset This will allow to read the whole file w/o gotting corruption error if the offset is more then the data left in file, i.e.: $ ./seekable_compression seekable_compression.c 8192 | head $ zstd -cdq seekable_compression.c.zst | wc -c 4737 Before this patch: $ ./seekable_decompression seekable_compression.c.zst 0 10000000 | wc -c ZSTD_seekable_decompress() error : Corrupted block detected 0 After: $ ./seekable_decompression seekable_compression.c.zst 0 10000000 | wc -c 4737
-
Yann Collet authored
allow jobSize to be as low as 512 KB
-
Nick Terrell authored
[LDM] Speed optimization on repetitive data
-
Nick Terrell authored
Fix bad integer wraparound in repcode index for fast, dfast, lazy
-
Nick Terrell authored
[lib] Always load the dictionary in one go
-
Nick Terrell authored
Dictionary size must be > `ZSTD_CHUNKSIZE_MAX`.
-
- May 04, 2021
-
-
Sen Huang authored
-
Nick Terrell authored
Dictionaries larger than `ZSTD_CHUNKSIZE_MAX` used to have to be loaded in multiple segments. Instead, when we detect large dictionaries, ensure that we reset the context's indicies. Then, for dictionaries larger than `ZSTD_CURRENT_MAX - 1`, only load the suffix of the dictionary. Finally, enable DDS for large dictionaries, since we no longer load in multiple segments. This simplifes the dictionary loading code, and reduces opportunities for non-determinism to slip in.
-
Yann Collet authored
-
W. Felix Handte authored
-
Nick Terrell authored
[easy] Rewrite rowHashLog computation
-
W. Felix Handte authored
-
Yann Collet authored
Documented minimum version numbers
-
Nick Terrell authored
`ZSTD_highbit32(1u << x) == x` when it isn't undefined behavior.
-
Nick Terrell authored
[1.5.0] Move `zstd_errors.h` and `zdict.h` to `lib/` root
-
Felix Handte authored
Detect Presence of `md5` on Darwin
-
Yann Collet authored
previous lower limit was 1 MB. Note : by default, the lowest job size is 2 MB, achieved at level 1. Even lower job sizes can be achieved by manipulating this value directly, or manually modifying window sizes to lower amounts. Updated unit test to ensure that this new limit works fine (test would fail with previous 1 MB limit).
-
Nick Terrell authored
LDM does especially poorly on repetitive data when that data's hash happens to have `(hash & stopMask) == 0`. Either because the `stopMask == 0` or random chance. Optimize this case by skipping over repetitive patterns. The detection is very simplistic, but should catch most of the offending cases. ``` head -c 1G /dev/zero | perf stat -- ./zstd -1 -o /dev/null -v --zstd=ldmHashRateLog=1 --long 21.187881087 seconds time elapsed head -c 1G /dev/zero | perf stat -- ./zstd -1 -o /dev/null -v --zstd=ldmHashRateLog=1 --long 1.149707921 seconds time elapsed ```
-
W. Felix Handte authored
This fixes #2568.
-
Yann Collet authored
Any stable API entry point introduced after v1.0 should be documented with its minimum version number. Since PR fixes this requirement updating mostly new entry points since v1.4.0 and newly introduced ones for future v1.5.0.
-
Nick Terrell authored
[tests] Reduce memory usage of MT CLI tests
-
Nick Terrell authored
Bug fix & run overflow correction much more frequently in tests
-
- May 03, 2021
-
-
Nick Terrell authored
Switch from `-T0` to the default `-T1` which significantly reduces memory usage for level 19 when there are many cores. This fixes 32-bit issues of running out of address space. Fixes #2603.
-
Nick Terrell authored
* Fix overflow correction when `windowLog < cycleLog`. Previously, we got the correction wrong in this case, and our chain tables and binary trees would be corrupted. Now, we work as long as `maxDist` is a power of two, by adding `MAX(maxDist, cycleSize)` to our indices. * When `ZSTD_WINDOW_OVERFLOW_CORRECT_FREQUENTLY` is defined to non-zero run overflow correction as frequently as allowed without impacting compression ratio. * Enable `ZSTD_WINDOW_OVERFLOW_CORRECT_FREQUENTLY` in `fuzzer` and `zstreamtest` as well as all the OSS-Fuzz fuzzers. This has a 5-10% speed penalty at most, which seems reasonable.
-
sen authored
Fix chaintable check to include rowhash in ZSTD_reduceIndex()
-
sen authored
[1.5.0] Promote ZSTD_c_literalCompressionMode to stable params
-