zstd-ruby 1.5.6.7 → 2.0.0.pre.preview1
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/README.md +29 -1
- data/ext/zstdruby/common.h +1 -4
- data/ext/zstdruby/exports.txt +1 -0
- data/ext/zstdruby/extconf.rb +6 -1
- data/ext/zstdruby/libzstd/common/bits.h +92 -87
- data/ext/zstdruby/libzstd/common/bitstream.h +26 -29
- data/ext/zstdruby/libzstd/common/compiler.h +36 -22
- data/ext/zstdruby/libzstd/common/cpu.h +1 -1
- data/ext/zstdruby/libzstd/common/debug.h +0 -9
- data/ext/zstdruby/libzstd/common/error_private.c +1 -0
- data/ext/zstdruby/libzstd/common/error_private.h +0 -10
- data/ext/zstdruby/libzstd/common/fse.h +2 -17
- data/ext/zstdruby/libzstd/common/fse_decompress.c +2 -0
- data/ext/zstdruby/libzstd/common/huf.h +0 -9
- data/ext/zstdruby/libzstd/common/mem.h +7 -11
- data/ext/zstdruby/libzstd/common/pool.h +0 -9
- data/ext/zstdruby/libzstd/common/portability_macros.h +22 -9
- data/ext/zstdruby/libzstd/common/threading.h +0 -8
- data/ext/zstdruby/libzstd/common/xxhash.h +93 -19
- data/ext/zstdruby/libzstd/common/zstd_deps.h +12 -0
- data/ext/zstdruby/libzstd/common/zstd_internal.h +1 -69
- data/ext/zstdruby/libzstd/common/zstd_trace.h +5 -12
- data/ext/zstdruby/libzstd/compress/hist.c +10 -0
- data/ext/zstdruby/libzstd/compress/hist.h +7 -0
- data/ext/zstdruby/libzstd/compress/zstd_compress.c +1057 -367
- data/ext/zstdruby/libzstd/compress/zstd_compress_internal.h +227 -125
- data/ext/zstdruby/libzstd/compress/zstd_compress_literals.c +1 -1
- data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.c +7 -7
- data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.h +7 -6
- data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.c +17 -17
- data/ext/zstdruby/libzstd/compress/zstd_cwksp.h +41 -24
- data/ext/zstdruby/libzstd/compress/zstd_double_fast.c +58 -50
- data/ext/zstdruby/libzstd/compress/zstd_double_fast.h +4 -12
- data/ext/zstdruby/libzstd/compress/zstd_fast.c +91 -74
- data/ext/zstdruby/libzstd/compress/zstd_fast.h +4 -12
- data/ext/zstdruby/libzstd/compress/zstd_lazy.c +64 -64
- data/ext/zstdruby/libzstd/compress/zstd_lazy.h +30 -39
- data/ext/zstdruby/libzstd/compress/zstd_ldm.c +48 -33
- data/ext/zstdruby/libzstd/compress/zstd_ldm.h +6 -14
- data/ext/zstdruby/libzstd/compress/zstd_opt.c +55 -51
- data/ext/zstdruby/libzstd/compress/zstd_opt.h +8 -16
- data/ext/zstdruby/libzstd/compress/zstd_preSplit.c +238 -0
- data/ext/zstdruby/libzstd/compress/zstd_preSplit.h +33 -0
- data/ext/zstdruby/libzstd/compress/zstdmt_compress.c +134 -93
- data/ext/zstdruby/libzstd/compress/zstdmt_compress.h +4 -15
- data/ext/zstdruby/libzstd/decompress/huf_decompress_amd64.S +10 -3
- data/ext/zstdruby/libzstd/decompress/zstd_decompress.c +14 -11
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.c +6 -12
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_internal.h +5 -5
- data/ext/zstdruby/libzstd/dictBuilder/cover.c +60 -19
- data/ext/zstdruby/libzstd/dictBuilder/divsufsort.h +0 -10
- data/ext/zstdruby/libzstd/dictBuilder/zdict.c +2 -2
- data/ext/zstdruby/libzstd/zdict.h +15 -8
- data/ext/zstdruby/libzstd/zstd.h +241 -132
- data/ext/zstdruby/libzstd/zstd_errors.h +1 -8
- data/ext/zstdruby/main.c +1 -1
- data/ext/zstdruby/streaming_compress.c +2 -3
- data/ext/zstdruby/streaming_decompress.c +22 -0
- data/ext/zstdruby/zstdruby.c +2 -103
- data/lib/zstd-ruby/version.rb +1 -1
- metadata +7 -4
@@ -15,10 +15,6 @@
|
|
15
15
|
extern "C" {
|
16
16
|
#endif
|
17
17
|
|
18
|
-
/*===== dependency =====*/
|
19
|
-
#include <stddef.h> /* size_t */
|
20
|
-
|
21
|
-
|
22
18
|
/* ===== ZSTDERRORLIB_API : control library symbols visibility ===== */
|
23
19
|
#ifndef ZSTDERRORLIB_VISIBLE
|
24
20
|
/* Backwards compatibility with old macro name */
|
@@ -80,6 +76,7 @@ typedef enum {
|
|
80
76
|
ZSTD_error_tableLog_tooLarge = 44,
|
81
77
|
ZSTD_error_maxSymbolValue_tooLarge = 46,
|
82
78
|
ZSTD_error_maxSymbolValue_tooSmall = 48,
|
79
|
+
ZSTD_error_cannotProduce_uncompressedBlock = 49,
|
83
80
|
ZSTD_error_stabilityCondition_notRespected = 50,
|
84
81
|
ZSTD_error_stage_wrong = 60,
|
85
82
|
ZSTD_error_init_missing = 62,
|
@@ -100,10 +97,6 @@ typedef enum {
|
|
100
97
|
ZSTD_error_maxCode = 120 /* never EVER use this value directly, it can change in future versions! Use ZSTD_isError() instead */
|
101
98
|
} ZSTD_ErrorCode;
|
102
99
|
|
103
|
-
/*! ZSTD_getErrorCode() :
|
104
|
-
convert a `size_t` function result into a `ZSTD_ErrorCode` enum type,
|
105
|
-
which can be used to compare with enum list published above */
|
106
|
-
ZSTDERRORLIB_API ZSTD_ErrorCode ZSTD_getErrorCode(size_t functionResult);
|
107
100
|
ZSTDERRORLIB_API const char* ZSTD_getErrorString(ZSTD_ErrorCode code); /**< Same as ZSTD_getErrorName, but using a `ZSTD_ErrorCode` enum argument */
|
108
101
|
|
109
102
|
|
data/ext/zstdruby/main.c
CHANGED
@@ -71,8 +71,7 @@ static VALUE
|
|
71
71
|
rb_streaming_compress_initialize(int argc, VALUE *argv, VALUE obj)
|
72
72
|
{
|
73
73
|
VALUE kwargs;
|
74
|
-
|
75
|
-
rb_scan_args(argc, argv, "01:", &compression_level_value, &kwargs);
|
74
|
+
rb_scan_args(argc, argv, "00:", &kwargs);
|
76
75
|
|
77
76
|
struct streaming_compress_t* sc;
|
78
77
|
TypedData_Get_Struct(obj, struct streaming_compress_t, &streaming_compress_type, sc);
|
@@ -82,7 +81,7 @@ rb_streaming_compress_initialize(int argc, VALUE *argv, VALUE obj)
|
|
82
81
|
if (ctx == NULL) {
|
83
82
|
rb_raise(rb_eRuntimeError, "%s", "ZSTD_createCCtx error");
|
84
83
|
}
|
85
|
-
set_compress_params(ctx,
|
84
|
+
set_compress_params(ctx, kwargs);
|
86
85
|
|
87
86
|
sc->ctx = ctx;
|
88
87
|
sc->buf = rb_str_new(NULL, buffOutSize);
|
@@ -113,6 +113,27 @@ rb_streaming_decompress_decompress(VALUE obj, VALUE src)
|
|
113
113
|
return result;
|
114
114
|
}
|
115
115
|
|
116
|
+
static VALUE
|
117
|
+
rb_streaming_decompress_decompress_with_pos(VALUE obj, VALUE src)
|
118
|
+
{
|
119
|
+
StringValue(src);
|
120
|
+
const char* input_data = RSTRING_PTR(src);
|
121
|
+
size_t input_size = RSTRING_LEN(src);
|
122
|
+
ZSTD_inBuffer input = { input_data, input_size, 0 };
|
123
|
+
|
124
|
+
struct streaming_decompress_t* sd;
|
125
|
+
TypedData_Get_Struct(obj, struct streaming_decompress_t, &streaming_decompress_type, sd);
|
126
|
+
const char* output_data = RSTRING_PTR(sd->buf);
|
127
|
+
VALUE result = rb_str_new(0, 0);
|
128
|
+
ZSTD_outBuffer output = { (void*)output_data, sd->buf_size, 0 };
|
129
|
+
size_t const ret = zstd_stream_decompress(sd->dctx, &output, &input, false);
|
130
|
+
if (ZSTD_isError(ret)) {
|
131
|
+
rb_raise(rb_eRuntimeError, "decompress error error code: %s", ZSTD_getErrorName(ret));
|
132
|
+
}
|
133
|
+
rb_str_cat(result, output.dst, output.pos);
|
134
|
+
return rb_ary_new_from_args(2, result, ULONG2NUM(input.pos));
|
135
|
+
}
|
136
|
+
|
116
137
|
extern VALUE rb_mZstd, cStreamingDecompress;
|
117
138
|
void
|
118
139
|
zstd_ruby_streaming_decompress_init(void)
|
@@ -121,4 +142,5 @@ zstd_ruby_streaming_decompress_init(void)
|
|
121
142
|
rb_define_alloc_func(cStreamingDecompress, rb_streaming_decompress_allocate);
|
122
143
|
rb_define_method(cStreamingDecompress, "initialize", rb_streaming_decompress_initialize, -1);
|
123
144
|
rb_define_method(cStreamingDecompress, "decompress", rb_streaming_decompress_decompress, 1);
|
145
|
+
rb_define_method(cStreamingDecompress, "decompress_with_pos", rb_streaming_decompress_decompress_with_pos, 1);
|
124
146
|
}
|
data/ext/zstdruby/zstdruby.c
CHANGED
@@ -11,16 +11,15 @@ static VALUE zstdVersion(VALUE self)
|
|
11
11
|
static VALUE rb_compress(int argc, VALUE *argv, VALUE self)
|
12
12
|
{
|
13
13
|
VALUE input_value;
|
14
|
-
VALUE compression_level_value;
|
15
14
|
VALUE kwargs;
|
16
|
-
rb_scan_args(argc, argv, "
|
15
|
+
rb_scan_args(argc, argv, "10:", &input_value, &kwargs);
|
17
16
|
|
18
17
|
ZSTD_CCtx* const ctx = ZSTD_createCCtx();
|
19
18
|
if (ctx == NULL) {
|
20
19
|
rb_raise(rb_eRuntimeError, "%s", "ZSTD_createCCtx error");
|
21
20
|
}
|
22
21
|
|
23
|
-
set_compress_params(ctx,
|
22
|
+
set_compress_params(ctx, kwargs);
|
24
23
|
|
25
24
|
StringValue(input_value);
|
26
25
|
char* input_data = RSTRING_PTR(input_value);
|
@@ -40,51 +39,6 @@ static VALUE rb_compress(int argc, VALUE *argv, VALUE self)
|
|
40
39
|
return output;
|
41
40
|
}
|
42
41
|
|
43
|
-
static VALUE rb_compress_using_dict(int argc, VALUE *argv, VALUE self)
|
44
|
-
{
|
45
|
-
rb_warn("Zstd.compress_using_dict is deprecated; use Zstd.compress with `dict:` instead.");
|
46
|
-
VALUE input_value;
|
47
|
-
VALUE dict;
|
48
|
-
VALUE compression_level_value;
|
49
|
-
rb_scan_args(argc, argv, "21", &input_value, &dict, &compression_level_value);
|
50
|
-
int compression_level = convert_compression_level(compression_level_value);
|
51
|
-
|
52
|
-
StringValue(input_value);
|
53
|
-
char* input_data = RSTRING_PTR(input_value);
|
54
|
-
size_t input_size = RSTRING_LEN(input_value);
|
55
|
-
size_t max_compressed_size = ZSTD_compressBound(input_size);
|
56
|
-
|
57
|
-
char* dict_buffer = RSTRING_PTR(dict);
|
58
|
-
size_t dict_size = RSTRING_LEN(dict);
|
59
|
-
|
60
|
-
ZSTD_CDict* const cdict = ZSTD_createCDict(dict_buffer, dict_size, compression_level);
|
61
|
-
if (cdict == NULL) {
|
62
|
-
rb_raise(rb_eRuntimeError, "%s", "ZSTD_createCDict failed");
|
63
|
-
}
|
64
|
-
ZSTD_CCtx* const ctx = ZSTD_createCCtx();
|
65
|
-
if (ctx == NULL) {
|
66
|
-
ZSTD_freeCDict(cdict);
|
67
|
-
rb_raise(rb_eRuntimeError, "%s", "ZSTD_createCCtx failed");
|
68
|
-
}
|
69
|
-
|
70
|
-
VALUE output = rb_str_new(NULL, max_compressed_size);
|
71
|
-
char* output_data = RSTRING_PTR(output);
|
72
|
-
size_t const compressed_size = ZSTD_compress_usingCDict(ctx, (void*)output_data, max_compressed_size,
|
73
|
-
(void*)input_data, input_size, cdict);
|
74
|
-
|
75
|
-
if (ZSTD_isError(compressed_size)) {
|
76
|
-
ZSTD_freeCDict(cdict);
|
77
|
-
ZSTD_freeCCtx(ctx);
|
78
|
-
rb_raise(rb_eRuntimeError, "%s: %s", "compress failed", ZSTD_getErrorName(compressed_size));
|
79
|
-
}
|
80
|
-
|
81
|
-
rb_str_resize(output, compressed_size);
|
82
|
-
ZSTD_freeCDict(cdict);
|
83
|
-
ZSTD_freeCCtx(ctx);
|
84
|
-
return output;
|
85
|
-
}
|
86
|
-
|
87
|
-
|
88
42
|
static VALUE decompress_buffered(ZSTD_DCtx* dctx, const char* input_data, size_t input_size)
|
89
43
|
{
|
90
44
|
ZSTD_inBuffer input = { input_data, input_size, 0 };
|
@@ -142,59 +96,6 @@ static VALUE rb_decompress(int argc, VALUE *argv, VALUE self)
|
|
142
96
|
return output;
|
143
97
|
}
|
144
98
|
|
145
|
-
static VALUE rb_decompress_using_dict(int argc, VALUE *argv, VALUE self)
|
146
|
-
{
|
147
|
-
rb_warn("Zstd.decompress_using_dict is deprecated; use Zstd.decompress with `dict:` instead.");
|
148
|
-
VALUE input_value;
|
149
|
-
VALUE dict;
|
150
|
-
rb_scan_args(argc, argv, "20", &input_value, &dict);
|
151
|
-
|
152
|
-
StringValue(input_value);
|
153
|
-
char* input_data = RSTRING_PTR(input_value);
|
154
|
-
size_t input_size = RSTRING_LEN(input_value);
|
155
|
-
|
156
|
-
char* dict_buffer = RSTRING_PTR(dict);
|
157
|
-
size_t dict_size = RSTRING_LEN(dict);
|
158
|
-
ZSTD_DDict* const ddict = ZSTD_createDDict(dict_buffer, dict_size);
|
159
|
-
if (ddict == NULL) {
|
160
|
-
rb_raise(rb_eRuntimeError, "%s", "ZSTD_createDDict failed");
|
161
|
-
}
|
162
|
-
unsigned const expected_dict_id = ZSTD_getDictID_fromDDict(ddict);
|
163
|
-
unsigned const actual_dict_id = ZSTD_getDictID_fromFrame(input_data, input_size);
|
164
|
-
if (expected_dict_id != actual_dict_id) {
|
165
|
-
ZSTD_freeDDict(ddict);
|
166
|
-
rb_raise(rb_eRuntimeError, "DictID mismatch");
|
167
|
-
}
|
168
|
-
|
169
|
-
ZSTD_DCtx* const ctx = ZSTD_createDCtx();
|
170
|
-
if (ctx == NULL) {
|
171
|
-
ZSTD_freeDDict(ddict);
|
172
|
-
rb_raise(rb_eRuntimeError, "%s", "ZSTD_createDCtx failed");
|
173
|
-
}
|
174
|
-
|
175
|
-
unsigned long long const uncompressed_size = ZSTD_getFrameContentSize(input_data, input_size);
|
176
|
-
if (uncompressed_size == ZSTD_CONTENTSIZE_ERROR) {
|
177
|
-
ZSTD_freeDDict(ddict);
|
178
|
-
ZSTD_freeDCtx(ctx);
|
179
|
-
rb_raise(rb_eRuntimeError, "%s: %s", "not compressed by zstd", ZSTD_getErrorName(uncompressed_size));
|
180
|
-
}
|
181
|
-
if (uncompressed_size == ZSTD_CONTENTSIZE_UNKNOWN) {
|
182
|
-
return decompress_buffered(ctx, input_data, input_size);
|
183
|
-
}
|
184
|
-
|
185
|
-
VALUE output = rb_str_new(NULL, uncompressed_size);
|
186
|
-
char* output_data = RSTRING_PTR(output);
|
187
|
-
size_t const decompress_size = ZSTD_decompress_usingDDict(ctx, output_data, uncompressed_size, input_data, input_size, ddict);
|
188
|
-
if (ZSTD_isError(decompress_size)) {
|
189
|
-
ZSTD_freeDDict(ddict);
|
190
|
-
ZSTD_freeDCtx(ctx);
|
191
|
-
rb_raise(rb_eRuntimeError, "%s: %s", "decompress error", ZSTD_getErrorName(decompress_size));
|
192
|
-
}
|
193
|
-
ZSTD_freeDDict(ddict);
|
194
|
-
ZSTD_freeDCtx(ctx);
|
195
|
-
return output;
|
196
|
-
}
|
197
|
-
|
198
99
|
static void free_cdict(void *dict)
|
199
100
|
{
|
200
101
|
ZSTD_freeCDict(dict);
|
@@ -284,9 +185,7 @@ zstd_ruby_init(void)
|
|
284
185
|
{
|
285
186
|
rb_define_module_function(rb_mZstd, "zstd_version", zstdVersion, 0);
|
286
187
|
rb_define_module_function(rb_mZstd, "compress", rb_compress, -1);
|
287
|
-
rb_define_module_function(rb_mZstd, "compress_using_dict", rb_compress_using_dict, -1);
|
288
188
|
rb_define_module_function(rb_mZstd, "decompress", rb_decompress, -1);
|
289
|
-
rb_define_module_function(rb_mZstd, "decompress_using_dict", rb_decompress_using_dict, -1);
|
290
189
|
|
291
190
|
rb_define_alloc_func(rb_cCDict, rb_cdict_alloc);
|
292
191
|
rb_define_private_method(rb_cCDict, "initialize", rb_cdict_initialize, -1);
|
data/lib/zstd-ruby/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zstd-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.pre.preview1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SpringMT
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-07-
|
11
|
+
date: 2025-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- bin/console
|
101
101
|
- bin/setup
|
102
102
|
- ext/zstdruby/common.h
|
103
|
+
- ext/zstdruby/exports.txt
|
103
104
|
- ext/zstdruby/extconf.rb
|
104
105
|
- ext/zstdruby/libzstd/common/allocations.h
|
105
106
|
- ext/zstdruby/libzstd/common/bits.h
|
@@ -151,6 +152,8 @@ files:
|
|
151
152
|
- ext/zstdruby/libzstd/compress/zstd_ldm_geartab.h
|
152
153
|
- ext/zstdruby/libzstd/compress/zstd_opt.c
|
153
154
|
- ext/zstdruby/libzstd/compress/zstd_opt.h
|
155
|
+
- ext/zstdruby/libzstd/compress/zstd_preSplit.c
|
156
|
+
- ext/zstdruby/libzstd/compress/zstd_preSplit.h
|
154
157
|
- ext/zstdruby/libzstd/compress/zstdmt_compress.c
|
155
158
|
- ext/zstdruby/libzstd/compress/zstdmt_compress.h
|
156
159
|
- ext/zstdruby/libzstd/decompress/huf_decompress.c
|
@@ -196,9 +199,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
196
199
|
version: '0'
|
197
200
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
198
201
|
requirements:
|
199
|
-
- - "
|
202
|
+
- - ">"
|
200
203
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
204
|
+
version: 1.3.1
|
202
205
|
requirements: []
|
203
206
|
rubygems_version: 3.4.19
|
204
207
|
signing_key:
|