]>
git.ipfire.org Git - thirdparty/zstd.git/log
Nick Terrell [Wed, 8 Mar 2017 21:45:58 +0000 (13:45 -0800)]
Avoid '#define inline /* ... */'
Take definition of `FORCE_INLINE` from `zstd_internal.h`.
Nick Terrell [Wed, 8 Mar 2017 21:45:10 +0000 (13:45 -0800)]
Fix ZSTD_sizeof_CStream()
Yann Collet [Fri, 3 Mar 2017 01:20:11 +0000 (17:20 -0800)]
Merge pull request #584 from terrelln/huff-repeat
Allow compressor to repeat Huffman tables
Yann Collet [Fri, 3 Mar 2017 01:14:57 +0000 (17:14 -0800)]
update NEWS on @iburinoc's 32-bits version improvement
Yann Collet [Fri, 3 Mar 2017 01:09:21 +0000 (17:09 -0800)]
disable prefetch-decode for 32-bits target
This decoder variant is detrimental to x86 architecture
likely due to register pressure.
Note that the variant is disabled for all 32-bits targets.
It's unclear if it would help for different architectures,
such as ARM, MIPS or PowerPC.
Yann Collet [Fri, 3 Mar 2017 00:42:50 +0000 (16:42 -0800)]
Merge pull request #582 from iburinoc/m32
Encode/decode offsets >= 32MB in 32-bits mode
Nick Terrell [Fri, 3 Mar 2017 00:38:07 +0000 (16:38 -0800)]
Use workspace for count and CTable
Sean Purcell [Thu, 2 Mar 2017 23:15:31 +0000 (15:15 -0800)]
Remove 'generic' inline strategy
Seems to avoid performance loss for compression.
Same strategy tested on decompression side, did not appear to improve
speed.
Sean Purcell [Thu, 2 Mar 2017 23:17:56 +0000 (15:17 -0800)]
Merge remote-tracking branch 'origin/dev' into m32
Nick Terrell [Thu, 2 Mar 2017 01:51:56 +0000 (17:51 -0800)]
Allow compressor to repeat Huffman tables
* Compressor saves most recently used Huffman table and reuses it
if it produces better results.
* I attempted to preserve CPU usage profile.
I intentionally left all of the existing heuristics in place.
There is only a speed difference on the second block and later.
When compressing large enough blocks (say >= 4 KiB) there is
no significant difference in compression speed.
Dictionary compression of one block is the same speed for blocks
with literals <= 1 KiB, and after that the difference is not
very significant.
* In the synthetic data, with blocks 10 KB or smaller, most blocks
can't use repeated tables because the previous block did not
contain a symbol that the current block contains.
Once blocks are about 12 KB or more, most previous blocks have
valid Huffman tables for the current block, and the compression
ratio and decompression speed jumped.
* In silesia blocks as small as 4KB can frequently reuse the
previous Huffman table (85%), but it isn't as profitable, and
the previous Huffman table only gets used about 3% of the time.
* Microbenchmarks show that `HUF_validateCTable()` takes ~55 ns
and `HUF_estimateCompressedSize()` takes ~35 ns.
They are decently well optimized, the first versions took 90 ns
and 120 ns respectively. `HUF_validateCTable()` could be twice as
fast, if we cast the `HUF_CElt*` to a `U32*` and compare to 0.
However, `U32` has an alignment of 4 instead of 2, so I think that
might be undefined behavior.
* I've ran `zstreamtest` compiled normally, with UASAN and with MSAN
for 4 hours each.
The worst case for the speed difference is a bunch of small blocks
in the same frame. I modified `bench.c` to compress the input in a
single frame but with blocks of the given block size, set by `-B`.
Benchmarks on level 1:
| Program | Block size | Corpus | Ratio | Compression MB/s | Decompression MB/s |
|-----------|------------|-----------|-------|------------------|--------------------|
| zstd.base | 256 | synthetic | 2.364 | 110.0 | 297.0 |
| zstd | 256 | synthetic | 2.367 | 108.9 | 297.0 |
| zstd.base | 256 | silesia | 2.204 | 93.8 | 415.7 |
| zstd | 256 | silesia | 2.204 | 93.4 | 415.7 |
| zstd.base | 512 | synthetic | 2.594 | 144.2 | 420.0 |
| zstd | 512 | synthetic | 2.599 | 141.5 | 425.7 |
| zstd.base | 512 | silesia | 2.358 | 118.4 | 432.6 |
| zstd | 512 | silesia | 2.358 | 119.8 | 432.6 |
| zstd.base | 1024 | synthetic | 2.790 | 192.3 | 594.1 |
| zstd | 1024 | synthetic | 2.794 | 192.3 | 600.0 |
| zstd.base | 1024 | silesia | 2.524 | 148.2 | 464.2 |
| zstd | 1024 | silesia | 2.525 | 148.2 | 467.6 |
| zstd.base | 4096 | synthetic | 3.023 | 300.0 | 1000.0 |
| zstd | 4096 | synthetic | 3.024 | 300.0 | 1010.1 |
| zstd.base | 4096 | silesia | 2.779 | 223.1 | 623.5 |
| zstd | 4096 | silesia | 2.779 | 223.1 | 636.0 |
| zstd.base | 16384 | synthetic | 3.131 | 350.0 | 1150.1 |
| zstd | 16384 | synthetic | 3.152 | 350.0 | 1630.3 |
| zstd.base | 16384 | silesia | 2.871 | 296.5 | 883.3 |
| zstd | 16384 | silesia | 2.872 | 294.4 | 898.3 |
Yann Collet [Thu, 2 Mar 2017 21:15:31 +0000 (13:15 -0800)]
Merge pull request #583 from terrelln/set-dictid
Set dictID to 0 for content only dictionaries
Nick Terrell [Thu, 2 Mar 2017 20:33:02 +0000 (12:33 -0800)]
Set dictID to 0 for content only dictionaries
Yann Collet [Thu, 2 Mar 2017 05:02:06 +0000 (21:02 -0800)]
fixed : build zstd cli after libzstd
Yann Collet [Thu, 2 Mar 2017 01:02:49 +0000 (17:02 -0800)]
make : added target shortest
shortest only run fast part of playTests.sh .
cc @iburinoc
Yann Collet [Thu, 2 Mar 2017 00:49:20 +0000 (16:49 -0800)]
added gzip tests
also : made sure zstd --format=gzip -V
would fail if gzip compatibility is not supported
Sean Purcell [Wed, 1 Mar 2017 22:36:25 +0000 (14:36 -0800)]
Offsets >= 32MB in 32-bits mode
Yann Collet [Wed, 1 Mar 2017 21:29:29 +0000 (13:29 -0800)]
xxhash can be included twice in any order
Previously,
followed by :
would fail to include the static definitions,
because the second include was simply skipped by guard macro.
Now it works as intended :
the missing static part is included during the second include.
Yann Collet [Wed, 1 Mar 2017 19:33:25 +0000 (11:33 -0800)]
solves warnings when compiling with global XXH_STATIC_LINKING_ONLY
XXH_STATIC_LINKING_ONLY protection macro is intended to be triggered just before the include.
The main idea is to keep this setting local :
user module shall explicitly understand and accept the static linking restriction
which becomes transparent when triggering the macro at project level.
Global definition also triggers redefinition warnings for user modules which do locally define the macro.
This new version compiles lib and cli without warning when the macro is set globally.
That's not a scenario to be recommended, since it trades a local effect for a global one,
but it was easy enough to provide from zstd side.
Yann Collet [Wed, 1 Mar 2017 19:02:04 +0000 (11:02 -0800)]
Merge pull request #579 from iburinoc/multiframe
Check to ensure ddict isn't null before dereference
Yann Collet [Wed, 1 Mar 2017 18:59:51 +0000 (10:59 -0800)]
Merge pull request #580 from facebook/speedStream
Improve streaming decompression speed
Yann Collet [Wed, 1 Mar 2017 01:44:17 +0000 (17:44 -0800)]
updated NEWS for 1.1.4
cmake, performance
Yann Collet [Tue, 28 Feb 2017 23:32:21 +0000 (15:32 -0800)]
Merge pull request #575 from Majlen/cmake-improvement
Cmake improvement
Sean Purcell [Tue, 28 Feb 2017 23:28:29 +0000 (15:28 -0800)]
Check to ensure ddict isn't null before dereference
Yann Collet [Tue, 28 Feb 2017 23:21:28 +0000 (15:21 -0800)]
Merge pull request #578 from inikep/dev
decompression: --rm is silent when input is stdin
Przemyslaw Skibinski [Tue, 28 Feb 2017 16:27:41 +0000 (17:27 +0100)]
travis.yml: fixed pull_request
Yann Collet [Tue, 28 Feb 2017 10:12:42 +0000 (02:12 -0800)]
fixed multi frames
Milan Ševčík [Mon, 27 Feb 2017 13:44:49 +0000 (14:44 +0100)]
Added compile flags to pzstd
Definition NDEBUG from original Makefile
-Wno-shadow silences shadowing in initializers
Milan Ševčík [Mon, 27 Feb 2017 12:56:04 +0000 (13:56 +0100)]
-Wstrict-prototypes is not supported with C++
Milan Ševčík [Fri, 10 Feb 2017 11:29:55 +0000 (12:29 +0100)]
Improve handling of library symlinks.
Previous method was failing to remove the symlinks when make clean was
invoked and wasn't portable.
Milan Ševčík [Thu, 9 Feb 2017 14:11:05 +0000 (15:11 +0100)]
Add zstdmt target in cmake
Milan Ševčík [Thu, 9 Feb 2017 14:10:24 +0000 (15:10 +0100)]
Support building contrib utils from cmake
Yann Collet [Tue, 28 Feb 2017 09:15:28 +0000 (01:15 -0800)]
fixed decoding skippable frames
Yann Collet [Tue, 28 Feb 2017 09:02:46 +0000 (01:02 -0800)]
added test for decompression with NULL dict and NULL DDict
previous version of ZSTD_decompressMultiFrame() would fail that test
Przemyslaw Skibinski [Tue, 28 Feb 2017 08:42:37 +0000 (09:42 +0100)]
cli : fix : --rm is silent when input is stdin (decompression)
Przemyslaw Skibinski [Tue, 28 Feb 2017 08:41:23 +0000 (09:41 +0100)]
update gzip tests
Yann Collet [Tue, 28 Feb 2017 08:14:28 +0000 (00:14 -0800)]
Improved speed of ZSTD_decompressStream()
When ZSTD_decompressStream() detects
that there is enough space in dst
to complete decompression in a single pass,
delegates to ZSTD_decompress(),
for an extra ~5% speed boost
Przemyslaw Skibinski [Tue, 28 Feb 2017 07:20:53 +0000 (08:20 +0100)]
updated .travis.yml (2)
Przemyslaw Skibinski [Tue, 28 Feb 2017 07:16:49 +0000 (08:16 +0100)]
updated .travis.yml
Yann Collet [Tue, 28 Feb 2017 04:55:22 +0000 (20:55 -0800)]
Merge branch 'decompressStream' into dev
Yann Collet [Tue, 28 Feb 2017 04:54:42 +0000 (20:54 -0800)]
Merge pull request #573 from facebook/ddict
Improved DDict memory usage
Yann Collet [Tue, 28 Feb 2017 01:58:02 +0000 (17:58 -0800)]
fullbench : -i0 displays list of functions to bench
Yann Collet [Tue, 28 Feb 2017 00:09:20 +0000 (16:09 -0800)]
added test case : --rm on stdin
must remain silent (instead of failing)
Yann Collet [Mon, 27 Feb 2017 23:58:38 +0000 (15:58 -0800)]
Merge branch 'dev' of github.com:facebook/zstd into dev
Yann Collet [Mon, 27 Feb 2017 23:57:50 +0000 (15:57 -0800)]
cli : fix : --rm is silent when input is stdin
previously, app would produce an error message, and stop.
Yann Collet [Mon, 27 Feb 2017 21:54:33 +0000 (13:54 -0800)]
Merge pull request #571 from inikep/dev11
gzip tests
Przemyslaw Skibinski [Mon, 27 Feb 2017 21:01:03 +0000 (22:01 +0100)]
use "./gzip" for gzip tests
Yann Collet [Mon, 27 Feb 2017 18:19:37 +0000 (10:19 -0800)]
Merge pull request #569 from iburinoc/testcorpus
Fix some more ARM compile errors
Yann Collet [Mon, 27 Feb 2017 18:19:08 +0000 (10:19 -0800)]
Merge pull request #572 from prashantkhandelwal/dev
Fix for a small typo
Przemyslaw Skibinski [Mon, 27 Feb 2017 12:21:05 +0000 (13:21 +0100)]
minor tweaks in FIO_decompressGzFrame
Prashant Khandelwal [Mon, 27 Feb 2017 10:58:22 +0000 (16:28 +0530)]
Fix for a small Typo
Yann Collet [Mon, 27 Feb 2017 08:27:30 +0000 (00:27 -0800)]
reduced ZSTD_DDict memory usage
saved 128 KB
Przemyslaw Skibinski [Mon, 27 Feb 2017 08:07:35 +0000 (09:07 +0100)]
update gzip tests
Przemyslaw Skibinski [Mon, 27 Feb 2017 07:56:43 +0000 (08:56 +0100)]
Merge remote-tracking branch 'refs/remotes/facebook/dev' into dev11
Sean Purcell [Mon, 27 Feb 2017 06:27:31 +0000 (22:27 -0800)]
Merge branch 'dev' into testcorpus
Yann Collet [Sun, 26 Feb 2017 22:43:07 +0000 (14:43 -0800)]
added ZSTD_refDDict()
Now DDict does no longer depends on DCtx duplication
Yann Collet [Sun, 26 Feb 2017 18:16:42 +0000 (10:16 -0800)]
loadEntropy works on new ZSTD_entropy_t type
Yann Collet [Sun, 26 Feb 2017 02:33:31 +0000 (18:33 -0800)]
created entropy structure type
Yann Collet [Sat, 25 Feb 2017 18:11:15 +0000 (10:11 -0800)]
Added DDict unit test in fuzzer
also : slightly modified loadEntropy :
know src must points at start of dictionary
Yann Collet [Sat, 25 Feb 2017 14:57:31 +0000 (06:57 -0800)]
Merge pull request #567 from inikep/dev11
faster Travis tests
Yann Collet [Sat, 25 Feb 2017 00:59:24 +0000 (16:59 -0800)]
Merge pull request #566 from facebook/forceRawDict
Force raw dict
Sean Purcell [Fri, 24 Feb 2017 18:53:16 +0000 (10:53 -0800)]
Fix some more ARM compile errors
https://travis-ci.org/facebook/zstd/jobs/
204807461
Can't get them to reproduce the compile errors locally,
tested fix by forcing that test to run on Travis.
Przemyslaw Skibinski [Fri, 24 Feb 2017 15:09:17 +0000 (16:09 +0100)]
added tests for gzip
Przemyslaw Skibinski [Fri, 24 Feb 2017 08:24:55 +0000 (09:24 +0100)]
fix uninitialized value warning
Yann Collet [Fri, 24 Feb 2017 08:16:05 +0000 (00:16 -0800)]
attempt to fix pthreat linking error
replacing -lpthread by -pthread
Yann Collet [Fri, 24 Feb 2017 07:42:12 +0000 (23:42 -0800)]
zstdmt : fix : loading prefix from previous segments
There used to be a (very small) chance that
loading prefix from previous segment
would be confused with a real zstd dictionary.
For that to happen, the prefix needs to start
with the same value as dictionary magic.
That's 1 chance in 4 billions if all values have equal probability.
But in fact, since some values are more common (0x00000000 for example)
others are less common, and dictionary magic was selected to be one of them,
so probabilities are likely even lower.
Anyway, this risk is no down to zero
by adding a new CCtx parameter : ZSTD_p_forceRawDict
Current parameter policy : the parameter "stick" to its CCtx,
so any dictionary loading after ZSTD_p_forceRawDict is set
will be loaded in "raw" ("content only") mode,
even if CCtx is re-used multiple times with multiple different dictionary.
It's up to the user to reset this value differently if it needs so.
Przemyslaw Skibinski [Fri, 24 Feb 2017 07:18:44 +0000 (08:18 +0100)]
rearrange Travis tests
Yann Collet [Fri, 24 Feb 2017 07:09:10 +0000 (23:09 -0800)]
minor tests/Makefile refactoring
and update of zstd_manual,html
Przemyslaw Skibinski [Fri, 24 Feb 2017 06:41:18 +0000 (07:41 +0100)]
Merge remote-tracking branch 'refs/remotes/facebook/dev' into dev11
Yann Collet [Fri, 24 Feb 2017 00:28:37 +0000 (16:28 -0800)]
Merge pull request #565 from iburinoc/testcorpus
Fix 32-bit -Wsign-compare issues in decodecorpus.c
Yann Collet [Fri, 24 Feb 2017 00:27:54 +0000 (16:27 -0800)]
Merge pull request #564 from iburinoc/doc
Move educational_decoder to doc/ and add doc README
Sean Purcell [Thu, 23 Feb 2017 23:53:44 +0000 (15:53 -0800)]
Fix -Wsign-compare issues in decodecorpus.c
https://travis-ci.org/facebook/zstd/jobs/
204423280
Sean Purcell [Thu, 23 Feb 2017 23:23:24 +0000 (15:23 -0800)]
Merge branch 'dev' into doc
Yann Collet [Thu, 23 Feb 2017 23:19:37 +0000 (15:19 -0800)]
Merge pull request #562 from iburinoc/testcorpus
Create a tool that generates random, valid, Zstd frames for decoder testing
Sean Purcell [Thu, 23 Feb 2017 22:34:52 +0000 (14:34 -0800)]
Move educational_decoder to doc/ and add doc README
- Also make some minor bugfixes to educational decoder
Yann Collet [Thu, 23 Feb 2017 21:39:36 +0000 (13:39 -0800)]
Merge pull request #558 from facebook/manual
Manual
Yann Collet [Thu, 23 Feb 2017 21:39:23 +0000 (13:39 -0800)]
Merge pull request #560 from iburinoc/findcompressedsize
Change name to to findFrameCompressedSize and add skippable support
Sean Purcell [Thu, 23 Feb 2017 21:06:50 +0000 (13:06 -0800)]
Update CLI and link from educational decoder
Sean Purcell [Thu, 23 Feb 2017 18:27:00 +0000 (10:27 -0800)]
Update tests/README.md
Przemyslaw Skibinski [Thu, 23 Feb 2017 17:28:48 +0000 (18:28 +0100)]
zlibWrapper: better description of ZWRAP_useZSTDcompression
Przemyslaw Skibinski [Thu, 23 Feb 2017 08:20:25 +0000 (09:20 +0100)]
Merge remote-tracking branch 'refs/remotes/facebook/dev' into dev11
Sean Purcell [Wed, 22 Feb 2017 23:59:15 +0000 (15:59 -0800)]
Create a tool that generates random, valid, Zstd frames for decoder testing
Note: Does not handle dictionaries currently
Yann Collet [Wed, 22 Feb 2017 23:32:22 +0000 (15:32 -0800)]
Merge pull request #561 from iburinoc/fsefix
Fix bug in FSE distribution normalization
Sean Purcell [Wed, 22 Feb 2017 21:52:48 +0000 (13:52 -0800)]
Fix bug in FSE distribution normalization
Sean Purcell [Wed, 22 Feb 2017 21:29:01 +0000 (13:29 -0800)]
Describe ambiguity around skippable frames
Sean Purcell [Wed, 22 Feb 2017 20:27:15 +0000 (12:27 -0800)]
Update comment
Sean Purcell [Wed, 22 Feb 2017 20:12:32 +0000 (12:12 -0800)]
Change name to to findFrameCompressedSize and add skippable support
Yann Collet [Wed, 22 Feb 2017 19:08:00 +0000 (11:08 -0800)]
fixed malloc(0) potential issue
Added test cases to cover #556 patch
Yann Collet [Wed, 22 Feb 2017 18:53:35 +0000 (10:53 -0800)]
Merge pull request #556 from sjnam/size_unknown
original size unknown
Yann Collet [Wed, 22 Feb 2017 18:52:36 +0000 (10:52 -0800)]
fixed c90/gnu90/gnu99 tests
Yann Collet [Wed, 22 Feb 2017 18:19:33 +0000 (10:19 -0800)]
Merge pull request #559 from inikep/arm-ppc-compilation
Reduced number of Travis tests to 7
Przemyslaw Skibinski [Wed, 22 Feb 2017 10:21:34 +0000 (11:21 +0100)]
travis.yml: test arm-ppc-compilation target
Przemyslaw Skibinski [Wed, 22 Feb 2017 10:07:28 +0000 (11:07 +0100)]
added arm-ppc-compilation Makefile target
Przemyslaw Skibinski [Wed, 22 Feb 2017 09:31:30 +0000 (10:31 +0100)]
minor tweaks
Yann Collet [Wed, 22 Feb 2017 09:10:43 +0000 (01:10 -0800)]
added `manual` target in root Makefile
`manual` target is added to `all` target
Yann Collet [Wed, 22 Feb 2017 08:57:50 +0000 (00:57 -0800)]
added `manual` target to contrib/gen_html/Makefile
Przemyslaw Skibinski [Wed, 22 Feb 2017 08:36:42 +0000 (09:36 +0100)]
travis.yml: fix versionsTest target
Przemyslaw Skibinski [Wed, 22 Feb 2017 08:21:04 +0000 (09:21 +0100)]
travis.yml: set "dist: trusty" as default
Przemyslaw Skibinski [Wed, 22 Feb 2017 07:54:56 +0000 (08:54 +0100)]
move Ubuntu packages install to Makefile
Przemyslaw Skibinski [Wed, 22 Feb 2017 07:15:17 +0000 (08:15 +0100)]
travis.yml: reduce number of jobs to 7
Przemyslaw Skibinski [Wed, 22 Feb 2017 07:14:54 +0000 (08:14 +0100)]
Merge remote-tracking branch 'refs/remotes/facebook/dev' into asan