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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +2 -2
- data/README.md +1 -1
- data/ext/zstdruby/extconf.rb +2 -1
- data/ext/zstdruby/libzstd/Makefile +50 -175
- data/ext/zstdruby/libzstd/README.md +7 -1
- data/ext/zstdruby/libzstd/common/bitstream.h +24 -9
- data/ext/zstdruby/libzstd/common/compiler.h +89 -43
- data/ext/zstdruby/libzstd/common/entropy_common.c +11 -5
- data/ext/zstdruby/libzstd/common/error_private.h +79 -0
- data/ext/zstdruby/libzstd/common/fse.h +2 -1
- data/ext/zstdruby/libzstd/common/fse_decompress.c +1 -1
- data/ext/zstdruby/libzstd/common/huf.h +24 -22
- data/ext/zstdruby/libzstd/common/mem.h +18 -0
- data/ext/zstdruby/libzstd/common/pool.c +11 -6
- data/ext/zstdruby/libzstd/common/pool.h +2 -2
- data/ext/zstdruby/libzstd/common/portability_macros.h +137 -0
- data/ext/zstdruby/libzstd/common/xxhash.c +5 -805
- data/ext/zstdruby/libzstd/common/xxhash.h +5568 -167
- data/ext/zstdruby/libzstd/common/zstd_internal.h +95 -92
- data/ext/zstdruby/libzstd/common/zstd_trace.h +12 -3
- data/ext/zstdruby/libzstd/compress/clevels.h +134 -0
- data/ext/zstdruby/libzstd/compress/fse_compress.c +63 -27
- data/ext/zstdruby/libzstd/compress/huf_compress.c +537 -104
- data/ext/zstdruby/libzstd/compress/zstd_compress.c +307 -373
- data/ext/zstdruby/libzstd/compress/zstd_compress_internal.h +174 -83
- data/ext/zstdruby/libzstd/compress/zstd_compress_literals.c +4 -3
- data/ext/zstdruby/libzstd/compress/zstd_compress_literals.h +3 -1
- data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.c +15 -14
- data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.c +4 -3
- data/ext/zstdruby/libzstd/compress/zstd_cwksp.h +41 -27
- data/ext/zstdruby/libzstd/compress/zstd_double_fast.c +295 -120
- data/ext/zstdruby/libzstd/compress/zstd_fast.c +309 -130
- data/ext/zstdruby/libzstd/compress/zstd_lazy.c +482 -562
- data/ext/zstdruby/libzstd/compress/zstd_ldm.c +9 -7
- data/ext/zstdruby/libzstd/compress/zstd_ldm.h +1 -1
- data/ext/zstdruby/libzstd/compress/zstd_ldm_geartab.h +4 -1
- data/ext/zstdruby/libzstd/compress/zstd_opt.c +249 -148
- data/ext/zstdruby/libzstd/compress/zstdmt_compress.c +76 -38
- data/ext/zstdruby/libzstd/compress/zstdmt_compress.h +4 -1
- data/ext/zstdruby/libzstd/decompress/huf_decompress.c +727 -189
- data/ext/zstdruby/libzstd/decompress/huf_decompress_amd64.S +585 -0
- data/ext/zstdruby/libzstd/decompress/zstd_decompress.c +85 -22
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.c +744 -220
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.h +8 -2
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_internal.h +34 -3
- data/ext/zstdruby/libzstd/deprecated/zbuff_compress.c +23 -3
- data/ext/zstdruby/libzstd/dictBuilder/cover.c +9 -2
- data/ext/zstdruby/libzstd/dictBuilder/fastcover.c +11 -4
- data/ext/zstdruby/libzstd/dictBuilder/zdict.c +101 -30
- data/ext/zstdruby/libzstd/legacy/zstd_v01.c +2 -6
- data/ext/zstdruby/libzstd/legacy/zstd_v02.c +3 -7
- data/ext/zstdruby/libzstd/legacy/zstd_v03.c +3 -7
- data/ext/zstdruby/libzstd/legacy/zstd_v04.c +3 -7
- data/ext/zstdruby/libzstd/legacy/zstd_v05.c +3 -7
- data/ext/zstdruby/libzstd/legacy/zstd_v06.c +3 -7
- data/ext/zstdruby/libzstd/legacy/zstd_v07.c +3 -7
- data/ext/zstdruby/libzstd/libzstd.mk +203 -0
- data/ext/zstdruby/libzstd/libzstd.pc.in +1 -0
- data/ext/zstdruby/libzstd/module.modulemap +25 -0
- data/ext/zstdruby/libzstd/zdict.h +4 -4
- data/ext/zstdruby/libzstd/zstd.h +179 -136
- data/ext/zstdruby/zstdruby.c +2 -2
- data/lib/zstd-ruby/version.rb +1 -1
- 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)
|
@@ -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
|
-
*
|
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
|
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.
|