9379 Commits

Author SHA1 Message Date
Carl Woffenden
dd7d29a19c Updated README 2022-01-19 15:57:33 +01:00
Carl Woffenden
7d90f0b520 Test and tidy
Made the Python more Python-like. Added notes and general tidy. Tested exclusions and building with various options. Tested all scripts.
2022-01-19 11:32:53 +01:00
Carl Woffenden
8f1e51f99f Feature parity with original shell script; needs further testing 2022-01-18 19:07:18 +01:00
Carl Woffenden
829ac2e9ce Work-in-progress; annotated types, added docs, parsed and resolved excluded files 2022-01-18 11:43:01 +01:00
Carl Woffenden
7e50d1e8c1 Using faster Python script to amalgamate 2022-01-17 18:59:54 +01:00
Felix Handte
f4a552a3fa
Merge pull request #2987 from felixhandte/prepare-v1.5.2
Prepare v1.5.2
2022-01-11 17:47:39 -05:00
Felix Handte
e113c0ca49
Merge pull request #2993 from hjl-tools/hjl/asm/dev
x86-64: Hide internal assembly functions
2022-01-11 14:31:51 -05:00
Felix Handte
4dfaf0003f
Merge pull request #2957 from hmaarrfk/fix_cmake_msvc
Fixup MSVC source file inclusion for cmake builds
2022-01-11 13:25:16 -05:00
Yann Collet
05e884f288
Merge pull request #2956 from sunwire/fix-tar-test-cases
Fix tar test cases
2022-01-11 10:16:34 -08:00
Yann Collet
78633272a0
Merge pull request #2982 from terrelln/decompress-progress-0
Fix stderr progress logging for decompression
2022-01-11 10:15:15 -08:00
H.J. Lu
568c69a4eb x86-64: Hide internal assembly functions
Hide x86-64 internal assembly functions. Before

$ nm -D lib/libzstd.so.1 | grep usingDTable_internal_bmi2_asm_loop
00000000000c23c0 T _HUF_decompress4X1_usingDTable_internal_bmi2_asm_loop
00000000000c23c0 T HUF_decompress4X1_usingDTable_internal_bmi2_asm_loop
00000000000c283d T _HUF_decompress4X2_usingDTable_internal_bmi2_asm_loop
00000000000c283d T HUF_decompress4X2_usingDTable_internal_bmi2_asm_loop
$

After

$ nm -D lib/libzstd.so.1 | grep usingDTable_internal_bmi2_asm_loop
$

This fixes issue #2990.
2022-01-11 10:12:24 -08:00
W. Felix Handte
144879a7cd Update Changelog 2022-01-10 12:48:40 -05:00
Nick Terrell
308a11b8e8 Fix stderr progress logging for decompression
When decompressing with `-q` and an output file, the progress bar was mistakenly printed. This is a minimal fix, with a larger refactor to be stacked on top of it.

Fixes #2967.
2022-01-07 15:09:56 -08:00
W. Felix Handte
e1323744b6 Update Docs 2022-01-07 14:14:26 -05:00
W. Felix Handte
46ad9377e8 Bump Version Number to 1.5.2 2022-01-07 14:14:26 -05:00
Nick Terrell
5f2c3d9720
Merge pull request #2981 from terrelln/asm-license
[license] Fix license header of huf_decompress_amd64.S
2022-01-07 11:06:30 -08:00
Nick Terrell
c7b03c217c [license] Fix license header of huf_decompress_amd64.S
* Add the license header for `huf_decompress_amd64.S`
* Add `.S` files to the `test-license.py` test
2022-01-07 09:35:27 -08:00
Nick Terrell
0677b26b6d
Merge pull request #2980 from terrelln/opt-oss-fuzz-fix
[opt] Fix oss-fuzz bug in optimal parser
2022-01-07 09:27:09 -08:00
Felix Handte
844c53ed75
Merge pull request #2977 from felixhandte/fix-2950
Remove Dependencies to Allow the Zstd Binary to Dynamically Link to the Library
2022-01-07 12:10:46 -05:00
Nick Terrell
4d8a2132d0 [opt] Fix oss-fuzz bug in optimal parser
oss-fuzz uncovered a scenario where we're evaluating the cost of litLength = 131072,
which can't be represented in the zstd format, so we accessed 1 beyond LL_bits.

Fix the issue by making it cost 1 bit more than litLength = 131071.

There are still follow ups:
1. This happened because literals_cost[0] = 0, so the optimal parser chose 36 literals
   over a match. Should we bound literals_cost[literal] > 0, unless the block truly only
   has one literal value?
2. When no matches are found, the cost model isn't updated. In this case no matches were
   found for an entire block. So the literals cost model wasn't updated at all. That made
   the optimal parser think literals_cost[0] = 0, where it is actually quite high, since
   the block was entirely random noise.

Credit to OSS-Fuzz.
2022-01-06 16:10:18 -08:00
W. Felix Handte
4bd96a61f1 Avoid xxHash Dependency by Inlining
xxHash symbols are present in `libzstd.so`, but they are local and therefore
unavailable outside the lib. There are two possible solutions to the problem.
We could make those symbols global, or we could remove the dependency.

This commit chooses the latter approach. I suppose this comes at the cost of
code size / build time. I'm open to comments on whether this is a good thing
to do, especially since this will apply even when we are statically linking
everything.
2022-01-06 00:25:26 -05:00
W. Felix Handte
fc946d131b Remove Unused Include 2022-01-06 00:25:26 -05:00
Felix Handte
26d88c05f0
Merge pull request #2953 from felixhandte/modulemap-improvements
Improve Module Map File
2022-01-05 23:54:50 -05:00
Mark Harfouche
df5ad5a0f1 Add a compile option to explicitely disable assembly 2022-01-05 20:38:00 -05:00
W. Felix Handte
1778222446 Update the Swift Package Definition to Reflect Move 2022-01-05 18:32:56 -05:00
W. Felix Handte
8dd943e42c Improve Module Map File
This commit makes several changes:

