]> git.ipfire.org Git - thirdparty/zstd.git/log
thirdparty/zstd.git
6 years agoUpdate Manual 1698/head
W. Felix Handte [Wed, 24 Jul 2019 22:21:11 +0000 (18:21 -0400)] 
Update Manual

6 years agoUpdate CHANGELOG
W. Felix Handte [Wed, 24 Jul 2019 21:35:52 +0000 (17:35 -0400)] 
Update CHANGELOG

6 years agoBump Library Version Number to 1.4.2
W. Felix Handte [Wed, 24 Jul 2019 21:28:04 +0000 (17:28 -0400)] 
Bump Library Version Number to 1.4.2

6 years agoMerge pull request #1695 from iburinoc/seekable-buff
Yann Collet [Mon, 22 Jul 2019 22:34:32 +0000 (15:34 -0700)] 
Merge pull request #1695 from iburinoc/seekable-buff

Fix seekable decompression in-memory api

6 years agoMerge pull request #1696 from terrelln/legacy-fix
Nick Terrell [Mon, 22 Jul 2019 22:06:18 +0000 (18:06 -0400)] 
Merge pull request #1696 from terrelln/legacy-fix

[legacy] Fix bug in zstd-0.5 decoder

6 years ago[legacy] Fix bug in zstd-0.5 decoder 1696/head
Nick Terrell [Mon, 22 Jul 2019 20:05:09 +0000 (13:05 -0700)] 
[legacy] Fix bug in zstd-0.5 decoder

The match length and literal length extra bytes could either
by 2 bytes or 3 bytes in version 0.5. All earlier verions were
always 3 bytes, and later version didn't have dumps.

The bug, introduced by commit 0fd322f812211e653a83492c0c114b933f8b6bc5,
was triggered when the last dump was a 2-byte dump, because we didn't
separate that case from a 3-byte dump, and thought we were over-reading.

I've tested this fix with every zstd version < 1.0.0 on the buggy file,
and we are now always successfully decompressing with the right
checksum.

Fixes #1693.

6 years agoFix seekable decompression in-memory api 1695/head
Sean Purcell [Mon, 22 Jul 2019 03:22:25 +0000 (23:22 -0400)] 
Fix seekable decompression in-memory api

6 years agoMerge pull request #1679 from ephiepark/dev
Yann Collet [Fri, 19 Jul 2019 22:29:07 +0000 (15:29 -0700)] 
Merge pull request #1679 from ephiepark/dev

Restructure the source files

6 years agoMerge pull request #1685 from vivekmig/dev
Yann Collet [Fri, 19 Jul 2019 22:22:29 +0000 (15:22 -0700)] 
Merge pull request #1685 from vivekmig/dev

Add Check if Block Size Exceeds Maximum

6 years agoMerge pull request #1692 from felixhandte/v1.4.1-changelog 1691/head
Yann Collet [Fri, 19 Jul 2019 16:10:39 +0000 (09:10 -0700)] 
Merge pull request #1692 from felixhandte/v1.4.1-changelog

Update CHANGELOG with v1.4.1 Changes

6 years agoUpdate CHANGELOG with v1.4.1 Changes 1692/head
W. Felix Handte [Fri, 19 Jul 2019 15:18:10 +0000 (11:18 -0400)] 
Update CHANGELOG with v1.4.1 Changes

6 years agoFixing decodecorpus test issue 1685/head
Vivek Miglani [Thu, 18 Jul 2019 21:32:09 +0000 (14:32 -0700)] 
Fixing decodecorpus test issue

6 years ago[doc] Bump Format Spec Version
W. Felix Handte [Wed, 17 Jul 2019 21:55:15 +0000 (17:55 -0400)] 
[doc] Bump Format Spec Version

6 years ago[doc] Remove Limitation that Compressed Block is Smaller than Uncompressed Content
W. Felix Handte [Wed, 17 Jul 2019 21:30:09 +0000 (17:30 -0400)] 
[doc] Remove Limitation that Compressed Block is Smaller than Uncompressed Content

This changes the size limit on compressed blocks to match those of the other
block types: they may not be larger than the `Block_Maximum_Decompressed_Size`,
which is the smaller of the `Window_Size` and 128 KB, removing the additional
restriction that had been placed on `Compressed_Block`s, that they be smaller
than the decompressed content they represent.

Several things motivate removing this restriction. On the one hand, this
restriction is not useful for decoders: the decoder must nonetheless be
prepared to accept compressed blocks that are the full
`Block_Maximum_Decompressed_Size`. And on the other, this bound is actually
artificially limiting. If block representations were entirely independent,
a compressed representation of a block that is larger than the contents of the
block would be ipso facto useless, and it would be strictly better to send it
as an `Raw_Block`. However, blocks are not entirely independent, and it can
make sense to pay the cost of encoding custom entropy tables in a block, even
if that pushes that block size over the size of the data it represents,
because those tables can be re-used by subsequent blocks.

