]>
git.ipfire.org Git - thirdparty/zstd.git/log
Yann Collet [Wed, 21 Feb 2018 22:51:39 +0000 (14:51 -0800)]
Merge pull request #1020 from facebook/betterBench
updated fullbench measurement methodology
Yann Collet [Wed, 21 Feb 2018 19:42:23 +0000 (11:42 -0800)]
fullbench includes assert.h
as it is missing for Windows
Yann Collet [Wed, 21 Feb 2018 19:34:49 +0000 (11:34 -0800)]
fixed huf_compress workspace size
Yann Collet [Wed, 21 Feb 2018 15:30:26 +0000 (07:30 -0800)]
update fullbench measurement methodology
to use less calls to time(), like bench.c.
also upgraded accuracy to nanosecond.
Yann Collet [Wed, 21 Feb 2018 13:47:08 +0000 (05:47 -0800)]
Merge pull request #1019 from facebook/betterBench
improve benchmark measurement for small inputs
Yann Collet [Wed, 21 Feb 2018 00:52:28 +0000 (16:52 -0800)]
fixed minor conversion warning
Yann Collet [Tue, 20 Feb 2018 23:34:59 +0000 (15:34 -0800)]
Merge pull request #1017 from terrelln/c-bmi2
[compress] Support BMI2
Yann Collet [Tue, 20 Feb 2018 23:33:56 +0000 (15:33 -0800)]
use TIMELOOP_NANOSEC
as suggested by @terrelln
Yann Collet [Tue, 20 Feb 2018 22:48:09 +0000 (14:48 -0800)]
improve benchmark measurement for small inputs
by invoking time() once per batch, instead of once per compression / decompression.
Batch is dynamically resized so that each round lasts approximately 1 second.
Also : increases time accuracy to nanosecond
Nick Terrell [Tue, 20 Feb 2018 22:12:11 +0000 (14:12 -0800)]
[BMI2] Add comments to the bmi2 variable in the contexts
Yann Collet [Tue, 20 Feb 2018 20:54:49 +0000 (12:54 -0800)]
added clarification comments in zstd_errors.h
answering some points in #1018
Yann Collet [Thu, 15 Feb 2018 19:40:34 +0000 (11:40 -0800)]
Merge pull request #1011 from terrelln/bmi2
[decompress] Support BMI2
Nick Terrell [Thu, 15 Feb 2018 03:20:32 +0000 (19:20 -0800)]
[compress] Support BMI2
Nick Terrell [Sat, 3 Feb 2018 02:03:09 +0000 (18:03 -0800)]
[decompress] Support BMI2
Yann Collet [Tue, 13 Feb 2018 22:56:35 +0000 (14:56 -0800)]
fixed --single-thread
was incorrectly set to -T0 (use as many cores as possible) previously
Yann Collet [Tue, 13 Feb 2018 20:05:54 +0000 (12:05 -0800)]
Merge pull request #1014 from facebook/fasterDec
Faster decoding speed
Yann Collet [Tue, 13 Feb 2018 18:09:01 +0000 (10:09 -0800)]
pretify last unit test output
Yann Collet [Tue, 13 Feb 2018 18:02:25 +0000 (10:02 -0800)]
added code comment on how to generate default tables
as suggested by @terrelln
Yann Collet [Tue, 13 Feb 2018 00:52:15 +0000 (16:52 -0800)]
added SEQSYMBOL_TABLE_SIZE()
as suggested by @terrelln's comment
Yann Collet [Sun, 11 Feb 2018 05:05:48 +0000 (21:05 -0800)]
fixed logo path
Yann Collet [Sat, 10 Feb 2018 22:24:44 +0000 (14:24 -0800)]
Merge branch 'dev' into fasterDec
Yann Collet [Sat, 10 Feb 2018 22:19:54 +0000 (14:19 -0800)]
Merge pull request #1010 from facebook/flexibleLevel
Updatable compression parameters
Yann Collet [Sat, 10 Feb 2018 19:54:49 +0000 (11:54 -0800)]
Merge branch 'dev' into flexibleLevel
Yann Collet [Sat, 10 Feb 2018 00:13:55 +0000 (16:13 -0800)]
Merge pull request #1013 from facebook/fasterDec32
Disable Long Offset mode in 32-bits
Yann Collet [Fri, 9 Feb 2018 23:53:27 +0000 (15:53 -0800)]
specify new command --single-thread
Yann Collet [Fri, 9 Feb 2018 17:46:08 +0000 (09:46 -0800)]
fixed minor nit as per @terrelln's comments
Yann Collet [Fri, 9 Feb 2018 17:15:05 +0000 (09:15 -0800)]
Merge branch 'dev' into flexibleLevel
Yann Collet [Fri, 9 Feb 2018 17:14:25 +0000 (09:14 -0800)]
re-enabled ZSTD_decompressSequencesLong()
Yann Collet [Fri, 9 Feb 2018 14:01:02 +0000 (06:01 -0800)]
pre-calculated default decoding tables
Yann Collet [Fri, 9 Feb 2018 13:12:13 +0000 (05:12 -0800)]
fixed mono-symbol distribution
Yann Collet [Fri, 9 Feb 2018 12:50:58 +0000 (04:50 -0800)]
fixed default fse distributions
but would be better to pre-calculate tables, for speed
Yann Collet [Fri, 9 Feb 2018 12:25:15 +0000 (04:25 -0800)]
addBits and baseline into FSE decoding table
note : unfinished
- need new default tables
- need modify long mode
Yann Collet [Fri, 9 Feb 2018 10:41:02 +0000 (02:41 -0800)]
Merge branch 'dev' into fasterDec
Yann Collet [Thu, 8 Feb 2018 07:13:19 +0000 (23:13 -0800)]
fixed streaming_memory_usage example
also:
ensure zstd.h is read from ../lib (instead of /usr/include)
Yann Collet [Wed, 7 Feb 2018 22:22:35 +0000 (14:22 -0800)]
Merged ZSTD_preserveUnsortedMark() into ZSTD_reduceIndex()
as it's faster, due to one memory scan instead of two
(confirmed by microbenchmark).
Note : as ZSTD_reduceIndex() is rarely invoked,
it does not translate into a visible gain.
Consider it an exercise in auto-vectorization and micro-benchmarking.
Yann Collet [Mon, 5 Feb 2018 19:46:02 +0000 (11:46 -0800)]
minor : modified ZSTD_preserveUnsortedMark() to be more vectorization friendly
Yann Collet [Sun, 4 Feb 2018 07:54:10 +0000 (23:54 -0800)]
faster decoding in 32-bits mode for long offsets (tentative)
On my laptop:
Before:
./zstd32 -b --zstd=wlog=27 silesia.tar enwik8 -S
3#silesia.tar :
211984896 ->
66683478 (3.179), 97.6 MB/s , 400.7 MB/s
3#enwik8 :
100000000 ->
35643153 (2.806), 76.5 MB/s , 303.2 MB/s
After:
./zstd32 -b --zstd=wlog=27 silesia.tar enwik8 -S
3#silesia.tar :
211984896 ->
66683478 (3.179), 97.4 MB/s , 435.0 MB/s
3#enwik8 :
100000000 ->
35643153 (2.806), 76.2 MB/s , 338.1 MB/s
Mileage vary, depending on file, and cpu type.
But a generic rule is : x86 benefits less from "long-offset mode" than x64,
maybe due to register pressure.
On "entropy", long-mode is _never_ a win for x86.
On my laptop though, it may, depending on file and compression level
(enwik8 benefits more from "long-mode" than silesia).
Yann Collet [Sat, 3 Feb 2018 00:31:20 +0000 (16:31 -0800)]
ensure compression parameters are updated when only compression level is changed
Yann Collet [Fri, 2 Feb 2018 23:58:13 +0000 (15:58 -0800)]
zstdmt: applies new parameters on the fly
when invoked from ZSTD_compress_generic()
Yann Collet [Fri, 2 Feb 2018 22:24:56 +0000 (14:24 -0800)]
fileio: create dedicated function to generate zstd frames
like other formats
Yann Collet [Fri, 2 Feb 2018 18:04:55 +0000 (10:04 -0800)]
Merge pull request #1006 from systemcrash/patch-2
Update README.md
Yann Collet [Fri, 2 Feb 2018 18:04:40 +0000 (10:04 -0800)]
Merge pull request #1005 from systemcrash/dev
Update zstd.1
Yann Collet [Fri, 2 Feb 2018 04:16:00 +0000 (20:16 -0800)]
fixed minor conversion warning
Yann Collet [Fri, 2 Feb 2018 03:29:30 +0000 (19:29 -0800)]
Changed nbThreads for nbWorkers
This makes it easier to explain that nbWorkers=0 --> single-threaded mode,
while nbWorkers=1 --> asynchronous mode (one mode thread on top of the "main" caller thread).
No need for an additional asynchronous mode flag.
nbWorkers>=2 works the same as nbThreads>=2 previously.
Yann Collet [Fri, 2 Feb 2018 01:07:27 +0000 (17:07 -0800)]
clarified comments on LDM parameters
Yann Collet [Fri, 2 Feb 2018 00:13:31 +0000 (16:13 -0800)]
zstdmt: added ability to change compression parameters during compression
Yann Collet [Fri, 2 Feb 2018 00:13:04 +0000 (16:13 -0800)]
removed bitstream.h dependency
Yann Collet [Thu, 1 Feb 2018 22:43:32 +0000 (14:43 -0800)]
Merge pull request #1009 from terrelln/fail-early
Test for incorrect pledgeSrcSize earlier
Nick Terrell [Thu, 1 Feb 2018 20:04:05 +0000 (12:04 -0800)]
Test for incorrect pledgeSrcSize earlier
Yann Collet [Wed, 31 Jan 2018 20:49:07 +0000 (12:49 -0800)]
Merge pull request #1008 from terrelln/hlog3
Fix hashLog3 size when copying cdict tables
Nick Terrell [Wed, 31 Jan 2018 19:12:54 +0000 (11:12 -0800)]
[fuzzer] Check ZSTD_initStaticCDict() for every level
Nick Terrell [Tue, 30 Jan 2018 21:30:30 +0000 (13:30 -0800)]
Fix hashLog3 size when copying cdict tables
Yann Collet [Wed, 31 Jan 2018 06:49:47 +0000 (22:49 -0800)]
Merge pull request #1000 from facebook/progressiveFlush
Progressive flush
Yann Collet [Tue, 30 Jan 2018 23:05:12 +0000 (15:05 -0800)]
updated zstd api manual
Yann Collet [Tue, 30 Jan 2018 23:03:39 +0000 (15:03 -0800)]
fixed function declaration ZSTD_getBlockSize()
Yann Collet [Tue, 30 Jan 2018 22:43:36 +0000 (14:43 -0800)]
zstdmt: changed naming convention
to avoid confusion with blocks.
also:
- jobs are cut into chunks of 512KB now, to reduce nb of mutex calls.
- fix function declaration ZSTD_getBlockSizeMax()
- fix outdated comment
systemcrash [Mon, 29 Jan 2018 17:42:20 +0000 (18:42 +0100)]
Update README.md
spelling
systemcrash [Mon, 29 Jan 2018 17:38:02 +0000 (18:38 +0100)]
Update zstd.1
Yann Collet [Sun, 28 Jan 2018 06:23:26 +0000 (22:23 -0800)]
bumped version number to v1.3.4
also added a paragraph on using compression level with training mode
as this is a recurrent question (see for example #1004)
Yann Collet [Sat, 27 Jan 2018 02:18:42 +0000 (18:18 -0800)]
fixed minor conversion warning for C++ compilation mode
Yann Collet [Sat, 27 Jan 2018 02:09:25 +0000 (18:09 -0800)]
job mutex creation is checked
Yann Collet [Sat, 27 Jan 2018 01:48:33 +0000 (17:48 -0800)]
zstdmt: there is now one mutex/cond per job
Yann Collet [Sat, 27 Jan 2018 01:08:58 +0000 (17:08 -0800)]
zstdmt: minor code refactor for clarity
Yann Collet [Fri, 26 Jan 2018 22:35:54 +0000 (14:35 -0800)]
zstdmt: job table correctly cleaned after synchronous ZSTDMT_compress()
Yann Collet [Fri, 26 Jan 2018 21:00:14 +0000 (13:00 -0800)]
zstdmt : refactor a few member names
for clarity
Yann Collet [Fri, 26 Jan 2018 20:15:43 +0000 (12:15 -0800)]
zstdmt : flush() only lock to read shared job members
Other job members are accessed directly.
This avoids a full job copy, which would access everything,
including a few members that are supposed to be used by worker only,
uselessly requiring additional locks to avoid race conditions.
Yann Collet [Fri, 26 Jan 2018 19:06:34 +0000 (11:06 -0800)]
minor : ZSTDMT_writeLastEmptyBlock() is a void function
because it cannot fail
Yann Collet [Fri, 26 Jan 2018 18:44:09 +0000 (10:44 -0800)]
zstdmt : fixed memory leak
writeLastEmptyBlock() must release srcBuffer
as mtctx assumes it's done by job worker.
minor : changed 2 job member names (src->srcBuffer, srcStart->prefixStart) for clarity
Yann Collet [Fri, 26 Jan 2018 18:20:38 +0000 (10:20 -0800)]
zstdmt : refactor job members
grouped by sharing properties
Yann Collet [Fri, 26 Jan 2018 01:45:18 +0000 (17:45 -0800)]
fixed minor declaration-after-statement warning
Yann Collet [Fri, 26 Jan 2018 01:35:49 +0000 (17:35 -0800)]
zstdmt: removed job->jobCompleted
replaced by equivalent signal job->consumer == job->srcSize.
created additional functions
ZSTD_writeLastEmptyBlock()
and
ZSTDMT_writeLastEmptyBlock()
required when it's necessary to finish a frame with a last empty job, to create an "end of frame" marker.
It avoids creating a job with srcSize==0.
Yann Collet [Thu, 25 Jan 2018 22:52:34 +0000 (14:52 -0800)]
zstdmt:: renamed mutex and cond to underline they are context-global
Yann Collet [Wed, 24 Jan 2018 17:34:36 +0000 (09:34 -0800)]
Merge pull request #1001 from ne-sted/fix-defaults-align
cli: fix align of defaults
ne-sted [Wed, 24 Jan 2018 12:59:44 +0000 (14:59 +0200)]
cli: fix align of defaults
Yann Collet [Wed, 24 Jan 2018 02:00:51 +0000 (18:00 -0800)]
zstdmt : fixed complex sequencing bug
zstdmt would shortcut to single-thread blocking mode
in some rare cases where data is sent to be compressed but is not yet ready.
Yann Collet [Tue, 23 Jan 2018 23:52:40 +0000 (15:52 -0800)]
zstdmt : correctly set end of frame
Yann Collet [Tue, 23 Jan 2018 23:19:11 +0000 (15:19 -0800)]
zstdmt : fix end condition (ZSTD_e_end)
When ZSTD_e_end directive is provided,
the question is not only "are internal buffers completely flushed",
it is also "is current frame completed".
In some rare cases,
it was possible for internal buffers to be completely flushed,
triggering a @return == 0,
but frame was not completed as it needed a last null-size block to mark the end,
resulting in an unfinished frame.
Yann Collet [Tue, 23 Jan 2018 22:03:07 +0000 (14:03 -0800)]
zstdmt: fixed minor race condition
no real consequence, but pollute tsan tests :
job->dstBuff is being modified inside worker,
while main thread might read it accidentally
because it copies whole job.
But since it doesn't used dstBuff, there is no real consequence.
Other potential solution : only copy useful data, instead of whole job
Yann Collet [Tue, 23 Jan 2018 21:12:40 +0000 (13:12 -0800)]
zstdmt : fixed ending frame with 0-size block
Yann Collet [Tue, 23 Jan 2018 20:01:25 +0000 (12:01 -0800)]
Merge pull request #998 from facebook/zcat
add `zcat` symlink support, suggested by @wtarreau
Yann Collet [Sat, 20 Jan 2018 06:11:11 +0000 (22:11 -0800)]
zstreamtest : fixed test 32 : multi-thread compression
using ZSTD_compress_generic(,,ZSTD_e_end)
Since it already provides ZSTD_e_end as directive,
it should not be followed by ZSTDMT_endStream().
Yann Collet [Sat, 20 Jan 2018 02:19:09 +0000 (18:19 -0800)]
zstdmt : fixed last job size
Yann Collet [Sat, 20 Jan 2018 01:35:08 +0000 (17:35 -0800)]
zstdmt : finally vanquished an elusive and rare race condition
Yann Collet [Fri, 19 Jan 2018 21:19:59 +0000 (13:19 -0800)]
zstdmt : simplify job creation
job will not be created when not enough room within job Table
Yann Collet [Fri, 19 Jan 2018 20:41:56 +0000 (12:41 -0800)]
zstdmt: fixed corruption issue in ZSTDMT_endStream()
when invoked directly.
Yann Collet [Fri, 19 Jan 2018 19:26:35 +0000 (11:26 -0800)]
add `zcat` symlink support, suggested by @wtarreau
added some test
also updated relevant doc
+ fixed a mistake in `lz4` symlink support :
lz4 utility doesn't remove source files by default (like zstd, but unlike gzip).
The symlink must behave the same.
Yann Collet [Fri, 19 Jan 2018 18:01:40 +0000 (10:01 -0800)]
zstdmt uses POOL_tryAdd() to call a new worker
so that it's no longer a blocking call.
This makes it possible to stream out data gradually,
while waiting for a worker to become available.
Yann Collet [Fri, 19 Jan 2018 01:59:49 +0000 (17:59 -0800)]
Merge pull request #995 from facebook/progressiveMT
Progressive mt
Yann Collet [Fri, 19 Jan 2018 01:57:53 +0000 (17:57 -0800)]
Merge pull request #994 from facebook/constCDict
changed initStatic?Dict() return type to const ZSTD_?Dict*
Yann Collet [Fri, 19 Jan 2018 00:20:26 +0000 (16:20 -0800)]
fixed frame checksum issue
and race conditions
Yann Collet [Thu, 18 Jan 2018 22:39:51 +0000 (14:39 -0800)]
added POOL_tryAdd()
Yann Collet [Thu, 18 Jan 2018 21:36:43 +0000 (13:36 -0800)]
Merge branch 'dev' into constCDict
Yann Collet [Thu, 18 Jan 2018 21:35:24 +0000 (13:35 -0800)]
Merge branch 'progressiveMT' into progressiveFlush
Yann Collet [Thu, 18 Jan 2018 21:34:56 +0000 (13:34 -0800)]
Merge branch 'dev' into progressiveMT
Yann Collet [Thu, 18 Jan 2018 21:34:31 +0000 (13:34 -0800)]
Merge pull request #997 from terrelln/empty-dict
Set repcodes for empty ZSTD_CDict
Nick Terrell [Thu, 18 Jan 2018 21:28:30 +0000 (13:28 -0800)]
Set repcodes for empty ZSTD_CDict
When the dictionary is <= 8 bytes, no data is loaded from the dictionary.
In this case the repcodes weren't set, because they were inserted after the
size check. Fix this problem in general by first setting the cdict state to
a clean state of an empty dictionary, then filling the state from there.
Yann Collet [Thu, 18 Jan 2018 19:27:13 +0000 (11:27 -0800)]
fileio: READY_FOR_UPDATE() is now a function-like macro
as suggested by @terrelln
Yann Collet [Thu, 18 Jan 2018 19:15:23 +0000 (11:15 -0800)]
fixes for @terrelln comments
Yann Collet [Thu, 18 Jan 2018 19:03:27 +0000 (11:03 -0800)]
zstdmt: added ability to flush current job before it's completed
however, zstdmt may still wait on next available worker,
so it's not smooth yet.
Yann Collet [Thu, 18 Jan 2018 01:18:19 +0000 (17:18 -0800)]
fixed a few access contention
passes thread sanitizer test