zstd-ruby 1.5.0.0 → 1.5.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +2 -2
  3. data/README.md +1 -1
  4. data/ext/zstdruby/extconf.rb +2 -1
  5. data/ext/zstdruby/libzstd/Makefile +50 -175
  6. data/ext/zstdruby/libzstd/README.md +7 -1
  7. data/ext/zstdruby/libzstd/common/bitstream.h +24 -9
  8. data/ext/zstdruby/libzstd/common/compiler.h +89 -43
  9. data/ext/zstdruby/libzstd/common/entropy_common.c +11 -5
  10. data/ext/zstdruby/libzstd/common/error_private.h +79 -0
  11. data/ext/zstdruby/libzstd/common/fse.h +2 -1
  12. data/ext/zstdruby/libzstd/common/fse_decompress.c +1 -1
  13. data/ext/zstdruby/libzstd/common/huf.h +24 -22
  14. data/ext/zstdruby/libzstd/common/mem.h +18 -0
  15. data/ext/zstdruby/libzstd/common/pool.c +11 -6
  16. data/ext/zstdruby/libzstd/common/pool.h +2 -2
  17. data/ext/zstdruby/libzstd/common/portability_macros.h +137 -0
  18. data/ext/zstdruby/libzstd/common/xxhash.c +5 -805
  19. data/ext/zstdruby/libzstd/common/xxhash.h +5568 -167
  20. data/ext/zstdruby/libzstd/common/zstd_internal.h +95 -92
  21. data/ext/zstdruby/libzstd/common/zstd_trace.h +12 -3
  22. data/ext/zstdruby/libzstd/compress/clevels.h +134 -0
  23. data/ext/zstdruby/libzstd/compress/fse_compress.c +63 -27
  24. data/ext/zstdruby/libzstd/compress/huf_compress.c +537 -104
  25. data/ext/zstdruby/libzstd/compress/zstd_compress.c +307 -373
  26. data/ext/zstdruby/libzstd/compress/zstd_compress_internal.h +174 -83
  27. data/ext/zstdruby/libzstd/compress/zstd_compress_literals.c +4 -3
  28. data/ext/zstdruby/libzstd/compress/zstd_compress_literals.h +3 -1
  29. data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.c +15 -14
  30. data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.c +4 -3
  31. data/ext/zstdruby/libzstd/compress/zstd_cwksp.h +41 -27
  32. data/ext/zstdruby/libzstd/compress/zstd_double_fast.c +295 -120
  33. data/ext/zstdruby/libzstd/compress/zstd_fast.c +309 -130
  34. data/ext/zstdruby/libzstd/compress/zstd_lazy.c +482 -562
  35. data/ext/zstdruby/libzstd/compress/zstd_ldm.c +9 -7
  36. data/ext/zstdruby/libzstd/compress/zstd_ldm.h +1 -1
  37. data/ext/zstdruby/libzstd/compress/zstd_ldm_geartab.h +4 -1
  38. data/ext/zstdruby/libzstd/compress/zstd_opt.c +249 -148
  39. data/ext/zstdruby/libzstd/compress/zstdmt_compress.c +76 -38
  40. data/ext/zstdruby/libzstd/compress/zstdmt_compress.h +4 -1
  41. data/ext/zstdruby/libzstd/decompress/huf_decompress.c +727 -189
  42. data/ext/zstdruby/libzstd/decompress/huf_decompress_amd64.S +585 -0
  43. data/ext/zstdruby/libzstd/decompress/zstd_decompress.c +85 -22
  44. data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.c +744 -220
  45. data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.h +8 -2
  46. data/ext/zstdruby/libzstd/decompress/zstd_decompress_internal.h +34 -3
  47. data/ext/zstdruby/libzstd/deprecated/zbuff_compress.c +23 -3
  48. data/ext/zstdruby/libzstd/dictBuilder/cover.c +9 -2
  49. data/ext/zstdruby/libzstd/dictBuilder/fastcover.c +11 -4
  50. data/ext/zstdruby/libzstd/dictBuilder/zdict.c +101 -30
  51. data/ext/zstdruby/libzstd/legacy/zstd_v01.c +2 -6
  52. data/ext/zstdruby/libzstd/legacy/zstd_v02.c +3 -7
  53. data/ext/zstdruby/libzstd/legacy/zstd_v03.c +3 -7
  54. data/ext/zstdruby/libzstd/legacy/zstd_v04.c +3 -7
  55. data/ext/zstdruby/libzstd/legacy/zstd_v05.c +3 -7
  56. data/ext/zstdruby/libzstd/legacy/zstd_v06.c +3 -7
  57. data/ext/zstdruby/libzstd/legacy/zstd_v07.c +3 -7
  58. data/ext/zstdruby/libzstd/libzstd.mk +203 -0
  59. data/ext/zstdruby/libzstd/libzstd.pc.in +1 -0
  60. data/ext/zstdruby/libzstd/module.modulemap +25 -0
  61. data/ext/zstdruby/libzstd/zdict.h +4 -4
  62. data/ext/zstdruby/libzstd/zstd.h +179 -136
  63. data/ext/zstdruby/zstdruby.c +2 -2
  64. data/lib/zstd-ruby/version.rb +1 -1
  65. metadata +11 -6