Finally, as far as I can tell, this restriction in the spec is not currently
enforced in any Zstandard implementation, nor has it ever been. This change
should therefore be safe to make.

6 years agoFixing compressed block size checks
Vivek Miglani [Wed, 17 Jul 2019 19:53:15 +0000 (12:53 -0700)] 
Fixing compressed block size checks

6 years agoRestructure the source files 1679/head 1687/head
Ephraim Park [Wed, 3 Jul 2019 20:40:37 +0000 (13:40 -0700)] 
Restructure the source files

6 years agoMerge pull request #1684 from terrelln/regression
Nick Terrell [Mon, 15 Jul 2019 19:39:52 +0000 (15:39 -0400)] 
Merge pull request #1684 from terrelln/regression

[regression] Update results for ZSTD_double_fast update

6 years agoReturn error if block size exceeds maximum
Vivek Miglani [Mon, 15 Jul 2019 19:10:21 +0000 (12:10 -0700)] 
Return error if block size exceeds maximum

6 years ago[regression] Update results for ZSTD_double_fast update 1684/head
Nick Terrell [Mon, 15 Jul 2019 18:25:22 +0000 (11:25 -0700)] 
[regression] Update results for ZSTD_double_fast update

6 years agoMerge branch 'master' of https://github.com/vivekmig/zstd into dev
Vivek Miglani [Mon, 15 Jul 2019 17:47:09 +0000 (10:47 -0700)] 
Merge branch 'master' of https://github.com/vivekmig/zstd into dev

6 years agoMerge pull request #1681 from facebook/level3
Yann Collet [Fri, 12 Jul 2019 23:16:06 +0000 (16:16 -0700)] 
Merge pull request #1681 from facebook/level3

updated double_fast complementary insertion

