zstd-ruby 1.5.0.0 → 1.5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.