Yann Collet
0250ac74ce
fixed minor scan-build warnings
2018-09-24 00:52:19 -07:00
Yann Collet
292d8e4a83
added some tests based on limits.h
...
in order to ensure proper type mapping
when not using stdint.h
2018-09-23 23:57:30 -07:00
Yann Collet
0fc07eb1fd
fixed zstd-decompress
...
which cannot support ZSTD_minCLevel()
2018-09-22 17:21:39 -07:00
Yann Collet
364041c6dd
enforce minimum compression level limit
...
using ZSTD_minCLevel()
2018-09-22 16:10:10 -07:00
Yann Collet
0e211bdd18
fixed constant comparison on 32-bits systems
2018-09-21 18:23:32 -07:00
Yann Collet
71a5210617
avoid recompiling dll every time under mingw
2018-09-21 17:40:30 -07:00
Yann Collet
123fac6b6d
fix pzstd compatibility with mingw
...
some details changed with introduction of gcc7
2018-09-21 17:36:00 -07:00
Yann Collet
484f40697b
fix constant redeclaration in paramgrill
2018-09-21 17:28:37 -07:00
Yann Collet
32b7cf1bcf
fixed tautological tests
...
involving ZSTD_TARGETLENGTH_MIN (== 0)
2018-09-21 15:04:43 -07:00
Yann Collet
c044345f8f
Merge branch 'mingw' into minclevel
2018-09-21 14:56:57 -07:00
Yann Collet
54001f3dbc
fix mingw compatibility
...
only enable backtraces for platforms we know support it
aka mac OS-X and Linux.
can be extended later.
2018-09-21 14:46:09 -07:00
Yann Collet
a54c86cfc6
defined a minimum negative level
...
which can be probed using new function ZSTD_minCLevel().
Also : redefined ZSTD_TARGETLENGTH_MIN/MAX for consistency
used the opportunity to bump version number to v1.3.6
2018-09-20 16:52:03 -07:00
Yann Collet
005f000aed
updated documentation of *refPrefix()
...
indicating the equivalence with `diff` operation.
2018-09-18 13:07:08 -07:00
Yann Collet
7269fe6cd3
minor code comment update
2018-09-14 16:06:35 -07:00
Yann Collet
5512400677
updated code comments, based on @terrelln review
2018-09-13 16:44:04 -07:00
Yann Collet
d195eec97e
fixed msan error
...
cold dictionary is detected through a comparison with dictEnd,
which was not initialized at the beginning of first DCtx usage.
2018-09-13 12:29:52 -07:00
Yann Collet
674dd21bd0
final parameter tuning
2018-09-12 17:25:34 -07:00
Yann Collet
419dfd4ea3
clean traces
2018-09-12 16:40:28 -07:00
Yann Collet
2618253da2
fixed PREFETCH() macro
...
for corner cases and platforms without this instruction
2018-09-12 16:15:37 -07:00
Yann Collet
44d3b83bb1
conditional dict content prefetching
...
based on nbSeq.
2018-09-12 15:35:21 -07:00
Yann Collet
5fb5ed3b31
adjust heuristic decisions
2018-09-12 12:32:09 -07:00
Yann Collet
c49ccbc8e7
largeNbDicts : can select a nb of blocks
...
will automatically truncate or repeat input as needed,
to create the requested nb of blocks.
default: nb of files, eventually increased appropriately if blockSize is set
2018-09-12 11:31:28 -07:00
Yann Collet
4de344d505
added conditional prefetch
...
depending on amount of work to do.
2018-09-12 10:29:47 -07:00
Yann Collet
63a519dbf6
implemented first prefetch
...
based on dictID.
dictContent is prefetched up to 32 KB
(no contentSize adaptation)
2018-09-11 17:23:44 -07:00
Yann Collet
3675ef4762
added comment about minimum size of FSE tables
...
required for DDict creation,
which use this space as workspace during Hufman table building stage.
2018-09-10 11:24:17 -07:00
Yann Collet
f97ca36eab
strengthened conditions for using workplace into fse table space
...
ensure that the structure layout is as expected.
will trigger an error if it changes in the future.
Another solution would be to use a union,
this would be cleaner and get rid of these static asserts.
However, in order to keep the current code unmodified,
it would be necessary to use an un-named unions.
And apparently, un-named unions are only possible on "recent" compilers (C99+).
2018-09-06 17:54:13 -07:00
Yann Collet
b036b9a177
Merge branch 'islink' into Dworkspace
2018-09-06 17:33:27 -07:00
Yann Collet
deb03d8a26
fixed UTIL_isLink() for Mac OS-X
2018-09-06 17:32:16 -07:00
Yann Collet
87406548f0
reduced DDict size, by -2KB
...
corresponding to the removal of workspace
which is needed while building huffman table
and is now either present in DCtx,
or temporarily borrowed from available FSE table space.
2018-09-06 17:07:53 -07:00
Yann Collet
161ecddf3c
added code of conduct
...
as requested by Facebook OSS program.
2018-09-06 11:20:39 -07:00
Yann Collet
c57a856d64
fixed minor static analyzer warning
2018-09-05 14:33:51 -07:00
Yann Collet
55a8f84a2c
spec clarification
...
following #1305 comments from @ulikunitz
2018-09-05 12:31:33 -07:00
Yann Collet
1d487d587f
updated documentation
2018-09-04 14:57:45 -07:00
Yann Collet
11b8b8c100
silenced false-positive scan-build warning
2018-08-31 10:01:06 -07:00
Yann Collet
0ff67511e6
fixed link order for old compilers
2018-08-30 16:43:28 -07:00
Yann Collet
f76253bb70
minor : createDictionaryBuffer() can create dictionaries of different sizes
2018-08-30 16:24:44 -07:00
Yann Collet
39c55a118f
fixed minor compatibility issues with older compilers
2018-08-30 16:00:57 -07:00
Yann Collet
39ef91a599
-std=c99 for largeNbDicts
2018-08-30 14:59:23 -07:00
Yann Collet
4086b2871b
largeNbDicts compatible with multiple source files
...
splitting is disabled by default, but can be re-enabled using usual command -B#
update commands to look like zstd ones
2018-08-30 14:38:49 -07:00
Yann Collet
a5a77965d3
make all includes contrib/largeNbDicts
2018-08-29 16:17:22 -07:00
Yann Collet
d89fa814c1
added a README
...
for documentation
2018-08-28 18:19:19 -07:00
Yann Collet
6444c50035
increases randomness of ddict ptrs
2018-08-28 18:13:46 -07:00
Yann Collet
6c398df241
level, block size and nb dicts can be set on command line
2018-08-28 18:05:31 -07:00
Yann Collet
0c66a44d1b
first working test program
...
measures :
- compression ratio with / without dictionary
- create one dictionary per block
- memory budget for dictionaries
- decompression speed, using one different dictionary per block
current limitations :
- only one file
- 4K blocks only
- automatic dictionary built with 4K size
dictionary can be selected on command line, with -D
2018-08-28 15:47:07 -07:00
Yann Collet
0491037db9
Merge branch 'bench' into largeNbDicts
2018-08-28 11:26:46 -07:00
Yann Collet
55affc09de
timedFn : measurement delay is programmable
...
instead of hard-coded 1 second per measurement
2018-08-28 11:26:27 -07:00
Yann Collet
0ff9b67552
paramgrill: removed useless tests
...
designed to compensate iter_mode,
but since only time_mode is available now,
all tests are guaranteed to last a minimum amount of time.
2018-08-27 19:07:17 -07:00
Yann Collet
9e26893e07
paramgrill: fixed a bunch of div-by-zero
...
they were pretty easy to trigger by the way,
just start an extended paramgrill session
to find a compression table based on any sample,
it would necessarily happen at some point.
2018-08-27 18:47:09 -07:00
Yann Collet
0071e8348f
restored assert() in paramgrill
...
assert() in paramgrill are not in the benchmark path.
They should remain active, as they don't impact measurements, and their runtime is insignificant.
2018-08-27 17:52:04 -07:00
Yann Collet
274b60e6e6
largeNbDicts can compress and compare dict vs noDict
2018-08-27 17:08:44 -07:00
Yann Collet
d97e92dfad
Merge branch 'bench' into largeNbDicts
2018-08-27 12:12:51 -07:00
Yann Collet
01dcd0fd17
bench: minor api update, for consistency
...
BMK_benchTimedFn()
BMK_isCompleted_TimedFn() uses TimedFnState
2018-08-26 21:30:18 -07:00
Yann Collet
6782725155
first sketch for largeNbDicts test program
2018-08-26 19:29:12 -07:00
Yann Collet
c3a4baaf6e
fixed minor warnings
...
valgrind: memory leak of a few bytes in fullbench
static analyzer: uninitialized data passed as result
2018-08-24 23:25:35 -07:00
Yann Collet
2279f3d127
bench: reduce nb of return type
...
runOutcome is enough
removed timedFnOutcome
2018-08-24 17:28:38 -07:00
Yann Collet
6ce7b08f17
fix minor warnings
...
gcc : prototype with 0 parameter must be labelled (void)
visual : const property must be identical in both declaration and implementation
2018-08-24 15:59:57 -07:00
Yann Collet
7b23cc4d1e
fixed fullbench behavior
...
now same as v1.3.5
2018-08-24 12:40:10 -07:00
Yann Collet
4da5bdf482
fixed zstd -b speed result
...
the benchmark was displaying the speed of last run
instead of the best of all previous runs.
2018-08-23 18:13:49 -07:00
Yann Collet
b0e1f3982d
fixed paramgrill
...
to work with new bench.c
2018-08-23 17:21:38 -07:00
Yann Collet
1f9ec13621
introduced MB_UNIT
...
so that all benchmarking programs use the same speed scale
2018-08-23 16:03:30 -07:00
Yann Collet
d39a25c5ed
update fullbench.c to work with new bench.h
2018-08-23 15:00:09 -07:00
Yann Collet
2e45badff4
refactored bench.c
...
for clarity and safety, especially at interface level
2018-08-23 14:21:18 -07:00
Yann Collet
77e805e3db
bench: changed creation/reset function to timedFnState
...
for consistency
2018-08-21 18:19:27 -07:00
Yann Collet
36d6165a2d
Makefile: added variable SCANBUILD
...
so that a different version of scan-build can be selected
2018-08-16 16:44:13 -07:00
Yann Collet
1515f0bb0d
fixed more issues detected by recent version of scan-build
...
test run on Linux
2018-08-16 15:20:25 -07:00
Yann Collet
31224cc126
added static analyzer tests to travis CI
2018-08-15 17:44:27 -07:00
Yann Collet
5291d9ac31
fix scope of scan-build tests
...
exclude zlib code
2018-08-15 17:41:44 -07:00
Yann Collet
da55865e47
ensure dependency for zlib wrapper
2018-08-15 16:43:13 -07:00
Yann Collet
42a02ab745
fixed minor warnings issued by scan-build
2018-08-15 14:36:02 -07:00
Yann Collet
3692c31598
Merge branch 'dev' into scanbuild
2018-08-15 13:50:49 -07:00
Yann Collet
6e66bbf5dd
fixed several minor issues detected by scan-build
...
only notable one :
writeNCount() resists better vs invalid distributions
(though it should never happen within zstd anyway)
2018-08-14 16:55:35 -07:00
Yann Collet
754942cb79
fixed assert() condition
2018-08-09 15:57:19 -07:00
Yann Collet
79a35ac20d
minor code comments improvements
2018-08-09 15:16:31 -07:00
Yann Collet
51e71a5ec7
added zstdgrep documentation
...
presenting `zstdgrep` limit regarding dictionary compression
with workaround recommended by @tobwen (#1268 )
2018-08-09 12:28:25 -07:00
Yann Collet
d1afd48e44
some errors may only happen when optimizations are enabled
2018-08-08 12:37:08 -07:00
Yann Collet
23ab7875e1
try adding gcc-8 compilation tests
2018-08-08 10:26:54 -07:00
Yann Collet
93750a54a9
try to improve some travis test speed
2018-08-08 10:22:19 -07:00
Yann Collet
5808027abf
Merge branch 'dev' into fix1241
2018-08-03 16:08:33 -07:00
Yann Collet
2fdab1629b
fix unused variable warning
2018-08-03 08:30:01 -07:00
Yann Collet
ca785c4b20
fix .travis.yml
2018-08-03 07:59:33 -07:00
Yann Collet
5203f01774
fix : zstd cli can be built with build macro ZSTD_NOBENCH
...
which disables bench.c module
2018-08-03 07:54:29 -07:00
Yann Collet
b002eac69a
Merge branch 'dev' into travisTest
2018-08-02 11:53:46 -07:00
Yann Collet
064b8e6785
Merge branch 'travisTest' of github.com:facebook/zstd into travisTest
2018-08-02 11:52:12 -07:00
Yann Collet
bbd78df59b
add build macro NO_PREFETCH
...
prevent usage of prefetch intrinsic commands
which are not supported by c2rust
(see https://github.com/immunant/c2rust/issues/13 )
2018-07-06 17:06:04 -07:00
Yann Collet
b5207aadfa
make build tests more unforgiving
...
`-Werror` will ensure they fail if there is the slightest warning.
fix a minor warning specific to `zstd_decompress` variant.
2018-06-29 17:10:56 -07:00
Yann Collet
328ec7e34c
fix test-zstd can be run with parallel compilation
...
fix #1221
2018-06-29 16:52:21 -07:00
Yann Collet
ab1ebd6578
removed \ at end of line
2018-06-27 19:29:18 -07:00
Yann Collet
63c5b7b159
Merge branch 'dev' into travisTest
2018-06-27 19:28:24 -07:00
Yann Collet
1fd621ff6d
minor man page update
...
regarding advanced parameter `tlen`
which was recently changed.
`0` in association with `ZSTD_fast` now means "normal fast mode".
2018-06-27 18:49:02 -07:00
Yann Collet
ed1a429873
test multi-lines travis yaml file
2018-06-27 16:57:28 -07:00
Yann Collet
a55ffbb31b
removed unused imaged
2018-06-27 16:03:46 -07:00
Yann Collet
c0007893b4
added graph for cdict speed v1.3.5 improvements
2018-06-27 15:58:34 -07:00
Yann Collet
9c277f137c
attempt to re-enable arm64 tests
2018-06-27 13:19:14 -07:00
Yann Collet
4489daec09
slightly adjusted default-distribution threshold
...
depending on strategy.
fast favors faster compression and decompression speeds.
2018-06-26 20:10:45 -07:00
Yann Collet
ff773bfcde
zeroise freq table with memset()
...
improves decoding speed by ~5% in github_users sample set
2018-06-26 17:24:41 -07:00
Yann Collet
7b9bbf77c9
switched to a sizeof() version
...
avoid -Werror=unused-variable issue
2018-06-26 14:08:35 -07:00
Yann Collet
f98ec46979
updated DEBUG_STATIC_ASSERT()
...
following suggestion from #1209
2018-06-26 12:04:59 -07:00
Yann Collet
31769ce702
error on no forward progress
...
streaming decoders, such as ZSTD_decompressStream() or ZSTD_decompress_generic(),
may end up making no forward progress,
(aka no byte read from input __and__ no byte written to output),
due to unusual parameters conditions,
such as providing an output buffer already full.
In such case, the caller may be caught in an infinite loop,
calling the streaming decompression function again and again,
without making any progress.
This version detects such situation, and generates an error instead :
ZSTD_error_dstSize_tooSmall when output buffer is full,
ZSTD_error_srcSize_wrong when input buffer is empty.
The detection tolerates a number of attempts before triggering an error,
controlled by ZSTD_NO_FORWARD_PROGRESS_MAX macro constant,
which is set to 16 by default, and can be re-defined at compilation time.
This behavior tolerates potentially existing implementations
where such cases happen sporadically, like once or twice,
which is not dangerous (only infinite loops are),
without generating an error, hence without breaking these implementations.
2018-06-22 17:58:21 -07:00
Yann Collet
fbd5dfc1b1
changed POOL_resize() return type to int
...
return is now just en error code.
This guarantee that `ctx` remains valid after POOL_resize().
Gets rid of internal POOL_free() operation.
2018-06-22 12:14:59 -07:00
Yann Collet
698fd00afb
huf: increase threshold detection of poorly compressible data
2018-06-21 18:32:38 -07:00