@@ -0,0 +1,203 @@
1
+ # ################################################################
2
+ # Copyright (c) Yann Collet, Facebook, Inc.
3
+ # All rights reserved.
4
+ #
5
+ # This source code is licensed under both the BSD-style license (found in the
6
+ # LICENSE file in the root directory of this source tree) and the GPLv2 (found
7
+ # in the COPYING file in the root directory of this source tree).
8
+ # You may select, at your option, one of the above-listed licenses.
9
+ # ################################################################
10
+
11
+ ##################################################################
12
+ # Input Variables
13
+ ##################################################################
14
+
15
+ # Zstd lib directory
16
+ LIBZSTD ?= ./
17
+
18
+ # Legacy support
19
+ ZSTD_LEGACY_SUPPORT ?= 5
20
+ ZSTD_LEGACY_MULTITHREADED_API ?= 0
21
+
22
+ # Build size optimizations
23
+ HUF_FORCE_DECOMPRESS_X1 ?= 0
24
+ HUF_FORCE_DECOMPRESS_X2 ?= 0
25
+ ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT ?= 0
26
+ ZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG ?= 0
27
+ ZSTD_NO_INLINE ?= 0
28
+ ZSTD_STRIP_ERROR_STRINGS ?= 0
29
+
30
+ # Assembly support
31
+ ZSTD_NO_ASM ?= 0
32
+
33
+ ##################################################################
34
+ # libzstd helpers
35
+ ##################################################################
36
+
37
+ VOID ?= /dev/null
38
+
39
+ # Make 4.3 doesn't support '\#' anymore (https://lwn.net/Articles/810071/)
40
+ NUM_SYMBOL := \#
41
+
42
+ # define silent mode as default (verbose mode with V=1 or VERBOSE=1)
43
+ $(V)$(VERBOSE).SILENT:
44
+
45
+ # When cross-compiling from linux to windows,
46
+ # one might need to specify TARGET_SYSTEM as "Windows."
47
+ # Building from Fedora fails without it.
48
+ # (but Ubuntu and Debian don't need to set anything)
49
+ TARGET_SYSTEM ?= $(OS)
50
+
51
+ # Version numbers
52
+ LIBVER_SRC := $(LIBZSTD)/zstd.h
53
+ LIBVER_MAJOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LIBVER_SRC)`
54
+ LIBVER_MINOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LIBVER_SRC)`
55
+ LIBVER_PATCH_SCRIPT:=`sed -n '/define ZSTD_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LIBVER_SRC)`
56
+ LIBVER_SCRIPT:= $(LIBVER_MAJOR_SCRIPT).$(LIBVER_MINOR_SCRIPT).$(LIBVER_PATCH_SCRIPT)
57
+ LIBVER_MAJOR := $(shell echo $(LIBVER_MAJOR_SCRIPT))
58
+ LIBVER_MINOR := $(shell echo $(LIBVER_MINOR_SCRIPT))
59
+ LIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT))
60
+ LIBVER := $(shell echo $(LIBVER_SCRIPT))
61
+ CCVER := $(shell $(CC) --version)
62
+ ZSTD_VERSION?= $(LIBVER)
63
+
64
+ # ZSTD_LIB_MINIFY is a helper variable that
65
+ # configures a bunch of other variables to space-optimized defaults.
66
+ ZSTD_LIB_MINIFY ?= 0
67
+ ifneq ($(ZSTD_LIB_MINIFY), 0)
68
+ HAVE_CC_OZ ?= $(shell echo "" | $(CC) -Oz -x c -c - -o /dev/null 2> /dev/null && echo 1 || echo 0)
69
+ ZSTD_LEGACY_SUPPORT ?= 0
70
+ ZSTD_LIB_DEPRECATED ?= 0
71
+ HUF_FORCE_DECOMPRESS_X1 ?= 1
72
+ ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT ?= 1
73
+ ZSTD_NO_INLINE ?= 1
74
+ ZSTD_STRIP_ERROR_STRINGS ?= 1
75
+ ifneq ($(HAVE_CC_OZ), 0)
76
+ # Some compilers (clang) support an even more space-optimized setting.
77
+ CFLAGS += -Oz
78
+ else
79
+ CFLAGS += -Os
80
+ endif
81
+ CFLAGS += -fno-stack-protector -fomit-frame-pointer -fno-ident \
82
+ -DDYNAMIC_BMI2=0 -DNDEBUG
83
+ else
84
+ CFLAGS ?= -O3
85
+ endif
86
+
87
+ DEBUGLEVEL ?= 0
88
+ CPPFLAGS += -DXXH_NAMESPACE=ZSTD_ -DDEBUGLEVEL=$(DEBUGLEVEL)
89
+ ifeq ($(TARGET_SYSTEM),Windows_NT) # MinGW assumed
90
+ CPPFLAGS += -D__USE_MINGW_ANSI_STDIO # compatibility with %zu formatting
91
+ endif
92
+ DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
93
+ -Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
94
+ -Wstrict-prototypes -Wundef -Wpointer-arith \
95
+ -Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
96
+ -Wredundant-decls -Wmissing-prototypes -Wc++-compat
97
+ CFLAGS += $(DEBUGFLAGS) $(MOREFLAGS)
98
+ ASFLAGS += $(DEBUGFLAGS) $(MOREFLAGS) $(CFLAGS)
99
+ LDFLAGS += $(MOREFLAGS)
100
+ FLAGS = $(CPPFLAGS) $(CFLAGS) $(ASFLAGS) $(LDFLAGS)
101
+
102
+ ifndef ALREADY_APPENDED_NOEXECSTACK
103
+ export ALREADY_APPENDED_NOEXECSTACK := 1
104
+ ifeq ($(shell echo "int main(int argc, char* argv[]) { (void)argc; (void)argv; return 0; }" | $(CC) $(FLAGS) -z noexecstack -x c -Werror - -o $(VOID) 2>$(VOID) && echo 1 || echo 0),1)
105
+ LDFLAGS += -z noexecstack
106
+ endif
107
+ ifeq ($(shell echo | $(CC) $(FLAGS) -Wa,--noexecstack -x assembler -Werror -c - -o $(VOID) 2>$(VOID) && echo 1 || echo 0),1)
108
+ CFLAGS += -Wa,--noexecstack
109
+ # CFLAGS are also added to ASFLAGS
110
+ else ifeq ($(shell echo | $(CC) $(FLAGS) -Qunused-arguments -Wa,--noexecstack -x assembler -Werror -c - -o $(VOID) 2>$(VOID) && echo 1 || echo 0),1)
111
+ # See e.g.: https://github.com/android/ndk/issues/171
112
+ CFLAGS += -Qunused-arguments -Wa,--noexecstack
113
+ # CFLAGS are also added to ASFLAGS
114
+ endif
115
+ endif
116
+
117
+ HAVE_COLORNEVER = $(shell echo a | grep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0)
118
+ GREP_OPTIONS ?=
119
+ ifeq ($HAVE_COLORNEVER, 1)
120
+ GREP_OPTIONS += --color=never
121
+ endif
122
+ GREP = grep $(GREP_OPTIONS)
123
+ SED_ERE_OPT ?= -E
124
+
125
+ ZSTD_COMMON_FILES := $(sort $(wildcard $(LIBZSTD)/common/*.c))
126
+ ZSTD_COMPRESS_FILES := $(sort $(wildcard $(LIBZSTD)/compress/*.c))
127
+ ZSTD_DECOMPRESS_FILES := $(sort $(wildcard $(LIBZSTD)/decompress/*.c))
128
+ ZSTD_DICTBUILDER_FILES := $(sort $(wildcard $(LIBZSTD)/dictBuilder/*.c))
129
+ ZSTD_DEPRECATED_FILES := $(sort $(wildcard $(LIBZSTD)/deprecated/*.c))
130
+ ZSTD_LEGACY_FILES :=
131
+
132
+ ZSTD_DECOMPRESS_AMD64_ASM_FILES := $(sort $(wildcard $(LIBZSTD)/decompress/*_amd64.S))
133
+
134
+ ifneq ($(ZSTD_NO_ASM), 0)
135
+ CPPFLAGS += -DZSTD_DISABLE_ASM
136
+ else
137
+ # Unconditionally add the ASM files they are disabled by
138
+ # macros in the .S file.
139
+ ZSTD_DECOMPRESS_FILES += $(ZSTD_DECOMPRESS_AMD64_ASM_FILES)
140
+ endif
141
+
142
+ ifneq ($(HUF_FORCE_DECOMPRESS_X1), 0)
143
+ CFLAGS += -DHUF_FORCE_DECOMPRESS_X1
144
+ endif
145
+
146
+ ifneq ($(HUF_FORCE_DECOMPRESS_X2), 0)
147
+ CFLAGS += -DHUF_FORCE_DECOMPRESS_X2
148
+ endif
149
+
150
+ ifneq ($(ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT), 0)
151
+ CFLAGS += -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT
152
+ endif
153
+
154
+ ifneq ($(ZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG), 0)
155
+ CFLAGS += -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG
156
+ endif
157
+
158
+ ifneq ($(ZSTD_NO_INLINE), 0)
159
+ CFLAGS += -DZSTD_NO_INLINE
160
+ endif
161
+
162
+ ifneq ($(ZSTD_STRIP_ERROR_STRINGS), 0)
163
+ CFLAGS += -DZSTD_STRIP_ERROR_STRINGS
164
+ endif
165
+
166
+ ifneq ($(ZSTD_LEGACY_MULTITHREADED_API), 0)
167
+ CFLAGS += -DZSTD_LEGACY_MULTITHREADED_API
168
+ endif
169
+
170
+ ifneq ($(ZSTD_LEGACY_SUPPORT), 0)
171
+ ifeq ($(shell test $(ZSTD_LEGACY_SUPPORT) -lt 8; echo $$?), 0)
172
+ ZSTD_LEGACY_FILES += $(shell ls $(LIBZSTD)/legacy/*.c | $(GREP) 'v0[$(ZSTD_LEGACY_SUPPORT)-7]')
173
+ endif
174
+ endif
175
+ CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
176
+
177
+ UNAME := $(shell uname)
178
+
179
+ ifndef BUILD_DIR
180
+ ifeq ($(UNAME), Darwin)
181
+ ifeq ($(shell md5 < /dev/null > /dev/null; echo $$?), 0)
182
+ HASH ?= md5
183
+ endif
184
+ else ifeq ($(UNAME), FreeBSD)
185
+ HASH ?= gmd5sum
186
+ else ifeq ($(UNAME), NetBSD)
187
+ HASH ?= md5 -n
188
+ else ifeq ($(UNAME), OpenBSD)
189
+ HASH ?= md5
190
+ endif
191
+ HASH ?= md5sum
192
+
193
+ HASH_DIR = conf_$(shell echo $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(ZSTD_FILES) | $(HASH) | cut -f 1 -d " " )
194
+ HAVE_HASH :=$(shell echo 1 | $(HASH) > /dev/null && echo 1 || echo 0)
195
+ ifeq ($(HAVE_HASH),0)
196
+ $(info warning : could not find HASH ($(HASH)), needed to differentiate builds using different flags)
197
+ BUILD_DIR := obj/generic_noconf
198
+ endif
199
+ endif # BUILD_DIR
200
+
201
+ ZSTD_SUBDIR := $(LIBZSTD)/common $(LIBZSTD)/compress $(LIBZSTD)/decompress $(LIBZSTD)/dictBuilder $(LIBZSTD)/legacy $(LIBZSTD)/deprecated
202
+ vpath %.c $(ZSTD_SUBDIR)
203
+ vpath %.S $(ZSTD_SUBDIR)
@@ -12,4 +12,5 @@ Description: fast lossless compression algorithm library
12
12
  URL: http://www.zstd.net/
13
13
  Version: @VERSION@
14
14
  Libs: -L${libdir} -lzstd
15
+ Libs.private: @LIBS_PRIVATE@
15
16
  Cflags: -I${includedir}
@@ -0,0 +1,25 @@
1
+ module libzstd [extern_c] {
2
+ header "zstd.h"
3
+ export *
4
+ config_macros [exhaustive] /* zstd.h */ \
5
+ ZSTD_STATIC_LINKING_ONLY, \
6
+ ZSTDLIB_VISIBLE, \
7
+ ZSTD_DLL_EXPORT, \
8
+ ZSTDLIB_STATIC_API, \
9
+ ZSTD_DISABLE_DEPRECATE_WARNINGS, \
10
+ ZSTD_CLEVEL_DEFAULT, \
11
+ /* zdict.h */ ZDICT_STATIC_LINKING_ONLY, \
12
+ ZDICTLIB_VISIBILITY, \
13
+ ZDICT_DISABLE_DEPRECATE_WARNINGS, \
14
+ /* zstd_errors.h */ ZSTDERRORLIB_VISIBILITY
15
+
16
+ module dictbuilder [extern_c] {
17
+ header "zdict.h"
18
+ export *
19
+ }
20
+
21
+ module errors [extern_c] {
22
+ header "zstd_errors.h"
23
+ export *
24
+ }
25
+ }
@@ -46,7 +46,7 @@ extern "C" {
46
46
  *
47
47
  * Zstd can use dictionaries to improve compression ratio of small data.
48
48
  * Traditionally small files don't compress well because there is very little
49
- * repetion in a single sample, since it is small. But, if you are compressing
49
+ * repetition in a single sample, since it is small. But, if you are compressing
50
50
  * many similar files, like a bunch of JSON records that share the same
51
51
  * structure, you can train a dictionary on ahead of time on some samples of
52
52
  * these files. Then, zstd can use the dictionary to find repetitions that are
@@ -132,7 +132,7 @@ extern "C" {
132
132
  *
133
133
  * # Benchmark levels 1-3 without a dictionary
134
134
  * zstd -b1e3 -r /path/to/my/files
135
- * # Benchmark levels 1-3 with a dictioanry
135
+ * # Benchmark levels 1-3 with a dictionary
136
136
  * zstd -b1e3 -r /path/to/my/files -D /path/to/my/dictionary
137
137
  *
138
138
  * When should I retrain a dictionary?
@@ -237,7 +237,6 @@ typedef struct {
237
237
  * is presumed that the most profitable content is at the end of the dictionary,
238
238
  * since that is the cheapest to reference.
239
239
  *
240
- * `dictContentSize` must be >= ZDICT_CONTENTSIZE_MIN bytes.
241
240
  * `maxDictSize` must be >= max(dictContentSize, ZSTD_DICTSIZE_MIN).
242
241
  *
243
242
  * @return: size of dictionary stored into `dstDictBuffer` (<= `maxDictSize`),
@@ -272,8 +271,9 @@ ZDICTLIB_API const char* ZDICT_getErrorName(size_t errorCode);
272
271
  * Use them only in association with static linking.
273
272
  * ==================================================================================== */
274
273
 
275
- #define ZDICT_CONTENTSIZE_MIN 128
276
274
  #define ZDICT_DICTSIZE_MIN 256
275
+ /* Deprecated: Remove in v1.6.0 */
276
+ #define ZDICT_CONTENTSIZE_MIN 128
277
277
 
278
278
  /*! ZDICT_cover_params_t:
279
279
  * k and d are the only required parameters.