Skip to content

Commit b2861cf

Browse files
committed
Remove deprecated methods for v2
- Remove deprecated positional argument for compression level - Update C extension methods to only accept keyword arguments - Remove deprecation warnings related to positional arguments - Remove deprecated compress_using_dict method entirely - Update tests to reflect the API changes - Remove tests for positional compression level arguments - Remove all tests for compress_using_dict method These changes prepare the codebase for v2 release by removing previously deprecated functionality.
1 parent 8910880 commit b2861cf

File tree

5 files changed

+7
-164
lines changed

5 files changed

+7
-164
lines changed

ext/zstdruby/common.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ static int convert_compression_level(VALUE compression_level_value)
1818
return NUM2INT(compression_level_value);
1919
}
2020

21-
static void set_compress_params(ZSTD_CCtx* const ctx, VALUE level_from_args, VALUE kwargs)
21+
static void set_compress_params(ZSTD_CCtx* const ctx, VALUE kwargs)
2222
{
2323
ID kwargs_keys[2];
2424
kwargs_keys[0] = rb_intern("level");
@@ -29,9 +29,6 @@ static void set_compress_params(ZSTD_CCtx* const ctx, VALUE level_from_args, VAL
2929
int compression_level = ZSTD_CLEVEL_DEFAULT;
3030
if (kwargs_values[0] != Qundef && kwargs_values[0] != Qnil) {
3131
compression_level = convert_compression_level(kwargs_values[0]);
32-
} else if (!NIL_P(level_from_args)) {
33-
rb_warn("`level` in args is deprecated; use keyword args `level:` instead.");
34-
compression_level = convert_compression_level(level_from_args);
3532
}
3633
ZSTD_CCtx_setParameter(ctx, ZSTD_c_compressionLevel, compression_level);
3734

ext/zstdruby/streaming_compress.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@ static VALUE
7171
rb_streaming_compress_initialize(int argc, VALUE *argv, VALUE obj)
7272
{
7373
VALUE kwargs;
74-
VALUE compression_level_value;
75-
rb_scan_args(argc, argv, "01:", &compression_level_value, &kwargs);
74+
rb_scan_args(argc, argv, "00:", &kwargs);
7675

7776
struct streaming_compress_t* sc;
7877
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)
8281
if (ctx == NULL) {
8382
rb_raise(rb_eRuntimeError, "%s", "ZSTD_createCCtx error");
8483
}
85-
set_compress_params(ctx, compression_level_value, kwargs);
84+
set_compress_params(ctx, kwargs);
8685

8786
sc->ctx = ctx;
8887
sc->buf = rb_str_new(NULL, buffOutSize);

ext/zstdruby/zstdruby.c

Lines changed: 2 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,15 @@ static VALUE zstdVersion(VALUE self)
1111
static VALUE rb_compress(int argc, VALUE *argv, VALUE self)
1212
{
1313
VALUE input_value;
14-
VALUE compression_level_value;
1514
VALUE kwargs;
16-
rb_scan_args(argc, argv, "11:", &input_value, &compression_level_value, &kwargs);
15+
rb_scan_args(argc, argv, "10:", &input_value, &kwargs);
1716

1817
ZSTD_CCtx* const ctx = ZSTD_createCCtx();
1918
if (ctx == NULL) {
2019
rb_raise(rb_eRuntimeError, "%s", "ZSTD_createCCtx error");
2120
}
2221

23-
set_compress_params(ctx, compression_level_value, kwargs);
22+
set_compress_params(ctx, kwargs);
2423

2524
StringValue(input_value);
2625
char* input_data = RSTRING_PTR(input_value);
@@ -40,51 +39,6 @@ static VALUE rb_compress(int argc, VALUE *argv, VALUE self)
4039
return output;
4140
}
4241

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-
8842
static VALUE decompress_buffered(ZSTD_DCtx* dctx, const char* input_data, size_t input_size)
8943
{
9044
ZSTD_inBuffer input = { input_data, input_size, 0 };
@@ -142,59 +96,6 @@ static VALUE rb_decompress(int argc, VALUE *argv, VALUE self)
14296
return output;
14397
}
14498

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-
19899
static void free_cdict(void *dict)
199100
{
200101
ZSTD_freeCDict(dict);
@@ -284,9 +185,7 @@ zstd_ruby_init(void)
284185
{
285186
rb_define_module_function(rb_mZstd, "zstd_version", zstdVersion, 0);
286187
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);
288188
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);
290189

291190
rb_define_alloc_func(rb_cCDict, rb_cdict_alloc);
292191
rb_define_private_method(rb_cCDict, "initialize", rb_cdict_initialize, -1);

spec/zstd-ruby-using-dict_spec.rb

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -88,49 +88,4 @@
8888
end
8989
end
9090

91-
describe 'compress_using_dict' do
92-
let(:user_json) do
93-
File.read("#{__dir__}/user_springmt.json")
94-
end
95-
let(:dictionary) do
96-
File.read("#{__dir__}/dictionary")
97-
end
98-
99-
it 'should work' do
100-
compressed_using_dict = Zstd.compress_using_dict(user_json, dictionary)
101-
compressed = Zstd.compress(user_json)
102-
expect(compressed_using_dict.length).to be < compressed.length
103-
expect(user_json).to eq(Zstd.decompress_using_dict(compressed_using_dict, dictionary))
104-
end
105-
106-
it 'should work with simple string' do
107-
compressed_using_dict = Zstd.compress_using_dict("abc", dictionary)
108-
expect("abc").to eq(Zstd.decompress_using_dict(compressed_using_dict, dictionary))
109-
end
110-
111-
it 'should work with blank input' do
112-
compressed_using_dict = Zstd.compress_using_dict("", dictionary)
113-
expect("").to eq(Zstd.decompress_using_dict(compressed_using_dict, dictionary))
114-
end
115-
116-
it 'should work with blank dictionary' do
117-
compressed_using_dict = Zstd.compress_using_dict(user_json, "")
118-
expect(user_json).to eq(Zstd.decompress_using_dict(compressed_using_dict, ""))
119-
expect(user_json).to eq(Zstd.decompress(compressed_using_dict))
120-
end
121-
122-
it 'should support compression levels' do
123-
compressed_using_dict = Zstd.compress_using_dict(user_json, dictionary)
124-
compressed_using_dict_10 = Zstd.compress_using_dict(user_json, dictionary, 10)
125-
expect(compressed_using_dict_10.length).to be < compressed_using_dict.length
126-
expect(user_json).to eq(Zstd.decompress_using_dict(compressed_using_dict_10, dictionary))
127-
end
128-
129-
it 'should support compression levels with blank dictionary' do
130-
compressed_using_dict_10 = Zstd.compress_using_dict(user_json, "", 10)
131-
expect(user_json).to eq(Zstd.decompress_using_dict(compressed_using_dict_10, ""))
132-
expect(user_json).to eq(Zstd.decompress(compressed_using_dict_10))
133-
end
134-
end
135-
13691
end

spec/zstd-ruby_spec.rb

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,13 @@
2424
expect(compressed).to_not eq(user_json)
2525
end
2626

27-
it 'should support compression levels' do
28-
compressed = Zstd.compress(user_json, 1)
29-
expect(compressed).to be_a(String)
30-
expect(compressed).to_not eq(user_json)
31-
end
32-
3327
it 'should support compression keyward args levels' do
3428
compressed = Zstd.compress(user_json, level: 1)
35-
compressed_with_arg = Zstd.compress(user_json, 1)
3629
compressed_default = Zstd.compress(user_json)
3730
expect(compressed).to be_a(String)
3831
expect(compressed).to_not eq(user_json)
39-
expect(compressed).to eq(compressed_with_arg)
40-
expect(compressed_default.length).to be < compressed_with_arg.length
32+
expect(compressed).to_not eq(compressed_default)
33+
expect(compressed_default.length).to be < compressed.length
4134
end
4235

4336
it 'should compress large bytes' do

0 commit comments

Comments
 (0)