zstd-ruby 1.5.0.0 → 1.5.1.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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +2 -2
- data/README.md +1 -1
- data/ext/zstdruby/extconf.rb +1 -0
- 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/portability_macros.h +131 -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 +92 -88
- 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 +194 -278
- data/ext/zstdruby/libzstd/compress/zstd_compress_internal.h +102 -44
- 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 +5 -4
- data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.c +3 -2
- data/ext/zstdruby/libzstd/compress/zstd_cwksp.h +3 -3
- data/ext/zstdruby/libzstd/compress/zstd_double_fast.c +289 -114
- data/ext/zstdruby/libzstd/compress/zstd_fast.c +302 -123
- data/ext/zstdruby/libzstd/compress/zstd_lazy.c +418 -502
- data/ext/zstdruby/libzstd/compress/zstd_ldm.c +4 -4
- 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 +186 -108
- data/ext/zstdruby/libzstd/compress/zstdmt_compress.c +59 -29
- data/ext/zstdruby/libzstd/decompress/huf_decompress.c +727 -189
- data/ext/zstdruby/libzstd/decompress/huf_decompress_amd64.S +571 -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 +99 -28
- 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 +185 -0
- data/ext/zstdruby/libzstd/libzstd.pc.in +1 -0
- data/ext/zstdruby/libzstd/modulemap/module.modulemap +4 -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 +8 -3
@@ -0,0 +1,185 @@
|
|
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
|
+
# Make 4.3 doesn't support '\#' anymore (https://lwn.net/Articles/810071/)
|
38
|
+
NUM_SYMBOL := \#
|
39
|
+
|
40
|
+
# define silent mode as default (verbose mode with V=1 or VERBOSE=1)
|
41
|
+
$(V)$(VERBOSE).SILENT:
|
42
|
+
|
43
|
+
# When cross-compiling from linux to windows,
|
44
|
+
# one might need to specify TARGET_SYSTEM as "Windows."
|
45
|
+
# Building from Fedora fails without it.
|
46
|
+
# (but Ubuntu and Debian don't need to set anything)
|
47
|
+
TARGET_SYSTEM ?= $(OS)
|
48
|
+
|
49
|
+
# Version numbers
|
50
|
+
LIBVER_SRC := $(LIBZSTD)/zstd.h
|
51
|
+
LIBVER_MAJOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LIBVER_SRC)`
|
52
|
+
LIBVER_MINOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LIBVER_SRC)`
|
53
|
+
LIBVER_PATCH_SCRIPT:=`sed -n '/define ZSTD_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LIBVER_SRC)`
|
54
|
+
LIBVER_SCRIPT:= $(LIBVER_MAJOR_SCRIPT).$(LIBVER_MINOR_SCRIPT).$(LIBVER_PATCH_SCRIPT)
|
55
|
+
LIBVER_MAJOR := $(shell echo $(LIBVER_MAJOR_SCRIPT))
|
56
|
+
LIBVER_MINOR := $(shell echo $(LIBVER_MINOR_SCRIPT))
|
57
|
+
LIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT))
|
58
|
+
LIBVER := $(shell echo $(LIBVER_SCRIPT))
|
59
|
+
CCVER := $(shell $(CC) --version)
|
60
|
+
ZSTD_VERSION?= $(LIBVER)
|
61
|
+
|
62
|
+
# ZSTD_LIB_MINIFY is a helper variable that
|
63
|
+
# configures a bunch of other variables to space-optimized defaults.
|
64
|
+
ZSTD_LIB_MINIFY ?= 0
|
65
|
+
ifneq ($(ZSTD_LIB_MINIFY), 0)
|
66
|
+
HAVE_CC_OZ ?= $(shell echo "" | $(CC) -Oz -x c -c - -o /dev/null 2> /dev/null && echo 1 || echo 0)
|
67
|
+
ZSTD_LEGACY_SUPPORT ?= 0
|
68
|
+
ZSTD_LIB_DEPRECATED ?= 0
|
69
|
+
HUF_FORCE_DECOMPRESS_X1 ?= 1
|
70
|
+
ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT ?= 1
|
71
|
+
ZSTD_NO_INLINE ?= 1
|
72
|
+
ZSTD_STRIP_ERROR_STRINGS ?= 1
|
73
|
+
ifneq ($(HAVE_CC_OZ), 0)
|
74
|
+
# Some compilers (clang) support an even more space-optimized setting.
|
75
|
+
CFLAGS += -Oz
|
76
|
+
else
|
77
|
+
CFLAGS += -Os
|
78
|
+
endif
|
79
|
+
CFLAGS += -fno-stack-protector -fomit-frame-pointer -fno-ident \
|
80
|
+
-DDYNAMIC_BMI2=0 -DNDEBUG
|
81
|
+
else
|
82
|
+
CFLAGS += -O3
|
83
|
+
endif
|
84
|
+
|
85
|
+
DEBUGLEVEL ?= 0
|
86
|
+
CPPFLAGS += -DXXH_NAMESPACE=ZSTD_ -DDEBUGLEVEL=$(DEBUGLEVEL)
|
87
|
+
ifeq ($(TARGET_SYSTEM),Windows_NT) # MinGW assumed
|
88
|
+
CPPFLAGS += -D__USE_MINGW_ANSI_STDIO # compatibility with %zu formatting
|
89
|
+
endif
|
90
|
+
DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
|
91
|
+
-Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
|
92
|
+
-Wstrict-prototypes -Wundef -Wpointer-arith \
|
93
|
+
-Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
|
94
|
+
-Wredundant-decls -Wmissing-prototypes -Wc++-compat
|
95
|
+
CFLAGS += $(DEBUGFLAGS) $(MOREFLAGS)
|
96
|
+
LDFLAGS += $(MOREFLAGS)
|
97
|
+
FLAGS = $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
|
98
|
+
|
99
|
+
HAVE_COLORNEVER = $(shell echo a | grep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0)
|
100
|
+
GREP_OPTIONS ?=
|
101
|
+
ifeq ($HAVE_COLORNEVER, 1)
|
102
|
+
GREP_OPTIONS += --color=never
|
103
|
+
endif
|
104
|
+
GREP = grep $(GREP_OPTIONS)
|
105
|
+
SED_ERE_OPT ?= -E
|
106
|
+
|
107
|
+
ZSTD_COMMON_FILES := $(sort $(wildcard $(LIBZSTD)/common/*.c))
|
108
|
+
ZSTD_COMPRESS_FILES := $(sort $(wildcard $(LIBZSTD)/compress/*.c))
|
109
|
+
ZSTD_DECOMPRESS_FILES := $(sort $(wildcard $(LIBZSTD)/decompress/*.c))
|
110
|
+
ZSTD_DICTBUILDER_FILES := $(sort $(wildcard $(LIBZSTD)/dictBuilder/*.c))
|
111
|
+
ZSTD_DEPRECATED_FILES := $(sort $(wildcard $(LIBZSTD)/deprecated/*.c))
|
112
|
+
ZSTD_LEGACY_FILES :=
|
113
|
+
|
114
|
+
ZSTD_DECOMPRESS_AMD64_ASM_FILES := $(sort $(wildcard $(LIBZSTD)/decompress/*_amd64.S))
|
115
|
+
|
116
|
+
ifneq ($(ZSTD_NO_ASM), 0)
|
117
|
+
CPPFLAGS += -DZSTD_DISABLE_ASM
|
118
|
+
else
|
119
|
+
# Unconditionally add the ASM files they are disabled by
|
120
|
+
# macros in the .S file.
|
121
|
+
ZSTD_DECOMPRESS_FILES += $(ZSTD_DECOMPRESS_AMD64_ASM_FILES)
|
122
|
+
endif
|
123
|
+
|
124
|
+
ifneq ($(HUF_FORCE_DECOMPRESS_X1), 0)
|
125
|
+
CFLAGS += -DHUF_FORCE_DECOMPRESS_X1
|
126
|
+
endif
|
127
|
+
|
128
|
+
ifneq ($(HUF_FORCE_DECOMPRESS_X2), 0)
|
129
|
+
CFLAGS += -DHUF_FORCE_DECOMPRESS_X2
|
130
|
+
endif
|
131
|
+
|
132
|
+
ifneq ($(ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT), 0)
|
133
|
+
CFLAGS += -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT
|
134
|
+
endif
|
135
|
+
|
136
|
+
ifneq ($(ZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG), 0)
|
137
|
+
CFLAGS += -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG
|
138
|
+
endif
|
139
|
+
|
140
|
+
ifneq ($(ZSTD_NO_INLINE), 0)
|
141
|
+
CFLAGS += -DZSTD_NO_INLINE
|
142
|
+
endif
|
143
|
+
|
144
|
+
ifneq ($(ZSTD_STRIP_ERROR_STRINGS), 0)
|
145
|
+
CFLAGS += -DZSTD_STRIP_ERROR_STRINGS
|
146
|
+
endif
|
147
|
+
|
148
|
+
ifneq ($(ZSTD_LEGACY_MULTITHREADED_API), 0)
|
149
|
+
CFLAGS += -DZSTD_LEGACY_MULTITHREADED_API
|
150
|
+
endif
|
151
|
+
|
152
|
+
ifneq ($(ZSTD_LEGACY_SUPPORT), 0)
|
153
|
+
ifeq ($(shell test $(ZSTD_LEGACY_SUPPORT) -lt 8; echo $$?), 0)
|
154
|
+
ZSTD_LEGACY_FILES += $(shell ls $(LIBZSTD)/legacy/*.c | $(GREP) 'v0[$(ZSTD_LEGACY_SUPPORT)-7]')
|
155
|
+
endif
|
156
|
+
endif
|
157
|
+
CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
|
158
|
+
|
159
|
+
UNAME := $(shell uname)
|
160
|
+
|
161
|
+
ifndef BUILD_DIR
|
162
|
+
ifeq ($(UNAME), Darwin)
|
163
|
+
ifeq ($(shell md5 < /dev/null > /dev/null; echo $$?), 0)
|
164
|
+
HASH ?= md5
|
165
|
+
endif
|
166
|
+
else ifeq ($(UNAME), FreeBSD)
|
167
|
+
HASH ?= gmd5sum
|
168
|
+
else ifeq ($(UNAME), NetBSD)
|
169
|
+
HASH ?= md5 -n
|
170
|
+
else ifeq ($(UNAME), OpenBSD)
|
171
|
+
HASH ?= md5
|
172
|
+
endif
|
173
|
+
HASH ?= md5sum
|
174
|
+
|
175
|
+
HASH_DIR = conf_$(shell echo $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(ZSTD_FILES) | $(HASH) | cut -f 1 -d " " )
|
176
|
+
HAVE_HASH :=$(shell echo 1 | $(HASH) > /dev/null && echo 1 || echo 0)
|
177
|
+
ifeq ($(HAVE_HASH),0)
|
178
|
+
$(info warning : could not find HASH ($(HASH)), needed to differentiate builds using different flags)
|
179
|
+
BUILD_DIR := obj/generic_noconf
|
180
|
+
endif
|
181
|
+
endif # BUILD_DIR
|
182
|
+
|
183
|
+
ZSTD_SUBDIR := $(LIBZSTD)/common $(LIBZSTD)/compress $(LIBZSTD)/decompress $(LIBZSTD)/dictBuilder $(LIBZSTD)/legacy $(LIBZSTD)/deprecated
|
184
|
+
vpath %.c $(ZSTD_SUBDIR)
|
185
|
+
vpath %.S $(ZSTD_SUBDIR)
|
@@ -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.
|