extzstd 0.3.2 → 0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -3
- data/contrib/zstd/CHANGELOG +225 -1
- data/contrib/zstd/CONTRIBUTING.md +158 -75
- data/contrib/zstd/LICENSE +4 -4
- data/contrib/zstd/Makefile +106 -69
- data/contrib/zstd/Package.swift +36 -0
- data/contrib/zstd/README.md +64 -36
- data/contrib/zstd/SECURITY.md +15 -0
- data/contrib/zstd/TESTING.md +2 -3
- data/contrib/zstd/lib/BUCK +5 -7
- data/contrib/zstd/lib/Makefile +117 -199
- data/contrib/zstd/lib/README.md +37 -7
- data/contrib/zstd/lib/common/allocations.h +55 -0
- data/contrib/zstd/lib/common/bits.h +200 -0
- data/contrib/zstd/lib/common/bitstream.h +80 -86
- data/contrib/zstd/lib/common/compiler.h +225 -63
- data/contrib/zstd/lib/common/cpu.h +37 -1
- data/contrib/zstd/lib/common/debug.c +7 -1
- data/contrib/zstd/lib/common/debug.h +21 -12
- data/contrib/zstd/lib/common/entropy_common.c +15 -37
- data/contrib/zstd/lib/common/error_private.c +9 -2
- data/contrib/zstd/lib/common/error_private.h +93 -5
- data/contrib/zstd/lib/common/fse.h +12 -87
- data/contrib/zstd/lib/common/fse_decompress.c +37 -117
- data/contrib/zstd/lib/common/huf.h +97 -172
- data/contrib/zstd/lib/common/mem.h +58 -58
- data/contrib/zstd/lib/common/pool.c +38 -17
- data/contrib/zstd/lib/common/pool.h +10 -4
- data/contrib/zstd/lib/common/portability_macros.h +158 -0
- data/contrib/zstd/lib/common/threading.c +74 -14
- data/contrib/zstd/lib/common/threading.h +5 -10
- data/contrib/zstd/lib/common/xxhash.c +6 -814
- data/contrib/zstd/lib/common/xxhash.h +6930 -195
- data/contrib/zstd/lib/common/zstd_common.c +1 -36
- data/contrib/zstd/lib/common/zstd_deps.h +1 -1
- data/contrib/zstd/lib/common/zstd_internal.h +68 -154
- data/contrib/zstd/lib/common/zstd_trace.h +163 -0
- data/contrib/zstd/lib/compress/clevels.h +134 -0
- data/contrib/zstd/lib/compress/fse_compress.c +75 -155
- data/contrib/zstd/lib/compress/hist.c +1 -1
- data/contrib/zstd/lib/compress/hist.h +1 -1
- data/contrib/zstd/lib/compress/huf_compress.c +810 -259
- data/contrib/zstd/lib/compress/zstd_compress.c +2864 -919
- data/contrib/zstd/lib/compress/zstd_compress_internal.h +523 -192
- data/contrib/zstd/lib/compress/zstd_compress_literals.c +117 -40
- data/contrib/zstd/lib/compress/zstd_compress_literals.h +16 -6
- data/contrib/zstd/lib/compress/zstd_compress_sequences.c +28 -19
- data/contrib/zstd/lib/compress/zstd_compress_sequences.h +1 -1
- data/contrib/zstd/lib/compress/zstd_compress_superblock.c +251 -412
- data/contrib/zstd/lib/compress/zstd_compress_superblock.h +1 -1
- data/contrib/zstd/lib/compress/zstd_cwksp.h +284 -97
- data/contrib/zstd/lib/compress/zstd_double_fast.c +382 -133
- data/contrib/zstd/lib/compress/zstd_double_fast.h +14 -2
- data/contrib/zstd/lib/compress/zstd_fast.c +732 -260
- data/contrib/zstd/lib/compress/zstd_fast.h +3 -2
- data/contrib/zstd/lib/compress/zstd_lazy.c +1177 -390
- data/contrib/zstd/lib/compress/zstd_lazy.h +129 -14
- data/contrib/zstd/lib/compress/zstd_ldm.c +280 -210
- data/contrib/zstd/lib/compress/zstd_ldm.h +3 -2
- data/contrib/zstd/lib/compress/zstd_ldm_geartab.h +106 -0
- data/contrib/zstd/lib/compress/zstd_opt.c +516 -285
- data/contrib/zstd/lib/compress/zstd_opt.h +32 -8
- data/contrib/zstd/lib/compress/zstdmt_compress.c +202 -131
- data/contrib/zstd/lib/compress/zstdmt_compress.h +9 -6
- data/contrib/zstd/lib/decompress/huf_decompress.c +1149 -555
- data/contrib/zstd/lib/decompress/huf_decompress_amd64.S +595 -0
- data/contrib/zstd/lib/decompress/zstd_ddict.c +4 -4
- data/contrib/zstd/lib/decompress/zstd_ddict.h +1 -1
- data/contrib/zstd/lib/decompress/zstd_decompress.c +583 -106
- data/contrib/zstd/lib/decompress/zstd_decompress_block.c +1054 -379
- data/contrib/zstd/lib/decompress/zstd_decompress_block.h +14 -3
- data/contrib/zstd/lib/decompress/zstd_decompress_internal.h +56 -6
- data/contrib/zstd/lib/deprecated/zbuff.h +1 -1
- data/contrib/zstd/lib/deprecated/zbuff_common.c +1 -1
- data/contrib/zstd/lib/deprecated/zbuff_compress.c +24 -4
- data/contrib/zstd/lib/deprecated/zbuff_decompress.c +3 -1
- data/contrib/zstd/lib/dictBuilder/cover.c +60 -44
- data/contrib/zstd/lib/dictBuilder/cover.h +6 -11
- data/contrib/zstd/lib/dictBuilder/divsufsort.c +1 -1
- data/contrib/zstd/lib/dictBuilder/fastcover.c +26 -18
- data/contrib/zstd/lib/dictBuilder/zdict.c +100 -101
- data/contrib/zstd/lib/legacy/zstd_legacy.h +38 -1
- data/contrib/zstd/lib/legacy/zstd_v01.c +18 -53
- data/contrib/zstd/lib/legacy/zstd_v01.h +1 -1
- data/contrib/zstd/lib/legacy/zstd_v02.c +28 -85
- data/contrib/zstd/lib/legacy/zstd_v02.h +1 -1
- data/contrib/zstd/lib/legacy/zstd_v03.c +29 -88
- data/contrib/zstd/lib/legacy/zstd_v03.h +1 -1
- data/contrib/zstd/lib/legacy/zstd_v04.c +27 -80
- data/contrib/zstd/lib/legacy/zstd_v04.h +1 -1
- data/contrib/zstd/lib/legacy/zstd_v05.c +36 -85
- data/contrib/zstd/lib/legacy/zstd_v05.h +1 -1
- data/contrib/zstd/lib/legacy/zstd_v06.c +44 -96
- data/contrib/zstd/lib/legacy/zstd_v06.h +1 -1
- data/contrib/zstd/lib/legacy/zstd_v07.c +37 -92
- data/contrib/zstd/lib/legacy/zstd_v07.h +1 -1
- data/contrib/zstd/lib/libzstd.mk +237 -0
- data/contrib/zstd/lib/libzstd.pc.in +4 -3
- data/contrib/zstd/lib/module.modulemap +35 -0
- data/contrib/zstd/lib/{dictBuilder/zdict.h → zdict.h} +202 -33
- data/contrib/zstd/lib/zstd.h +1030 -332
- data/contrib/zstd/lib/{common/zstd_errors.h → zstd_errors.h} +27 -8
- data/ext/extconf.rb +26 -7
- data/ext/extzstd.c +51 -24
- data/ext/extzstd.h +33 -6
- data/ext/extzstd_stream.c +74 -31
- data/ext/libzstd_conf.h +0 -1
- data/ext/zstd_decompress_asm.S +1 -0
- metadata +17 -7
- data/contrib/zstd/appveyor.yml +0 -292
- data/ext/depend +0 -2
data/contrib/zstd/Makefile
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# ################################################################
|
2
|
-
# Copyright (c)
|
2
|
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
3
3
|
# All rights reserved.
|
4
4
|
#
|
5
5
|
# This source code is licensed under both the BSD-style license (found in the
|
@@ -29,6 +29,7 @@ VOID = /dev/null
|
|
29
29
|
# fail on other tested distros (ubuntu, debian) even
|
30
30
|
# without manually specifying the TARGET_SYSTEM.
|
31
31
|
TARGET_SYSTEM ?= $(OS)
|
32
|
+
CP ?= cp
|
32
33
|
|
33
34
|
ifneq (,$(filter Windows%,$(TARGET_SYSTEM)))
|
34
35
|
EXT =.exe
|
@@ -48,7 +49,7 @@ allmost: allzstd zlibwrapper
|
|
48
49
|
|
49
50
|
# skip zwrapper, can't build that on alternate architectures without the proper zlib installed
|
50
51
|
.PHONY: allzstd
|
51
|
-
allzstd: lib
|
52
|
+
allzstd: lib
|
52
53
|
$(Q)$(MAKE) -C $(PRGDIR) all
|
53
54
|
$(Q)$(MAKE) -C $(TESTDIR) all
|
54
55
|
|
@@ -57,9 +58,8 @@ all32:
|
|
57
58
|
$(MAKE) -C $(PRGDIR) zstd32
|
58
59
|
$(MAKE) -C $(TESTDIR) all32
|
59
60
|
|
60
|
-
.PHONY: lib lib-release
|
61
|
-
lib-
|
62
|
-
lib lib-release lib-all :
|
61
|
+
.PHONY: lib lib-release lib-mt lib-nomt
|
62
|
+
lib lib-release lib-mt lib-nomt:
|
63
63
|
$(Q)$(MAKE) -C $(ZSTDDIR) $@
|
64
64
|
|
65
65
|
.PHONY: zstd zstd-release
|
@@ -70,7 +70,7 @@ zstd zstd-release:
|
|
70
70
|
.PHONY: zstdmt
|
71
71
|
zstdmt:
|
72
72
|
$(Q)$(MAKE) -C $(PRGDIR) $@
|
73
|
-
$(Q)
|
73
|
+
$(Q)$(CP) $(PRGDIR)/zstd$(EXT) ./zstdmt$(EXT)
|
74
74
|
|
75
75
|
.PHONY: zlibwrapper
|
76
76
|
zlibwrapper: lib
|
@@ -123,8 +123,9 @@ contrib: lib
|
|
123
123
|
$(MAKE) -C contrib/seekable_format/examples all
|
124
124
|
$(MAKE) -C contrib/seekable_format/tests test
|
125
125
|
$(MAKE) -C contrib/largeNbDicts all
|
126
|
-
|
127
|
-
cd
|
126
|
+
$(MAKE) -C contrib/externalSequenceProducer all
|
127
|
+
cd build/single_file_libs/ ; ./build_decoder_test.sh
|
128
|
+
cd build/single_file_libs/ ; ./build_library_test.sh
|
128
129
|
|
129
130
|
.PHONY: cleanTabs
|
130
131
|
cleanTabs:
|
@@ -142,21 +143,23 @@ clean:
|
|
142
143
|
$(Q)$(MAKE) -C contrib/seekable_format/examples $@ > $(VOID)
|
143
144
|
$(Q)$(MAKE) -C contrib/seekable_format/tests $@ > $(VOID)
|
144
145
|
$(Q)$(MAKE) -C contrib/largeNbDicts $@ > $(VOID)
|
146
|
+
$(Q)$(MAKE) -C contrib/externalSequenceProducer $@ > $(VOID)
|
145
147
|
$(Q)$(RM) zstd$(EXT) zstdmt$(EXT) tmp*
|
146
|
-
$(Q)$(RM) -r lz4
|
148
|
+
$(Q)$(RM) -r lz4 cmakebuild install
|
147
149
|
@echo Cleaning completed
|
148
150
|
|
149
151
|
#------------------------------------------------------------------------------
|
150
152
|
# make install is validated only for Linux, macOS, Hurd and some BSD targets
|
151
153
|
#------------------------------------------------------------------------------
|
152
|
-
ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD DragonFly NetBSD MSYS_NT Haiku))
|
154
|
+
ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD DragonFly NetBSD MSYS_NT CYGWIN_NT Haiku AIX))
|
153
155
|
|
154
156
|
HOST_OS = POSIX
|
155
|
-
|
157
|
+
|
158
|
+
MKDIR ?= mkdir -p
|
156
159
|
|
157
160
|
HAVE_COLORNEVER = $(shell echo a | egrep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0)
|
158
161
|
EGREP_OPTIONS ?=
|
159
|
-
ifeq ($HAVE_COLORNEVER, 1)
|
162
|
+
ifeq ($(HAVE_COLORNEVER), 1)
|
160
163
|
EGREP_OPTIONS += --color=never
|
161
164
|
endif
|
162
165
|
EGREP = egrep $(EGREP_OPTIONS)
|
@@ -180,7 +183,7 @@ list:
|
|
180
183
|
done \
|
181
184
|
} | column -t -s $$'\t'
|
182
185
|
|
183
|
-
.PHONY: install armtest usan asan uasan
|
186
|
+
.PHONY: install armtest usan asan uasan msan asan32
|
184
187
|
install:
|
185
188
|
$(Q)$(MAKE) -C $(ZSTDDIR) $@
|
186
189
|
$(Q)$(MAKE) -C $(PRGDIR) $@
|
@@ -194,22 +197,28 @@ uninstall:
|
|
194
197
|
travis-install:
|
195
198
|
$(MAKE) install PREFIX=~/install_test_dir
|
196
199
|
|
197
|
-
.PHONY:
|
200
|
+
.PHONY: clangbuild-darwin-fat
|
201
|
+
clangbuild-darwin-fat: clean
|
202
|
+
clang -v
|
203
|
+
CXX=clang++ CC=clang CFLAGS="-Werror -Wconversion -Wno-sign-conversion -Wdocumentation -arch arm64" $(MAKE) zstd-release
|
204
|
+
mv programs/zstd programs/zstd_arm64
|
205
|
+
CXX=clang++ CC=clang CFLAGS="-Werror -Wconversion -Wno-sign-conversion -Wdocumentation -arch x86_64" $(MAKE) zstd-release
|
206
|
+
mv programs/zstd programs/zstd_x64
|
207
|
+
lipo -create programs/zstd_x64 programs/zstd_arm64 -output programs/zstd
|
208
|
+
|
209
|
+
.PHONY: gcc5build gcc6build gcc7build clangbuild m32build armbuild aarch64build ppcbuild ppc64build
|
198
210
|
gcc5build: clean
|
199
211
|
gcc-5 -v
|
200
|
-
CC=gcc-5 $(MAKE) all MOREFLAGS="-Werror"
|
212
|
+
CC=gcc-5 $(MAKE) all MOREFLAGS="-Werror $(MOREFLAGS)"
|
201
213
|
|
202
|
-
.PHONY: gcc6build
|
203
214
|
gcc6build: clean
|
204
215
|
gcc-6 -v
|
205
|
-
CC=gcc-6 $(MAKE) all MOREFLAGS="-Werror"
|
216
|
+
CC=gcc-6 $(MAKE) all MOREFLAGS="-Werror $(MOREFLAGS)"
|
206
217
|
|
207
|
-
.PHONY: gcc7build
|
208
218
|
gcc7build: clean
|
209
219
|
gcc-7 -v
|
210
|
-
CC=gcc-7 $(MAKE) all MOREFLAGS="-Werror"
|
220
|
+
CC=gcc-7 $(MAKE) all MOREFLAGS="-Werror $(MOREFLAGS)"
|
211
221
|
|
212
|
-
.PHONY: clangbuild
|
213
222
|
clangbuild: clean
|
214
223
|
clang -v
|
215
224
|
CXX=clang++ CC=clang CFLAGS="-Werror -Wconversion -Wno-sign-conversion -Wdocumentation" $(MAKE) all
|
@@ -222,61 +231,63 @@ armbuild: clean
|
|
222
231
|
CC=arm-linux-gnueabi-gcc CFLAGS="-Werror" $(MAKE) allzstd
|
223
232
|
|
224
233
|
aarch64build: clean
|
225
|
-
CC=aarch64-linux-gnu-gcc CFLAGS="-Werror" $(MAKE) allzstd
|
234
|
+
CC=aarch64-linux-gnu-gcc CFLAGS="-Werror -O0" $(MAKE) allzstd
|
226
235
|
|
227
236
|
ppcbuild: clean
|
228
|
-
CC=powerpc-linux-gnu-gcc CFLAGS="-m32 -Wno-attributes -Werror" $(MAKE) allzstd
|
237
|
+
CC=powerpc-linux-gnu-gcc CFLAGS="-m32 -Wno-attributes -Werror" $(MAKE) -j allzstd
|
229
238
|
|
230
239
|
ppc64build: clean
|
231
|
-
CC=powerpc-linux-gnu-gcc CFLAGS="-m64 -Werror" $(MAKE) allzstd
|
240
|
+
CC=powerpc-linux-gnu-gcc CFLAGS="-m64 -Werror" $(MAKE) -j allzstd
|
232
241
|
|
242
|
+
.PHONY: armfuzz aarch64fuzz ppcfuzz ppc64fuzz
|
233
243
|
armfuzz: clean
|
234
|
-
CC=arm-linux-gnueabi-gcc QEMU_SYS=qemu-arm-static MOREFLAGS="-static" FUZZER_FLAGS
|
244
|
+
CC=arm-linux-gnueabi-gcc QEMU_SYS=qemu-arm-static MOREFLAGS="-static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" $(MAKE) -C $(TESTDIR) fuzztest
|
235
245
|
|
236
246
|
aarch64fuzz: clean
|
237
247
|
ld -v
|
238
|
-
CC=aarch64-linux-gnu-gcc QEMU_SYS=qemu-aarch64-static MOREFLAGS="-static" FUZZER_FLAGS
|
248
|
+
CC=aarch64-linux-gnu-gcc QEMU_SYS=qemu-aarch64-static MOREFLAGS="-static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" $(MAKE) -C $(TESTDIR) fuzztest
|
239
249
|
|
240
250
|
ppcfuzz: clean
|
241
|
-
CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc-static MOREFLAGS="-static" FUZZER_FLAGS
|
251
|
+
CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc-static MOREFLAGS="-static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" $(MAKE) -C $(TESTDIR) fuzztest
|
242
252
|
|
243
253
|
ppc64fuzz: clean
|
244
|
-
CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static MOREFLAGS="-m64 -static" FUZZER_FLAGS
|
254
|
+
CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static MOREFLAGS="-m64 -static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" $(MAKE) -C $(TESTDIR) fuzztest
|
245
255
|
|
246
|
-
.PHONY: cxxtest
|
256
|
+
.PHONY: cxxtest gcc5test gcc6test armtest aarch64test ppctest ppc64test
|
247
257
|
cxxtest: CXXFLAGS += -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror
|
248
258
|
cxxtest: clean
|
249
259
|
$(MAKE) -C $(PRGDIR) all CC="$(CXX) -Wno-deprecated" CFLAGS="$(CXXFLAGS)" # adding -Wno-deprecated to avoid clang++ warning on dealing with C files directly
|
250
260
|
|
251
261
|
gcc5test: clean
|
252
262
|
gcc-5 -v
|
253
|
-
$(MAKE) all CC=gcc-5 MOREFLAGS="-Werror"
|
263
|
+
$(MAKE) all CC=gcc-5 MOREFLAGS="-Werror $(MOREFLAGS)"
|
254
264
|
|
255
265
|
gcc6test: clean
|
256
266
|
gcc-6 -v
|
257
|
-
$(MAKE) all CC=gcc-6 MOREFLAGS="-Werror"
|
267
|
+
$(MAKE) all CC=gcc-6 MOREFLAGS="-Werror $(MOREFLAGS)"
|
258
268
|
|
259
269
|
armtest: clean
|
260
270
|
$(MAKE) -C $(TESTDIR) datagen # use native, faster
|
261
|
-
$(MAKE) -C $(TESTDIR) test CC=arm-linux-gnueabi-gcc QEMU_SYS=qemu-arm-static ZSTDRTTEST= MOREFLAGS="-Werror -static" FUZZER_FLAGS
|
271
|
+
$(MAKE) -C $(TESTDIR) test CC=arm-linux-gnueabi-gcc QEMU_SYS=qemu-arm-static ZSTDRTTEST= MOREFLAGS="-Werror -static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)"
|
262
272
|
|
263
273
|
aarch64test:
|
264
274
|
$(MAKE) -C $(TESTDIR) datagen # use native, faster
|
265
|
-
$(MAKE) -C $(TESTDIR) test CC=aarch64-linux-gnu-gcc QEMU_SYS=qemu-aarch64-static ZSTDRTTEST= MOREFLAGS="-Werror -static" FUZZER_FLAGS
|
275
|
+
$(MAKE) -C $(TESTDIR) test CC=aarch64-linux-gnu-gcc QEMU_SYS=qemu-aarch64-static ZSTDRTTEST= MOREFLAGS="-Werror -static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)"
|
266
276
|
|
267
277
|
ppctest: clean
|
268
278
|
$(MAKE) -C $(TESTDIR) datagen # use native, faster
|
269
|
-
$(MAKE) -C $(TESTDIR) test CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc-static ZSTDRTTEST= MOREFLAGS="-Werror -Wno-attributes -static" FUZZER_FLAGS
|
279
|
+
$(MAKE) -C $(TESTDIR) test CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc-static ZSTDRTTEST= MOREFLAGS="-Werror -Wno-attributes -static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)"
|
270
280
|
|
271
281
|
ppc64test: clean
|
272
282
|
$(MAKE) -C $(TESTDIR) datagen # use native, faster
|
273
|
-
$(MAKE) -C $(TESTDIR) test CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static ZSTDRTTEST= MOREFLAGS="-m64 -static" FUZZER_FLAGS
|
283
|
+
$(MAKE) -C $(TESTDIR) test CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static ZSTDRTTEST= MOREFLAGS="-m64 -static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)"
|
274
284
|
|
285
|
+
.PHONY: arm-ppc-compilation
|
275
286
|
arm-ppc-compilation:
|
276
|
-
$(MAKE) -C $(PRGDIR) clean zstd CC=arm-linux-gnueabi-gcc QEMU_SYS=qemu-arm-static ZSTDRTTEST= MOREFLAGS="-Werror -static"
|
277
|
-
$(MAKE) -C $(PRGDIR) clean zstd CC=aarch64-linux-gnu-gcc QEMU_SYS=qemu-aarch64-static ZSTDRTTEST= MOREFLAGS="-Werror -static"
|
278
|
-
$(MAKE) -C $(PRGDIR) clean zstd CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc-static ZSTDRTTEST= MOREFLAGS="-Werror -Wno-attributes -static"
|
279
|
-
$(MAKE) -C $(PRGDIR) clean zstd CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static ZSTDRTTEST= MOREFLAGS="-m64 -static"
|
287
|
+
$(MAKE) -C $(PRGDIR) clean zstd CC=arm-linux-gnueabi-gcc QEMU_SYS=qemu-arm-static ZSTDRTTEST= MOREFLAGS="-Werror -static $(MOREFLAGS)"
|
288
|
+
$(MAKE) -C $(PRGDIR) clean zstd CC=aarch64-linux-gnu-gcc QEMU_SYS=qemu-aarch64-static ZSTDRTTEST= MOREFLAGS="-Werror -static $(MOREFLAGS)"
|
289
|
+
$(MAKE) -C $(PRGDIR) clean zstd CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc-static ZSTDRTTEST= MOREFLAGS="-Werror -Wno-attributes -static $(MOREFLAGS)"
|
290
|
+
$(MAKE) -C $(PRGDIR) clean zstd CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static ZSTDRTTEST= MOREFLAGS="-m64 -static $(MOREFLAGS)"
|
280
291
|
|
281
292
|
regressiontest:
|
282
293
|
$(MAKE) -C $(FUZZDIR) regressiontest
|
@@ -287,44 +298,64 @@ uasanregressiontest:
|
|
287
298
|
msanregressiontest:
|
288
299
|
$(MAKE) -C $(FUZZDIR) regressiontest CC=clang CXX=clang++ CFLAGS="-O3 -fsanitize=memory" CXXFLAGS="-O3 -fsanitize=memory"
|
289
300
|
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
301
|
+
update_regressionResults : REGRESS_RESULTS_DIR := /tmp/regress_results_dir/
|
302
|
+
update_regressionResults:
|
303
|
+
$(MAKE) -C programs zstd
|
304
|
+
$(MAKE) -C tests/regression test
|
305
|
+
$(RM) -rf $(REGRESS_RESULTS_DIR)
|
306
|
+
$(MKDIR) $(REGRESS_RESULTS_DIR)
|
307
|
+
./tests/regression/test \
|
308
|
+
--cache tests/regression/cache \
|
309
|
+
--output $(REGRESS_RESULTS_DIR)/results.csv \
|
310
|
+
--zstd programs/zstd
|
311
|
+
echo "Showing results differences"
|
312
|
+
! diff tests/regression/results.csv $(REGRESS_RESULTS_DIR)/results.csv
|
313
|
+
echo "Updating results.csv"
|
314
|
+
$(CP) $(REGRESS_RESULTS_DIR)/results.csv tests/regression/results.csv
|
315
|
+
|
316
|
+
|
317
|
+
# run UBsan with -fsanitize-recover=pointer-overflow
|
318
|
+
# this only works with recent compilers such as gcc 8+
|
294
319
|
usan: clean
|
295
|
-
$(MAKE) test CC=clang MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize
|
320
|
+
$(MAKE) test CC=clang MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=undefined -Werror $(MOREFLAGS)"
|
296
321
|
|
297
322
|
asan: clean
|
298
|
-
$(MAKE) test CC=clang MOREFLAGS="-g -fsanitize=address -Werror"
|
323
|
+
$(MAKE) test CC=clang MOREFLAGS="-g -fsanitize=address -Werror $(MOREFLAGS)"
|
299
324
|
|
300
325
|
asan-%: clean
|
301
|
-
LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=address -Werror" $(MAKE) -C $(TESTDIR) $*
|
326
|
+
LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=address -Werror $(MOREFLAGS)" $(MAKE) -C $(TESTDIR) $*
|
302
327
|
|
303
328
|
msan: clean
|
304
|
-
$(MAKE) test CC=clang MOREFLAGS="-g -fsanitize=memory -fno-omit-frame-pointer -Werror" HAVE_LZMA=0 # datagen.c fails this test for no obvious reason
|
329
|
+
$(MAKE) test CC=clang MOREFLAGS="-g -fsanitize=memory -fno-omit-frame-pointer -Werror $(MOREFLAGS)" HAVE_LZMA=0 # datagen.c fails this test for no obvious reason
|
305
330
|
|
306
|
-
msan-%:
|
307
|
-
|
331
|
+
msan-%:
|
332
|
+
$(MAKE) clean
|
333
|
+
LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=memory -fno-omit-frame-pointer -Werror $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" $(MAKE) -j -C $(TESTDIR) HAVE_LZMA=0 $*
|
308
334
|
|
309
335
|
asan32: clean
|
310
|
-
$(MAKE) -C $(TESTDIR) test32 CC=clang MOREFLAGS="-g -fsanitize=address"
|
336
|
+
$(MAKE) -C $(TESTDIR) test32 CC=clang MOREFLAGS="-g -fsanitize=address $(MOREFLAGS)"
|
311
337
|
|
312
338
|
uasan: clean
|
313
|
-
$(MAKE) test CC=clang MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize
|
339
|
+
$(MAKE) test CC=clang MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=address,undefined -Werror $(MOREFLAGS)"
|
314
340
|
|
315
341
|
uasan-%: clean
|
316
|
-
LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize
|
342
|
+
LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=address,undefined -Werror $(MOREFLAGS)" $(MAKE) -C $(TESTDIR) $*
|
317
343
|
|
318
344
|
tsan-%: clean
|
319
|
-
LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=thread -Werror" $(MAKE) -C $(TESTDIR) $* FUZZER_FLAGS
|
345
|
+
LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=thread -Werror $(MOREFLAGS)" $(MAKE) -C $(TESTDIR) $* FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)"
|
320
346
|
|
347
|
+
.PHONY: apt-install
|
321
348
|
apt-install:
|
349
|
+
# TODO: uncomment once issue 3011 is resolved and remove hack from Github Actions .yml
|
350
|
+
# sudo apt-get update
|
322
351
|
sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install $(APT_PACKAGES)
|
323
352
|
|
353
|
+
.PHONY: apt-add-repo
|
324
354
|
apt-add-repo:
|
325
355
|
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
326
356
|
sudo apt-get update -y -qq
|
327
357
|
|
358
|
+
.PHONY: ppcinstall arminstall valgrindinstall libc6install gcc6install gcc7install gcc8install gpp6install clang38install lz4install
|
328
359
|
ppcinstall:
|
329
360
|
APT_PACKAGES="qemu-system-ppc qemu-user-static gcc-powerpc-linux-gnu" $(MAKE) apt-install
|
330
361
|
|
@@ -361,43 +392,49 @@ endif
|
|
361
392
|
|
362
393
|
ifneq (,$(filter MSYS%,$(shell uname)))
|
363
394
|
HOST_OS = MSYS
|
364
|
-
CMAKE_PARAMS = -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Debug -DZSTD_MULTITHREAD_SUPPORT:BOOL=OFF -DZSTD_BUILD_STATIC:BOOL=ON -DZSTD_BUILD_TESTS:BOOL=ON
|
365
395
|
endif
|
366
396
|
|
367
|
-
|
368
397
|
#------------------------------------------------------------------------
|
369
398
|
# target specific tests
|
370
399
|
#------------------------------------------------------------------------
|
371
400
|
ifneq (,$(filter $(HOST_OS),MSYS POSIX))
|
372
|
-
cmakebuild:
|
373
|
-
cmake --version
|
374
|
-
$(RM) -r $(BUILDIR)/cmake/build
|
375
|
-
mkdir $(BUILDIR)/cmake/build
|
376
|
-
cd $(BUILDIR)/cmake/build; cmake -DCMAKE_INSTALL_PREFIX:PATH=~/install_test_dir $(CMAKE_PARAMS) ..
|
377
|
-
$(MAKE) -C $(BUILDIR)/cmake/build -j4;
|
378
|
-
$(MAKE) -C $(BUILDIR)/cmake/build install;
|
379
|
-
$(MAKE) -C $(BUILDIR)/cmake/build uninstall;
|
380
|
-
cd $(BUILDIR)/cmake/build; ctest -V -L Medium
|
381
401
|
|
402
|
+
CMAKE ?= cmake
|
403
|
+
CMAKE_PARAMS = -DZSTD_BUILD_CONTRIB:BOOL=ON -DZSTD_BUILD_STATIC:BOOL=ON -DZSTD_BUILD_TESTS:BOOL=ON -DZSTD_ZLIB_SUPPORT:BOOL=ON -DZSTD_LZMA_SUPPORT:BOOL=ON
|
404
|
+
|
405
|
+
ifneq (,$(filter MSYS%,$(shell uname)))
|
406
|
+
CMAKE_PARAMS = -G"MSYS Makefiles" -DZSTD_MULTITHREAD_SUPPORT:BOOL=OFF -DZSTD_BUILD_STATIC:BOOL=ON -DZSTD_BUILD_TESTS:BOOL=ON
|
407
|
+
endif
|
408
|
+
|
409
|
+
.PHONY: cmakebuild
|
410
|
+
cmakebuild:
|
411
|
+
$(CMAKE) --version
|
412
|
+
$(RM) -r cmakebuild install
|
413
|
+
$(MKDIR) cmakebuild install
|
414
|
+
cd cmakebuild; $(CMAKE) -Wdev -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS="-Werror -O0" -DCMAKE_INSTALL_PREFIX=install $(CMAKE_PARAMS) ../build/cmake
|
415
|
+
$(CMAKE) --build cmakebuild --target install -- -j V=1
|
416
|
+
cd cmakebuild; ctest -V -L Medium
|
417
|
+
|
418
|
+
.PHONY: c89build gnu90build c99build gnu99build c11build bmix64build bmix32build bmi32build staticAnalyze
|
382
419
|
c89build: clean
|
383
420
|
$(CC) -v
|
384
|
-
CFLAGS="-std=c89 -Werror" $(MAKE)
|
421
|
+
CFLAGS="-std=c89 -Werror -Wno-attributes -Wpedantic -Wno-long-long -Wno-variadic-macros -O0" $(MAKE) lib zstd
|
385
422
|
|
386
423
|
gnu90build: clean
|
387
424
|
$(CC) -v
|
388
|
-
CFLAGS="-std=gnu90 -Werror" $(MAKE) allmost
|
425
|
+
CFLAGS="-std=gnu90 -Werror -O0" $(MAKE) allmost
|
389
426
|
|
390
427
|
c99build: clean
|
391
428
|
$(CC) -v
|
392
|
-
CFLAGS="-std=c99 -Werror" $(MAKE) allmost
|
429
|
+
CFLAGS="-std=c99 -Werror -O0" $(MAKE) allmost
|
393
430
|
|
394
431
|
gnu99build: clean
|
395
432
|
$(CC) -v
|
396
|
-
CFLAGS="-std=gnu99 -Werror" $(MAKE) allmost
|
433
|
+
CFLAGS="-std=gnu99 -Werror -O0" $(MAKE) allmost
|
397
434
|
|
398
435
|
c11build: clean
|
399
436
|
$(CC) -v
|
400
|
-
CFLAGS="-std=c11 -Werror" $(MAKE) allmost
|
437
|
+
CFLAGS="-std=c11 -Werror -O0" $(MAKE) allmost
|
401
438
|
|
402
439
|
bmix64build: clean
|
403
440
|
$(CC) -v
|
@@ -416,5 +453,5 @@ bmi32build: clean
|
|
416
453
|
staticAnalyze: SCANBUILD ?= scan-build
|
417
454
|
staticAnalyze:
|
418
455
|
$(CC) -v
|
419
|
-
CC=$(CC) CPPFLAGS=-g $(SCANBUILD) --status-bugs -v $(MAKE)
|
456
|
+
CC=$(CC) CPPFLAGS=-g $(SCANBUILD) --status-bugs -v $(MAKE) zstd
|
420
457
|
endif
|
@@ -0,0 +1,36 @@
|
|
1
|
+
// swift-tools-version:5.0
|
2
|
+
// The swift-tools-version declares the minimum version of Swift required to build this package.
|
3
|
+
|
4
|
+
import PackageDescription
|
5
|
+
|
6
|
+
let package = Package(
|
7
|
+
name: "zstd",
|
8
|
+
platforms: [
|
9
|
+
.macOS(.v10_10), .iOS(.v9), .tvOS(.v9)
|
10
|
+
],
|
11
|
+
products: [
|
12
|
+
// Products define the executables and libraries a package produces, and make them visible to other packages.
|
13
|
+
.library(
|
14
|
+
name: "libzstd",
|
15
|
+
targets: [ "libzstd" ])
|
16
|
+
],
|
17
|
+
dependencies: [
|
18
|
+
// Dependencies declare other packages that this package depends on.
|
19
|
+
// .package(url: /* package url */, from: "1.0.0"),
|
20
|
+
],
|
21
|
+
targets: [
|
22
|
+
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
|
23
|
+
// Targets can depend on other targets in this package, and on products in packages this package depends on.
|
24
|
+
.target(
|
25
|
+
name: "libzstd",
|
26
|
+
path: "lib",
|
27
|
+
sources: [ "common", "compress", "decompress", "dictBuilder" ],
|
28
|
+
publicHeadersPath: ".",
|
29
|
+
cSettings: [
|
30
|
+
.headerSearchPath(".")
|
31
|
+
])
|
32
|
+
],
|
33
|
+
swiftLanguageVersions: [.v5],
|
34
|
+
cLanguageStandard: .gnu11,
|
35
|
+
cxxLanguageStandard: .gnucxx14
|
36
|
+
)
|
data/contrib/zstd/README.md
CHANGED
@@ -4,23 +4,21 @@ __Zstandard__, or `zstd` as short version, is a fast lossless compression algori
|
|
4
4
|
targeting real-time compression scenarios at zlib-level and better compression ratios.
|
5
5
|
It's backed by a very fast entropy stage, provided by [Huff0 and FSE library](https://github.com/Cyan4973/FiniteStateEntropy).
|
6
6
|
|
7
|
-
|
7
|
+
Zstandard's format is stable and documented in [RFC8878](https://datatracker.ietf.org/doc/html/rfc8878). Multiple independent implementations are already available.
|
8
|
+
This repository represents the reference implementation, provided as an open-source dual [BSD](LICENSE) OR [GPLv2](COPYING) licensed **C** library,
|
8
9
|
and a command line utility producing and decoding `.zst`, `.gz`, `.xz` and `.lz4` files.
|
9
10
|
Should your project require another programming language,
|
10
|
-
a list of known ports and bindings is provided on [Zstandard homepage](
|
11
|
+
a list of known ports and bindings is provided on [Zstandard homepage](https://facebook.github.io/zstd/#other-languages).
|
11
12
|
|
12
13
|
**Development branch status:**
|
13
14
|
|
14
15
|
[![Build Status][travisDevBadge]][travisLink]
|
15
|
-
[![Build status][AppveyorDevBadge]][AppveyorLink]
|
16
16
|
[![Build status][CircleDevBadge]][CircleLink]
|
17
17
|
[![Build status][CirrusDevBadge]][CirrusLink]
|
18
18
|
[![Fuzzing Status][OSSFuzzBadge]][OSSFuzzLink]
|
19
19
|
|
20
|
-
[travisDevBadge]: https://travis-ci.
|
21
|
-
[travisLink]: https://travis-ci.
|
22
|
-
[AppveyorDevBadge]: https://ci.appveyor.com/api/projects/status/xt38wbdxjk5mrbem/branch/dev?svg=true "Windows test suite"
|
23
|
-
[AppveyorLink]: https://ci.appveyor.com/project/YannCollet/zstd-p0yf0
|
20
|
+
[travisDevBadge]: https://api.travis-ci.com/facebook/zstd.svg?branch=dev "Continuous Integration test suite"
|
21
|
+
[travisLink]: https://travis-ci.com/facebook/zstd
|
24
22
|
[CircleDevBadge]: https://circleci.com/gh/facebook/zstd/tree/dev.svg?style=shield "Short test suite"
|
25
23
|
[CircleLink]: https://circleci.com/gh/facebook/zstd
|
26
24
|
[CirrusDevBadge]: https://api.cirrus-ci.com/github/facebook/zstd.svg?branch=dev
|
@@ -31,37 +29,36 @@ a list of known ports and bindings is provided on [Zstandard homepage](http://ww
|
|
31
29
|
## Benchmarks
|
32
30
|
|
33
31
|
For reference, several fast compression algorithms were tested and compared
|
34
|
-
on a
|
35
|
-
with a Core
|
32
|
+
on a desktop running Ubuntu 20.04 (`Linux 5.11.0-41-generic`),
|
33
|
+
with a Core i7-9700K CPU @ 4.9GHz,
|
36
34
|
using [lzbench], an open-source in-memory benchmark by @inikep
|
37
35
|
compiled with [gcc] 9.3.0,
|
38
36
|
on the [Silesia compression corpus].
|
39
37
|
|
40
38
|
[lzbench]: https://github.com/inikep/lzbench
|
41
|
-
[Silesia compression corpus]:
|
39
|
+
[Silesia compression corpus]: https://sun.aei.polsl.pl//~sdeor/index.php?page=silesia
|
42
40
|
[gcc]: https://gcc.gnu.org/
|
43
41
|
|
44
42
|
| Compressor name | Ratio | Compression| Decompress.|
|
45
43
|
| --------------- | ------| -----------| ---------- |
|
46
|
-
| **zstd 1.
|
47
|
-
| zlib 1.2.11 -1
|
48
|
-
| brotli 1.0.
|
49
|
-
| **zstd 1.
|
50
|
-
| **zstd 1.
|
51
|
-
| quicklz 1.5.0 -1 | 2.238 |
|
52
|
-
| **zstd 1.
|
53
|
-
| lzo1x 2.10 -1 | 2.106 |
|
54
|
-
| lz4 1.9.
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
58
|
-
|
59
|
-
[
|
60
|
-
[LZ4]: http://www.lz4.org/
|
44
|
+
| **zstd 1.5.1 -1** | 2.887 | 530 MB/s | 1700 MB/s |
|
45
|
+
| [zlib] 1.2.11 -1 | 2.743 | 95 MB/s | 400 MB/s |
|
46
|
+
| brotli 1.0.9 -0 | 2.702 | 395 MB/s | 450 MB/s |
|
47
|
+
| **zstd 1.5.1 --fast=1** | 2.437 | 600 MB/s | 2150 MB/s |
|
48
|
+
| **zstd 1.5.1 --fast=3** | 2.239 | 670 MB/s | 2250 MB/s |
|
49
|
+
| quicklz 1.5.0 -1 | 2.238 | 540 MB/s | 760 MB/s |
|
50
|
+
| **zstd 1.5.1 --fast=4** | 2.148 | 710 MB/s | 2300 MB/s |
|
51
|
+
| lzo1x 2.10 -1 | 2.106 | 660 MB/s | 845 MB/s |
|
52
|
+
| [lz4] 1.9.3 | 2.101 | 740 MB/s | 4500 MB/s |
|
53
|
+
| lzf 3.6 -1 | 2.077 | 410 MB/s | 830 MB/s |
|
54
|
+
| snappy 1.1.9 | 2.073 | 550 MB/s | 1750 MB/s |
|
55
|
+
|
56
|
+
[zlib]: https://www.zlib.net/
|
57
|
+
[lz4]: https://lz4.github.io/lz4/
|
61
58
|
|
62
59
|
The negative compression levels, specified with `--fast=#`,
|
63
|
-
offer faster compression and decompression speed
|
64
|
-
compression ratio compared to level 1
|
60
|
+
offer faster compression and decompression speed
|
61
|
+
at the cost of compression ratio (compared to level 1).
|
65
62
|
|
66
63
|
Zstd can also offer stronger compression ratios at the cost of compression speed.
|
67
64
|
Speed vs Compression trade-off is configurable by small increments.
|
@@ -124,14 +121,27 @@ Dictionary gains are mostly effective in the first few KB. Then, the compression
|
|
124
121
|
|
125
122
|
## Build instructions
|
126
123
|
|
124
|
+
`make` is the officially maintained build system of this project.
|
125
|
+
All other build systems are "compatible" and 3rd-party maintained,
|
126
|
+
they may feature small differences in advanced options.
|
127
|
+
When your system allows it, prefer using `make` to build `zstd` and `libzstd`.
|
128
|
+
|
127
129
|
### Makefile
|
128
130
|
|
129
131
|
If your system is compatible with standard `make` (or `gmake`),
|
130
132
|
invoking `make` in root directory will generate `zstd` cli in root directory.
|
133
|
+
It will also create `libzstd` into `lib/`.
|
131
134
|
|
132
135
|
Other available options include:
|
133
136
|
- `make install` : create and install zstd cli, library and man pages
|
134
|
-
- `make check` : create and run `zstd`,
|
137
|
+
- `make check` : create and run `zstd`, test its behavior on local platform
|
138
|
+
|
139
|
+
The `Makefile` follows the [GNU Standard Makefile conventions](https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html),
|
140
|
+
allowing staged install, standard flags, directory variables and command variables.
|
141
|
+
|
142
|
+
For advanced use cases, specialized compilation flags which control binary generation
|
143
|
+
are documented in [`lib/README.md`](lib/README.md#modular-build) for the `libzstd` library
|
144
|
+
and in [`programs/README.md`](programs/README.md#compilation-variables) for the `zstd` CLI.
|
135
145
|
|
136
146
|
### cmake
|
137
147
|
|
@@ -141,6 +151,18 @@ to create `zstd` binary, and `libzstd` dynamic and static libraries.
|
|
141
151
|
|
142
152
|
By default, `CMAKE_BUILD_TYPE` is set to `Release`.
|
143
153
|
|
154
|
+
#### Support for Fat (Universal2) Output
|
155
|
+
|
156
|
+
`zstd` can be built and installed with support for both Apple Silicon (M1/M2) as well as Intel by using CMake's Universal2 support.
|
157
|
+
To perform a Fat/Universal2 build and install use the following commands:
|
158
|
+
|
159
|
+
```bash
|
160
|
+
cmake -B build-cmake-debug -S build/cmake -G Ninja -DCMAKE_OSX_ARCHITECTURES="x86_64;x86_64h;arm64"
|
161
|
+
cd build-cmake-debug
|
162
|
+
ninja
|
163
|
+
sudo ninja install
|
164
|
+
```
|
165
|
+
|
144
166
|
### Meson
|
145
167
|
|
146
168
|
A Meson project is provided within [`build/meson`](build/meson). Follow
|
@@ -176,24 +198,30 @@ Going into `build` directory, you will find additional possibilities:
|
|
176
198
|
You can build the zstd binary via buck by executing: `buck build programs:zstd` from the root of the repo.
|
177
199
|
The output binary will be in `buck-out/gen/programs/`.
|
178
200
|
|
201
|
+
### Bazel
|
202
|
+
|
203
|
+
You easily can integrate zstd into your Bazel project by using the module hosted on the [Bazel Central Repository](https://registry.bazel.build/modules/zstd).
|
204
|
+
|
179
205
|
## Testing
|
180
206
|
|
181
|
-
You can run quick local smoke tests by
|
182
|
-
|
183
|
-
|
207
|
+
You can run quick local smoke tests by running `make check`.
|
208
|
+
If you can't use `make`, execute the `playTest.sh` script from the `src/tests` directory.
|
209
|
+
Two env variables `$ZSTD_BIN` and `$DATAGEN_BIN` are needed for the test script to locate the `zstd` and `datagen` binary.
|
210
|
+
For information on CI testing, please refer to `TESTING.md`.
|
184
211
|
|
185
212
|
## Status
|
186
213
|
|
187
|
-
Zstandard is currently deployed within Facebook
|
214
|
+
Zstandard is currently deployed within Facebook and many other large cloud infrastructures.
|
215
|
+
It is run continuously to compress large amounts of data in multiple formats and use cases.
|
188
216
|
Zstandard is considered safe for production environments.
|
189
217
|
|
190
218
|
## License
|
191
219
|
|
192
|
-
Zstandard is dual-licensed under [BSD](LICENSE)
|
220
|
+
Zstandard is dual-licensed under [BSD](LICENSE) OR [GPLv2](COPYING).
|
193
221
|
|
194
222
|
## Contributing
|
195
223
|
|
196
|
-
The
|
197
|
-
If you plan to propose a patch, please commit into the
|
198
|
-
Direct commit to
|
224
|
+
The `dev` branch is the one where all contributions are merged before reaching `release`.
|
225
|
+
If you plan to propose a patch, please commit into the `dev` branch, or its own feature branch.
|
226
|
+
Direct commit to `release` are not permitted.
|
199
227
|
For more information, please read [CONTRIBUTING](CONTRIBUTING.md).
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Reporting and Fixing Security Issues
|
2
|
+
|
3
|
+
Please do not open GitHub issues or pull requests - this makes the problem immediately visible to everyone, including malicious actors. Security issues in this open source project can be safely reported via the Meta Bug Bounty program:
|
4
|
+
|
5
|
+
https://www.facebook.com/whitehat
|
6
|
+
|
7
|
+
Meta's security team will triage your report and determine whether or not is it eligible for a bounty under our program.
|
8
|
+
|
9
|
+
# Receiving Vulnerability Notifications
|
10
|
+
|
11
|
+
In the case that a significant security vulnerability is reported to us or discovered by us---without being publicly known---we will, at our discretion, notify high-profile, high-exposure users of Zstandard ahead of our public disclosure of the issue and associated fix.
|
12
|
+
|
13
|
+
If you believe your project would benefit from inclusion in this list, please reach out to one of the maintainers.
|
14
|
+
|
15
|
+
<!-- Note to maintainers: this list is kept [here](https://fburl.com/wiki/cgc1l62x). -->
|
data/contrib/zstd/TESTING.md
CHANGED
@@ -22,12 +22,12 @@ They consist of the following tests:
|
|
22
22
|
- `tests/playTests.sh --test-large-data`
|
23
23
|
- Fuzzer tests: `tests/fuzzer.c`, `tests/zstreamtest.c`, and `tests/decodecorpus.c`
|
24
24
|
- `tests/zstreamtest.c` under Tsan (streaming mode, including multithreaded mode)
|
25
|
-
- Valgrind Test (`make -C tests
|
25
|
+
- Valgrind Test (`make -C tests test-valgrind`) (testing CLI and fuzzer under `valgrind`)
|
26
26
|
- Fuzzer tests (see above) on ARM, AArch64, PowerPC, and PowerPC64
|
27
27
|
|
28
28
|
Long Tests
|
29
29
|
----------
|
30
|
-
Long tests run on all commits to `
|
30
|
+
Long tests run on all commits to `release` branch,
|
31
31
|
and once a day on the current version of `dev` branch,
|
32
32
|
on TravisCI.
|
33
33
|
They consist of the following tests:
|
@@ -40,5 +40,4 @@ They consist of the following tests:
|
|
40
40
|
- Versions test (ensuring `zstd` can decode files from all previous versions)
|
41
41
|
- `pzstd` with asan and tsan, as well as in 32-bits mode
|
42
42
|
- Testing `zstd` with legacy mode off
|
43
|
-
- Testing `zbuff` (old streaming API)
|
44
43
|
- Entire test suite and make install on macOS
|
data/contrib/zstd/lib/BUCK
CHANGED
@@ -65,9 +65,7 @@ cxx_library(
|
|
65
65
|
name='zdict',
|
66
66
|
header_namespace='',
|
67
67
|
visibility=['PUBLIC'],
|
68
|
-
exported_headers=
|
69
|
-
('dictBuilder', 'zdict.h'),
|
70
|
-
]),
|
68
|
+
exported_headers=['zdict.h'],
|
71
69
|
headers=subdir_glob([
|
72
70
|
('dictBuilder', 'divsufsort.h'),
|
73
71
|
('dictBuilder', 'cover.h'),
|
@@ -131,10 +129,10 @@ cxx_library(
|
|
131
129
|
name='errors',
|
132
130
|
header_namespace='',
|
133
131
|
visibility=['PUBLIC'],
|
134
|
-
exported_headers=
|
135
|
-
|
136
|
-
|
137
|
-
]
|
132
|
+
exported_headers=[
|
133
|
+
'zstd_errors.h',
|
134
|
+
'common/error_private.h',
|
135
|
+
]
|
138
136
|
srcs=['common/error_private.c'],
|
139
137
|
)
|
140
138
|
|