1. It adds modules for the dictionary builder and errors headers.
2. It captures all of the macros that are used to configure these headers.
   When the headers are imported as modules and one of these macros is defined
   the compiler issues a warning that it needs to be defined on the CLI.
3. It promotes the modulemap file into the root of the lib directory.
   Experimentation shows that clang's `-fimplicit-module-maps` will find the
   modulemap when placed here, but not when it's put in a subdirectory.
2022-01-05 18:32:53 -05:00
Felix Handte
7e679511a8
Merge pull request #2964 from felixhandte/noexecstack-all-archs
Mark Huffman Decoder Assembly `noexecstack` on All Architectures
2022-01-05 16:52:39 -05:00
W. Felix Handte
ff5d1daf33 Clean Up Debugging Statements 2022-01-05 16:13:00 -05:00
W. Felix Handte
ef1f9e80ff Restrict GNU-stack Note to GNU Assemblers 2022-01-05 16:03:32 -05:00
W. Felix Handte
b12edddb37 Write GNU-stack Section on All ELF Architectures
Previously we did this only on Linux, which missed other Unices.
2022-01-05 15:44:40 -05:00
W. Felix Handte
4620ce6a9a Makefiles: Add noexecstack Options to Compilation and Linking
Hopefully this marks the binary artifacts `noexecstack` even on platforms
where binaries default to true.
2022-01-05 15:12:31 -05:00
Nick Terrell
c592b463ca
Merge pull request #2972 from terrelln/meson-fix
[meson] Explicitly disable assembly for non clang/gcc copmilers
2022-01-05 09:27:33 -08:00
Yann Collet
3c2c3fbe4a
Merge pull request #2969 from facebook/fix2966_part1
fix performance issue in scenario #2966 (part 1)
2022-01-04 17:03:10 -08:00
Nick Terrell
c4f5116e95 [meson] Explicitly disable assembly for non clang/gcc copmilers
After merging #2951 I realized that we will want to explicitly disable
assembly when we aren't including the assembly source file. Otherwise,
if some non clang/gcc compiler does support assembly, it would fail to
build.
2022-01-04 16:05:59 -08:00
Nick Terrell
6c50042355
Merge pull request #2951 from eli-schwartz/msvc-no-asm
meson: fix MSVC support
2022-01-04 15:56:35 -08:00
W. Felix Handte
35208f702f Add Test Validating Stack is not Executable in playTests.sh 2022-01-04 16:57:35 -05:00
Yann Collet
41ad7332dd Updated expression for better readability 2022-01-04 09:07:11 -08:00
Yann Collet
a0b9520e38 fullbench: added compress_freshCCtx scenario 2022-01-02 08:52:33 -08:00
Yann Collet
213dc6110f fixed fullbench freshCCtx scenario 2022-01-01 23:46:49 -08:00
Yann Collet
8c53e526db fix performance issue in scenario #2966 (part 1)
When re-using a compression state, across multiple successive compressions,
the state should minimize the amount of allocation and initialization required.

This mostly matters in situations where initialization is an overwhelming task
compared to compression itself.
This can happen when the amount to compress is small,
while the compression state was given the impression that it would be much larger,
aka, streaming mode without providing a srcSize hint.

This lean-initialization optimization was broken in 980f3bbf8354edec0ad32b4430800f330185de6a .

This commit fixes it, making this scenario once again on par with v1.4.9.

Note that this does not completely fix #2966,
since another heavy initialization, specific to row mode,
is also happening (and was not present in v1.4.9).
This will be fixed in a separate commit.
2021-12-31 15:16:19 -08:00
Yann Collet
6211bfee5e fixed backup prototype for POOL_sizeof() 2021-12-30 14:33:21 -08:00
Yann Collet
b1978d60ee POOL_sizeof() only needs a const read-only reference 2021-12-30 14:08:51 -08:00
W. Felix Handte
9a9d1ec6f4 Mark Huffman Decoder Assembly noexecstack on All Architectures
Apparently, even when the assembly file is empty (because
`ZSTD_ENABLE_ASM_X86_64_BMI2` is false), it still is marked as possibly
needing an executable stack and so the whole library is marked as such. This
commit applies a simple patch for this problem by moving the noexecstack
indication outside the macro guard.

This commit builds on #2857.

This commit addresses #2963.
2021-12-29 17:47:12 -08:00
Yann Collet
fb14e2288e
Merge pull request #2962 from facebook/seqStore_off
Refactor offset+repcode sumtype
2021-12-29 16:07:36 -08:00
Yann Collet
ad7c9fc11e use ZSTD_memcpy(), for proper redirection within Linux Kernel 2021-12-28 17:41:47 -08:00
Yann Collet
8da414231d found a few more places which were dependent on seqStore offcode sumtype numeric representation 2021-12-28 17:03:24 -08:00
Yann Collet
4f63cb9755
Merge pull request #2960 from fwessels/patch-1
Fix mini typo
2021-12-28 16:07:40 -08:00
Yann Collet
0e83d1523b
Merge pull request #2954 from facebook/storeSeq_ml
storeSeq & mlBase : clarity refactoring
2021-12-28 15:42:21 -08:00
Yann Collet
de9f52e945 regroup all mentions of ZSTD_REP_MOVE within zstd_compress_internal.h 2021-12-28 13:47:57 -08:00
Yann Collet
a34ccad9a6 fixed minor conversion warnings 2021-12-28 13:21:22 -08:00