6 years ago[ldm] Fix bug in overflow correction with large job size (#1678)
Nick Terrell [Fri, 12 Jul 2019 22:45:18 +0000 (18:45 -0400)] 
[ldm] Fix bug in overflow correction with large job size (#1678)

* [ldm] Fix bug in overflow correction with large job size

* [zstdmt] Respect ZSTDMT_JOBSIZE_MAX (1G in 64-bit mode)

* [test] Add test that exposes the bug

Sadly the test fails on our CI because it uses too much memory, so
I had to comment it out.

6 years agoupdated the _extDict variant of double fast 1681/head
Yann Collet [Fri, 12 Jul 2019 21:17:17 +0000 (14:17 -0700)] 
updated the _extDict variant of double fast

6 years agodouble-fast: changed the trade-off for a smaller positive change
Yann Collet [Fri, 12 Jul 2019 18:34:53 +0000 (11:34 -0700)] 
double-fast: changed the trade-off for a smaller positive change

same number of complementary insertions, just organized differently
(long at `ip-2`, short at `ip-1`).

6 years agoperf improvements for zstd decode (#1668)
mgrice [Thu, 11 Jul 2019 22:31:07 +0000 (15:31 -0700)] 
perf improvements for zstd decode (#1668)

* perf improvements for zstd decode

tldr: 7.5% average decode speedup on silesia corpus at compression levels 1-3 (sandy bridge)

Background: while investigating zstd perf differences between clang and gcc I noticed that even though gcc is vectorizing the loop in in wildcopy, it was not being done as well as could be done by hand.  The sites where wildcopy is invoked have an interesting distribution of lengths to be copied.  The loop trip count is rarely above 1, yet long copies are common enough to make their performance important.The code in zstd_decompress.c to invoke wildcopy handles the latter well but the gcc autovectorizer introduces a needlessly expensive startup check for vectorization.

See how GCC autovectorizes the loop here:
https://godbolt.org/z/apr0x0

Here is the code after this diff has been applied: (left hand side is the good one, right is with vectorizer on)
After: https://godbolt.org/z/OwO4F8

Note that autovectorization still does not do a good job on the optimized version, so it's turned off\
 via attribute and flag.  I found that neither attribute nor command-line flag were entirely successful in turning off vectorization, which is why there were both.

    silesia benchmark data - second triad of each file is with the original code:

    file      orig        compressedratio     encode              decode           change
    1#dickens   10192446->   4268865(2.388),       198.9MB/s           709.6MB/s
    2#dickens   10192446->   3876126(2.630),       128.7MB/s           552.5MB/s
    3#dickens   10192446->   3682956(2.767),       104.6MB/s             537MB/s
    1#dickens   10192446->   4268865(2.388),       195.4MB/s           659.5MB/s     7.60%
    2#dickens   10192446->   3876126(2.630),         127MB/s           516.3MB/s     7.01%
    3#dickens   10192446->   3682956(2.767),         105MB/s           479.5MB/s    11.99%
    1#mozilla   51220480->  20117517(2.546),       285.4MB/s           734.9MB/s
    2#mozilla   51220480->  19067018(2.686),       220.8MB/s           686.3MB/s
    3#mozilla   51220480->  18508283(2.767),       152.2MB/s           669.4MB/s
    1#mozilla   51220480->  20117517(2.546),       283.4MB/s           697.9MB/s     5.30%
    2#mozilla   51220480->  19067018(2.686),       225.9MB/s             665MB/s     3.20%
    3#mozilla   51220480->  18508283(2.767),       154.5MB/s           640.6MB/s     4.50%
    1#mr         9970564->   3840242(2.596),       262.4MB/s           899.8MB/s
    2#mr         9970564->   3600976(2.769),       181.2MB/s           717.9MB/s
    3#mr         9970564->   3563987(2.798),       116.3MB/s             620MB/s
    1#mr         9970564->   3840242(2.596),       253.2MB/s           827.3MB/s     8.76%
    2#mr         9970564->   3600976(2.769),       177.4MB/s           655.4MB/s     9.54%
    3#mr         9970564->   3563987(2.798),       111.2MB/s           564.2MB/s     9.89%
    1#nci       33553445->   2849306(11.78),       575.2MB/s ,        1335.8MB/s
    2#nci       33553445->   2890166(11.61),       509.3MB/s ,        1238.1MB/s
    3#nci       33553445->   2857408(11.74),         431MB/s ,        1210.7MB/s
    1#nci       33553445->   2849306(11.78),       565.4MB/s ,        1220.2MB/s     9.47%
    2#nci       33553445->   2890166(11.61),       508.2MB/s ,        1128.4MB/s     9.72%
    3#nci       33553445->   2857408(11.74),       429.1MB/s ,        1097.7MB/s    10.29%
    1#ooffice    6152192->   3590954(1.713),       231.4MB/s ,         662.6MB/s
    2#ooffice    6152192->   3323931(1.851),       162.8MB/s ,         592.6MB/s
    3#ooffice    6152192->   3145625(1.956),        99.9MB/s ,         549.6MB/s
    1#ooffice    6152192->   3590954(1.713),       224.7MB/s ,         624.2MB/s     6.15%
    2#ooffice    6152192->   3323931 (1.851),        155MB/s ,         564.5MB/s     4.98%
    3#ooffice    6152192->   3145625(1.956),       101.1MB/s ,         521.2MB/s     5.45%
    1#osdb      10085684->   3739042(2.697),       271.9MB/s           876.4MB/s
    2#osdb      10085684->   3493875(2.887),       208.2MB/s             857MB/s
    3#osdb      10085684->   3515831(2.869),       135.3MB/s           805.4MB/s
    1#osdb      10085684->   3739042(2.697),       257.4MB/s           793.8MB/s    10.41%
    2#osdb      10085684->   3493875(2.887),       209.7MB/s           776.1MB/s    10.42%
    3#osdb      10085684->   3515831(2.869),       130.6MB/s           727.7MB/s    10.68%
    1#reymont    6627202->   2152771(3.078),       198.9MB/s           696.2MB/s
    2#reymont    6627202->   2071140(3.200),         170MB/s           595.2MB/s
    3#reymont    6627202->   1953597(3.392),       128.5MB/s           609.7MB/s
    1#reymont    6627202->   2152771(3.078),       199.6MB/s           655.2MB/s     6.26%
    2#reymont    6627202->   2071140(3.200),       168.2MB/s           554.4MB/s     7.36%
    3#reymont    6627202->   1953597(3.392),       128.7MB/s           557.4MB/s     9.38%
    1#samba     21606400->   5510994(3.921),       338.1MB/s            1066MB/s
    2#samba     21606400->   5240208(4.123),       258.7MB/s           992.3MB/s
    3#samba     21606400->   5003358(4.318),       200.2MB/s           991.1MB/s
    1#samba     21606400->   5510994(3.921),       330.8MB/s             974MB/s     9.45%
    2#samba     21606400->   5240208(4.123),       257.9MB/s           919.4MB/s     7.93%
    3#samba     21606400->   5003358(4.318),       198.5MB/s           908.9MB/s     9.04%
    1#sao        7251944->   6256401(1.159),       194.6MB/s           602.2MB/s
    2#sao        7251944->   5808761(1.248),       128.2MB/s           532.1MB/s
    3#sao        7251944->   5556318(1.305),          73MB/s           509.4MB/s
    1#sao        7251944->   6256401(1.159),       198.7MB/s           580.7MB/s     3.70%
    2#sao        7251944->   5808761(1.248),       129.1MB/s           502.7MB/s     5.85%
    3#sao        7251944->   5556318(1.305),        74.6MB/s           493.1MB/s     3.31%
    1#webster   41458703->  13692222(3.028),       222.3MB/s             752MB/s
    2#webster   41458703->  12842646(3.228),       157.6MB/s           532.2MB/s
    3#webster   41458703->  12191964(3.400),         124MB/s           468.5MB/s
    1#webster   41458703->  13692222(3.028),       219.7MB/s             697MB/s     7.89%
    2#webster   41458703->  12842646(3.228),       153.9MB/s           495.4MB/s     7.43%
    3#webster   41458703->  12191964(3.400),       124.8MB/s           444.8MB/s     5.33%
    1#xml        5345280->    696652(7.673),         485MB/s ,        1333.9MB/s
    2#xml        5345280->    681492(7.843),       405.2MB/s ,        1237.5MB/s
    3#xml        5345280->    639057(8.364),       328.5MB/s ,        1281.3MB/s
    1#xml        5345280->    696652(7.673),       473.1MB/s ,        1232.4MB/s     8.24%
    2#xml        5345280->    681492(7.843),       398.6MB/s ,        1145.9MB/s     7.99%
    3#xml        5345280->    639057(8.364),       327.1MB/s ,          1175MB/s     9.05%
    1#x-ray      8474240->   6772557(1.251),       521.3MB/s           762.6MB/s
    2#x-ray      8474240->   6684531(1.268),       230.5MB/s           688.5MB/s
    3#x-ray      8474240->   6166679(1.374),        68.7MB/s           478.8MB/s
    1#x-ray      8474240->   6772557(1.251),       502.8MB/s           736.7MB/s     3.52%
    2#x-ray      8474240->   6684531(1.268),       224.4MB/s             662MB/s     4.00%
    3#x-ray      8474240->   6166679(1.374),        67.3MB/s           437.8MB/s     9.37%

                                                                                     7.51%

* makefile changed to only pass -fno-tree-vectorize to gcc

* <Replace this line with a title. Use 1 line only, 67 chars or less>

Don't add "no-tree-vectorize" attribute on clang (which defines __GNUC__)

* fix for warning/error with subtraction of void* pointers

* fix c90 conformance issue - ISO C90 forbids mixed declarations and code

* Fix assert for negative diff, only when there is no overlap

* fix overflow revealed in fuzzing tests

* tweak for small speed increase

6 years agoupdated double_fast complementary insertion
Yann Collet [Thu, 11 Jul 2019 22:25:22 +0000 (15:25 -0700)] 
updated double_fast complementary insertion

in a way which is more favorable to compression ratio,
though very slightly slower (~-1%).

More details in the PR.

6 years agoMerge pull request #1675 from ephiepark/dev
Yann Collet [Wed, 10 Jul 2019 20:32:31 +0000 (13:32 -0700)] 
Merge pull request #1675 from ephiepark/dev

Factor out the logic to build sequences

6 years agoupdated .gitignore
Yann Collet [Tue, 9 Jul 2019 21:54:48 +0000 (14:54 -0700)] 
updated .gitignore

6 years agoupdated .gitignore rule
Yann Collet [Tue, 9 Jul 2019 21:44:22 +0000 (14:44 -0700)] 
updated .gitignore rule

6 years agoMerge pull request #1677 from LeeYoung624/gitignore_fix
Yann Collet [Tue, 9 Jul 2019 21:36:38 +0000 (14:36 -0700)] 
Merge pull request #1677 from LeeYoung624/gitignore_fix

fix gitignore errors

6 years agoupdated version number (to v1.4.1)
Yann Collet [Tue, 9 Jul 2019 18:43:59 +0000 (11:43 -0700)] 
updated version number (to v1.4.1)

also : added doc on context re-use, as suggested by @scherepanov at #1676

6 years agofix gitignore errors 1677/head
LeeYoung624 [Tue, 9 Jul 2019 10:00:17 +0000 (18:00 +0800)] 
fix gitignore errors

6 years agoMerge pull request #1671 from ephiepark/dev
Yann Collet [Thu, 4 Jul 2019 00:47:44 +0000 (17:47 -0700)] 
Merge pull request #1671 from ephiepark/dev

Adding targetCBlockSize param

6 years agoFactor out the logic to build sequences 1675/head
Ephraim Park [Mon, 24 Jun 2019 22:26:07 +0000 (15:26 -0700)] 
Factor out the logic to build sequences

6 years agoAdding targetCBlockSize param 1671/head
Ephraim Park [Mon, 24 Jun 2019 20:40:52 +0000 (13:40 -0700)] 
Adding targetCBlockSize param

6 years ago[fuzz] Add a compression fuzzer with randomly sized output buffer (#1670)
Nick Terrell [Wed, 3 Jul 2019 05:05:07 +0000 (22:05 -0700)] 
[fuzz] Add a compression fuzzer with randomly sized output buffer (#1670)

6 years agoZSTD_compressSequences_internal assert op <= oend (#1667)
Nick Terrell [Tue, 2 Jul 2019 22:45:47 +0000 (15:45 -0700)] 
ZSTD_compressSequences_internal assert op <= oend (#1667)

When we wrote one byte beyond the end of the buffer for RLE
blocks back in 1.3.7, we would then have `op > oend`. That is
a problem when we use `oend - op` for the size of the destination
buffer, and allows further writes beyond the end of the buffer for
the rest of the function. Lets assert that it doesn't happen.

6 years agoMerge pull request #1658 from facebook/memset
Yann Collet [Mon, 1 Jul 2019 22:01:43 +0000 (15:01 -0700)] 
Merge pull request #1658 from facebook/memset

memset() rather than reduceIndex()

6 years agoMerge pull request #1664 from ephiepark/dev
Yann Collet [Mon, 1 Jul 2019 21:13:49 +0000 (14:13 -0700)] 
Merge pull request #1664 from ephiepark/dev

decodecorpus

6 years agoMerge pull request #7 from ephiepark/decodecorpus 1664/head
Ephraim Park [Mon, 1 Jul 2019 17:18:59 +0000 (10:18 -0700)] 
Merge pull request #7 from ephiepark/decodecorpus

reflect code review comments

6 years agoreflect code review comments
Ephraim Park [Mon, 1 Jul 2019 17:17:30 +0000 (10:17 -0700)] 
reflect code review comments

6 years agoMerge pull request #1665 from lzutao/meson-deprecated-warnings
Yann Collet [Sun, 30 Jun 2019 18:36:35 +0000 (11:36 -0700)] 
Merge pull request #1665 from lzutao/meson-deprecated-warnings

meson: Fix deprecated build warnings on build options

6 years agomeson: Always build gen_html on build machine 1665/head
Lzu Tao [Fri, 28 Jun 2019 19:05:05 +0000 (02:05 +0700)] 
meson: Always build gen_html on build machine

Because we use gen_html as a generator instead of a binary to
run on host machine.

6 years agomeson: Fix deprecated build warnings on build options
Lzu Tao [Fri, 28 Jun 2019 18:59:57 +0000 (01:59 +0700)] 
meson: Fix deprecated build warnings on build options

Meson now reserves the `build_` prefix for options

6 years agomeson: Beautify travis config
Lzu Tao [Fri, 28 Jun 2019 18:42:17 +0000 (01:42 +0700)] 
meson: Beautify travis config

6 years agoMerge pull request #6 from ephiepark/decodecorpus
Ephraim Park [Fri, 28 Jun 2019 00:38:50 +0000 (17:38 -0700)] 
Merge pull request #6 from ephiepark/decodecorpus

Add test case for short bistream

6 years agoAdd test case for short bistream
Ephraim Park [Fri, 28 Jun 2019 00:27:29 +0000 (17:27 -0700)] 
Add test case for short bistream

6 years agoAdding shrinking flag for cover and fastcover (#1656)
Tyler-Tran [Thu, 27 Jun 2019 23:26:57 +0000 (16:26 -0700)] 
Adding shrinking flag for cover and fastcover (#1656)

* Changed ERROR(GENERIC) excluding inits

* editing git ignore

* Edited init functions to size_t returns

* moved declarations earlier

* resolved issues with changes to init functions

* fixed style and an error check

* attempting to add tests that might trigger changes

* added && die to cases expecting to fail

* resolved no die on expected failed command

* fixed accel to be incorrect value

* Adding an automated shrinking option

* Fixing build

* finalizing fixes

* fix?

* Removing added comment in cover.h

* Styling fixes

* Merging with fb dev

* removing megic number for default regression

* Requested revisions

* fixing support for fast cover

* fixing casting errors

* parenthesis fix

* fixing some build nits

* resolving travis ci syntax

* might resolve all compilation issues

* removed unused variable

* remodeling the selectDict function

* fixing bad memory access

* fixing error checks

* fixed erroring check in selectDict

* fixing mixed declarations

* modify mixed declaration

* fixing nits and adding test cases

* Adding requested changes + fixed bug for error checking

* switched double comparison from != to <

* fixed declaration typing

* refactoring COVER_best_finish() and changing shrinkDict

* removing the const's

* modifying ZDICT_optimizeTrainFromBuffer_cover functions

* fixing potential bad memcpy

* fixing the error function for dict size

6 years agoMerge pull request #5 from ephiepark/decodecorpus
Ephraim Park [Thu, 27 Jun 2019 22:02:48 +0000 (15:02 -0700)] 
Merge pull request #5 from ephiepark/decodecorpus

Decodecorpus

6 years agoFix a constraint stricter than the spec 1663/head
Ephraim Park [Wed, 26 Jun 2019 23:43:37 +0000 (16:43 -0700)] 
Fix a constraint stricter than the spec

6 years agoenable repeat mode on rle
Ephraim Park [Wed, 26 Jun 2019 23:39:00 +0000 (16:39 -0700)] 
enable repeat mode on rle

6 years agochanged naming to ZSTD_indexTooCloseToMax() 1658/head
Yann Collet [Mon, 24 Jun 2019 21:39:29 +0000 (14:39 -0700)] 
changed naming to ZSTD_indexTooCloseToMax()

Also : minor speed optimization :
shortcut to ZSTD_reset_matchState() rather than the full reset process.
It still needs to be completed with ZSTD_continueCCtx() for proper initialization.

Also : changed position of LDM hash tables in the context,
so that the "regular" hash tables can be at a predictable position,
hence allowing the shortcut to ZSTD_reset_matchState() without complex conditions.

6 years agoMerge pull request #1659 from terrelln/big-dict
Nick Terrell [Mon, 24 Jun 2019 19:40:58 +0000 (12:40 -0700)] 
Merge pull request #1659 from terrelln/big-dict

Fix data corruption in niche use case

6 years ago[tests] Add tests for big dictionaries 1659/head
Nick Terrell [Sat, 22 Jun 2019 00:35:43 +0000 (17:35 -0700)] 
[tests] Add tests for big dictionaries

6 years agoprefer memset() rather than reduceIndex() when close to index range limit
Yann Collet [Fri, 21 Jun 2019 23:19:21 +0000 (16:19 -0700)] 
prefer memset() rather than reduceIndex() when close to index range limit

by disabling continue mode when index is close to limit.

6 years agobenchfn : added macro macro CONTROL()
Yann Collet [Fri, 21 Jun 2019 22:58:55 +0000 (15:58 -0700)] 
benchfn : added macro macro CONTROL()

like assert() but cannot be disabled.
proper separation of user contract errors (CONTROL())
and invariant verification (assert()).

6 years ago[zstd] Fix data corruption in niche use case
Nick Terrell [Fri, 21 Jun 2019 22:39:43 +0000 (15:39 -0700)] 
[zstd] Fix data corruption in niche use case

* Extract the overflow correction into a helper function.
* Load the dictionary `ZSTD_CHUNKSIZE_MAX = 512 MB` bytes at a time
  and overflow correct between each chunk.

Data corruption could happen when all these conditions are true:

* You are using multithreading mode
* Your overlap size is >= 512 MB (implies window size >= 512 MB)
* You are using a strategy >= ZSTD_btlazy
* You are compressing more than 4 GB

The problem is that when loading a large dictionary we don't do
overflow correction. We can only load 512 MB at a time, and may
need to do overflow correction before each chunk.

6 years ago[zstdmt] Update assert to use ZSTD_WINDOWLOG_MAX
Nick Terrell [Fri, 21 Jun 2019 22:39:33 +0000 (15:39 -0700)] 
[zstdmt] Update assert to use ZSTD_WINDOWLOG_MAX

6 years ago[opt] Add asserts for corruption in ZSTD_updateTree()
Nick Terrell [Fri, 21 Jun 2019 22:22:29 +0000 (15:22 -0700)] 
[opt] Add asserts for corruption in ZSTD_updateTree()

6 years agoMerge pull request #1626 from LeeYoung624/dev
Yann Collet [Wed, 19 Jun 2019 20:35:33 +0000 (13:35 -0700)] 
Merge pull request #1626 from LeeYoung624/dev

add cmake lz4 support

6 years agoMerge pull request #1655 from terrelln/regression-test
Nick Terrell [Mon, 17 Jun 2019 18:57:41 +0000 (11:57 -0700)] 
Merge pull request #1655 from terrelln/regression-test

[regression] Update results for small wlog patch PR#1624

6 years ago[regression] Update results for small wlog patch PR#1624 1655/head
Nick Terrell [Mon, 17 Jun 2019 17:40:33 +0000 (10:40 -0700)] 
[regression] Update results for small wlog patch PR#1624

6 years agoMerge pull request #1647 from LeeYoung624/cmake_bug_fix
Yann Collet [Sat, 15 Jun 2019 00:32:05 +0000 (17:32 -0700)] 
Merge pull request #1647 from LeeYoung624/cmake_bug_fix

CMake bug fix: didn't install zstdless and zstdgrep.

6 years agoMerge pull request #1640 from felixhandte/lstat-macro-guard
Yann Collet [Sat, 15 Jun 2019 00:30:03 +0000 (17:30 -0700)] 
Merge pull request #1640 from felixhandte/lstat-macro-guard

Protect lstat() With Better Macro Guard

6 years agoMerge pull request #1624 from facebook/smallwlog
Yann Collet [Sat, 15 Jun 2019 00:28:21 +0000 (17:28 -0700)] 
Merge pull request #1624 from facebook/smallwlog

Improves compression ratio for small windowLog

6 years agoMerge pull request #1650 from scharan/RemoveExportsForStaticLibrary
Yann Collet [Sat, 15 Jun 2019 00:09:00 +0000 (17:09 -0700)] 
Merge pull request #1650 from scharan/RemoveExportsForStaticLibrary

Remove ZSTD_DLL_EXPORT=1 for static lib

6 years agoMerge pull request #1644 from chungy/chmod_600
Yann Collet [Fri, 14 Jun 2019 00:25:31 +0000 (17:25 -0700)] 
Merge pull request #1644 from chungy/chmod_600

[programs] set chmod 600 after opening destination file

6 years agoRemove ZSTD_DLL_EXPORT=1 for static lib 1650/head
Sai Charan Koduru [Wed, 12 Jun 2019 19:26:36 +0000 (12:26 -0700)] 
Remove ZSTD_DLL_EXPORT=1 for static lib

As a principle, static libs should not dllexport methods, that should only be used when building DLLs.

Case in point: when static libs with dllexport directives are linked into DLLs created with a .def file, the VC++ compiler exports the dllexported methods into the DLL, in addition to the exports listed in the .def file. This will result in undesired link dependencies and is not the correct thing to do.

6 years agoInstall zstdless & zstdgrep as 'PROGRAMS' in CMake 1647/head
LeeYoung624 [Tue, 11 Jun 2019 03:29:18 +0000 (11:29 +0800)] 
Install zstdless & zstdgrep as 'PROGRAMS' in CMake

6 years agoMerge pull request #1620 from michaelforney/test-no-threads
Felix Handte [Tue, 11 Jun 2019 19:05:25 +0000 (15:05 -0400)] 
Merge pull request #1620 from michaelforney/test-no-threads

Skip --adapt and --rsyncable tests when built without thread support

6 years agoMerge pull request #1646 from terrelln/oss-fuzz
Nick Terrell [Tue, 11 Jun 2019 05:13:16 +0000 (22:13 -0700)] 
Merge pull request #1646 from terrelln/oss-fuzz

[fuzz] Remove max_len from the options

6 years agoMerge pull request #4 from facebook/dev 1626/head
Lee [Tue, 11 Jun 2019 03:25:26 +0000 (11:25 +0800)] 
Merge pull request #4 from facebook/dev

merge

6 years agoMerge pull request #1619 from j301scott/dev
Yann Collet [Mon, 10 Jun 2019 18:56:49 +0000 (11:56 -0700)] 
Merge pull request #1619 from j301scott/dev

CMake: Check for existing custom target 'uninstall'

6 years ago[fuzz] Remove max_len from the options 1646/head
Nick Terrell [Mon, 10 Jun 2019 18:05:45 +0000 (11:05 -0700)] 
[fuzz] Remove max_len from the options

6 years agoAdd Contbuild Test for C99 Build 1640/head
W. Felix Handte [Mon, 10 Jun 2019 15:21:28 +0000 (11:21 -0400)] 
Add Contbuild Test for C99 Build

6 years agoMerge pull request #1642 from Absotively/dev
Felix Handte [Mon, 10 Jun 2019 14:39:25 +0000 (10:39 -0400)] 
Merge pull request #1642 from Absotively/dev

VS2010 project settings improvements

6 years ago[programs] Don’t try to chmod a dst file if it can’t be opened 1644/head
Mike Swanson [Sun, 9 Jun 2019 08:52:45 +0000 (01:52 -0700)] 
[programs] Don’t try to chmod a dst file if it can’t be opened

Repairs an oversight in my last commit, thanks @Cyan4973

6 years ago[programs] set chmod 600 after opening destination file
Mike Swanson [Sun, 9 Jun 2019 04:54:02 +0000 (21:54 -0700)] 
[programs] set chmod 600 after opening destination file

This resolves a race condition where zstd or unzstd may expose read
permissions beyond the original file allowed.  Mode 600 is used
temporarily during the compression and decompression write stage
and the new file inherits the original file’s mode at the end.

Fixes #1630

6 years agoIn VS2010+, turn off assembler output for libzstd & libzstd-dll, and don't export... 1642/head
Jen Pollock [Fri, 7 Jun 2019 23:21:51 +0000 (17:21 -0600)] 
In VS2010+, turn off assembler output for libzstd & libzstd-dll, and don't export functions from libzstd

6 years agoSwitch Macro Guarding lstat()
W. Felix Handte [Fri, 7 Jun 2019 19:31:33 +0000 (15:31 -0400)] 
Switch Macro Guarding lstat()

6 years agoClean Up Temp Files Produced By playTests.sh
W. Felix Handte [Fri, 7 Jun 2019 19:30:30 +0000 (15:30 -0400)] 
Clean Up Temp Files Produced By playTests.sh

6 years agoMerge pull request #1635 from terrelln/opt-opt
Nick Terrell [Thu, 6 Jun 2019 20:15:23 +0000 (13:15 -0700)] 
Merge pull request #1635 from terrelln/opt-opt

[libzstd] Optimize ZSTD_insertBt1() for repetitive data

6 years ago[regression] Update results.csv 1635/head
Nick Terrell [Thu, 6 Jun 2019 03:40:52 +0000 (20:40 -0700)] 
[regression] Update results.csv

6 years ago[libzstd] Optimize ZSTD_insertBt1() for repetitive data
Nick Terrell [Thu, 6 Jun 2019 03:20:55 +0000 (20:20 -0700)] 
[libzstd] Optimize ZSTD_insertBt1() for repetitive data

We would only skip at most 192 bytes at a time before this diff.
This was added to optimize long matches and skip the middle of the
match. However, it doesn't handle the case of repetitive data.

This patch keeps the optimization, but also handles repetitive data
by taking the max of the two return values.

```
> for n in $(seq 9); do echo strategy=$n; dd status=none if=/dev/zero bs=1024k count=1000 | command time -f %U ./zstd --zstd=strategy=$n >/dev/null; done
strategy=1
0.27
strategy=2
0.23
strategy=3
0.27
strategy=4
0.43
strategy=5
0.56
strategy=6
0.43
strategy=7
0.34
strategy=8
0.34
strategy=9
0.35
```

At level 19 with multithreading the compressed size of `silesia.tar` regresses 300 bytes, and `enwik8` regresses 100 bytes.
In single threaded mode `enwik8` is also within 100 bytes, and I didn't test `silesia.tar`.

Fixes Issue #1634.

6 years agoMerge pull request #1632 from ephiepark/dev
Yann Collet [Wed, 5 Jun 2019 19:30:21 +0000 (12:30 -0700)] 
Merge pull request #1632 from ephiepark/dev

CircleCI : use custom Docker Image with pre-installed dependencies

6 years agoMerge pull request #1633 from yk-tanigawa/patch-1
Felix Handte [Wed, 5 Jun 2019 18:55:19 +0000 (14:55 -0400)] 
Merge pull request #1633 from yk-tanigawa/patch-1

Update README.md

6 years agoUpdate README.md 1633/head
Yosuke Tanigawa [Wed, 5 Jun 2019 16:11:21 +0000 (09:11 -0700)] 
Update README.md

Fix minor typo in the documentation.

6 years agoMerge branch 'dev' of https://github.com/ephiepark/zstd into dev 1632/head
Ephraim Park [Wed, 5 Jun 2019 04:14:20 +0000 (21:14 -0700)] 
Merge branch 'dev' of https://github.com/ephiepark/zstd into dev

6 years agocircleci : remove install dependencies command from config.yml
Ephraim Park [Tue, 4 Jun 2019 19:18:33 +0000 (12:18 -0700)] 
circleci : remove install dependencies command from config.yml

6 years agocircleci : use custom docker image with installations
Ephraim Park [Tue, 4 Jun 2019 18:04:51 +0000 (11:04 -0700)] 
circleci : use custom docker image with installations

6 years agoMerge pull request #2 from ephiepark/circleci
Ephraim Park [Wed, 5 Jun 2019 03:53:29 +0000 (20:53 -0700)] 
Merge pull request #2 from ephiepark/circleci

CircleCI : use custom Docker Image with pre-installed dependencies

6 years agoMerge pull request #1631 from ephiepark/dev
Yann Collet [Tue, 4 Jun 2019 22:14:35 +0000 (15:14 -0700)] 
Merge pull request #1631 from ephiepark/dev

zstdcli : expose cpu load indicator for each file on -vv mode

6 years agoMerge pull request #1629 from facebook/streamSize
Yann Collet [Tue, 4 Jun 2019 19:38:43 +0000 (12:38 -0700)] 
Merge pull request #1629 from facebook/streamSize

Added comments on I/O buffer sizes for streaming

6 years agocircleci : remove install dependencies command from config.yml
Ephraim Park [Tue, 4 Jun 2019 19:18:33 +0000 (12:18 -0700)] 
circleci : remove install dependencies command from config.yml

6 years agocircleci : use custom docker image with installations
Ephraim Park [Tue, 4 Jun 2019 18:04:51 +0000 (11:04 -0700)] 
circleci : use custom docker image with installations

6 years agobetter title formatting for html documentation 1629/head
Yann Collet [Tue, 4 Jun 2019 17:35:40 +0000 (10:35 -0700)] 
better title formatting for html documentation

must pay attention to /** and /*! patterns.

6 years agoAdded comments on I/O buffer sizes for streaming
Yann Collet [Tue, 4 Jun 2019 17:26:16 +0000 (10:26 -0700)] 
Added comments on I/O buffer sizes for streaming

It seems this is still a confusing topic,
as in https://github.com/klauspost/compress/issues/109 .

6 years agozstdcli : align output message with previous message 1631/head
Ephraim Park [Tue, 4 Jun 2019 16:42:18 +0000 (09:42 -0700)] 
zstdcli : align output message with previous message

6 years agozstdcli : remove extra semicolon
Ephraim Park [Tue, 4 Jun 2019 16:25:16 +0000 (09:25 -0700)] 
zstdcli : remove extra semicolon

6 years agozstdcli : trying to fix declaration after statement
Ephraim Park [Tue, 4 Jun 2019 16:23:49 +0000 (09:23 -0700)] 
zstdcli : trying to fix declaration after statement