zstd-ruby 1.5.6.6 → 1.5.7.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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +38 -1
  4. data/ext/zstdruby/common.h +37 -11
  5. data/ext/zstdruby/libzstd/common/bits.h +92 -87
  6. data/ext/zstdruby/libzstd/common/bitstream.h +26 -29
  7. data/ext/zstdruby/libzstd/common/compiler.h +36 -22
  8. data/ext/zstdruby/libzstd/common/cpu.h +1 -1
  9. data/ext/zstdruby/libzstd/common/debug.h +0 -9
  10. data/ext/zstdruby/libzstd/common/error_private.c +1 -0
  11. data/ext/zstdruby/libzstd/common/error_private.h +0 -10
  12. data/ext/zstdruby/libzstd/common/fse.h +2 -17
  13. data/ext/zstdruby/libzstd/common/fse_decompress.c +2 -0
  14. data/ext/zstdruby/libzstd/common/huf.h +0 -9
  15. data/ext/zstdruby/libzstd/common/mem.h +7 -11
  16. data/ext/zstdruby/libzstd/common/pool.h +0 -9
  17. data/ext/zstdruby/libzstd/common/portability_macros.h +22 -9
  18. data/ext/zstdruby/libzstd/common/threading.h +0 -8
  19. data/ext/zstdruby/libzstd/common/xxhash.h +93 -19
  20. data/ext/zstdruby/libzstd/common/zstd_deps.h +12 -0
  21. data/ext/zstdruby/libzstd/common/zstd_internal.h +1 -69
  22. data/ext/zstdruby/libzstd/common/zstd_trace.h +5 -12
  23. data/ext/zstdruby/libzstd/compress/hist.c +10 -0
  24. data/ext/zstdruby/libzstd/compress/hist.h +7 -0
  25. data/ext/zstdruby/libzstd/compress/zstd_compress.c +1057 -367
  26. data/ext/zstdruby/libzstd/compress/zstd_compress_internal.h +227 -125
  27. data/ext/zstdruby/libzstd/compress/zstd_compress_literals.c +1 -1
  28. data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.c +7 -7
  29. data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.h +7 -6
  30. data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.c +17 -17
  31. data/ext/zstdruby/libzstd/compress/zstd_cwksp.h +41 -24
  32. data/ext/zstdruby/libzstd/compress/zstd_double_fast.c +58 -50
  33. data/ext/zstdruby/libzstd/compress/zstd_double_fast.h +4 -12
  34. data/ext/zstdruby/libzstd/compress/zstd_fast.c +91 -74
  35. data/ext/zstdruby/libzstd/compress/zstd_fast.h +4 -12
  36. data/ext/zstdruby/libzstd/compress/zstd_lazy.c +64 -64
  37. data/ext/zstdruby/libzstd/compress/zstd_lazy.h +30 -39
  38. data/ext/zstdruby/libzstd/compress/zstd_ldm.c +48 -33
  39. data/ext/zstdruby/libzstd/compress/zstd_ldm.h +6 -14
  40. data/ext/zstdruby/libzstd/compress/zstd_opt.c +55 -51
  41. data/ext/zstdruby/libzstd/compress/zstd_opt.h +8 -16
  42. data/ext/zstdruby/libzstd/compress/zstd_preSplit.c +238 -0
  43. data/ext/zstdruby/libzstd/compress/zstd_preSplit.h +33 -0
  44. data/ext/zstdruby/libzstd/compress/zstdmt_compress.c +134 -93
  45. data/ext/zstdruby/libzstd/compress/zstdmt_compress.h +4 -15
  46. data/ext/zstdruby/libzstd/decompress/huf_decompress_amd64.S +10 -3
  47. data/ext/zstdruby/libzstd/decompress/zstd_decompress.c +14 -11
  48. data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.c +6 -12
  49. data/ext/zstdruby/libzstd/decompress/zstd_decompress_internal.h +5 -5
  50. data/ext/zstdruby/libzstd/dictBuilder/cover.c +60 -19
  51. data/ext/zstdruby/libzstd/dictBuilder/divsufsort.h +0 -10
  52. data/ext/zstdruby/libzstd/dictBuilder/zdict.c +2 -2
  53. data/ext/zstdruby/libzstd/zdict.h +15 -8
  54. data/ext/zstdruby/libzstd/zstd.h +241 -132
  55. data/ext/zstdruby/libzstd/zstd_errors.h +1 -8
  56. data/ext/zstdruby/main.c +4 -0
  57. data/ext/zstdruby/zstdruby.c +92 -0
  58. data/lib/zstd-ruby/stream_writer.rb +1 -1
  59. data/lib/zstd-ruby/version.rb +1 -1
  60. metadata +5 -3
@@ -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
@@ -1,6 +1,8 @@
1
1
  #include "common.h"
2
2
 
3
3
  VALUE rb_mZstd;
4
+ VALUE rb_cCDict;
5
+ VALUE rb_cDDict;
4
6
  void zstd_ruby_init(void);
5
7
  void zstd_ruby_skippable_frame_init(void);
6
8
  void zstd_ruby_streaming_compress_init(void);
@@ -14,6 +16,8 @@ Init_zstdruby(void)
14
16
  #endif
15
17
 
16
18
  rb_mZstd = rb_define_module("Zstd");
19
+ rb_cCDict = rb_define_class_under(rb_mZstd, "CDict", rb_cObject);
20
+ rb_cDDict = rb_define_class_under(rb_mZstd, "DDict", rb_cObject);
17
21
  zstd_ruby_init();
18
22
  zstd_ruby_skippable_frame_init();
19
23
  zstd_ruby_streaming_compress_init();
@@ -195,6 +195,90 @@ static VALUE rb_decompress_using_dict(int argc, VALUE *argv, VALUE self)
195
195
  return output;
196
196
  }
197
197
 
198
+ static void free_cdict(void *dict)
199
+ {
200
+ ZSTD_freeCDict(dict);
201
+ }
202
+
203
+ static size_t sizeof_cdict(const void *dict)
204
+ {
205
+ return ZSTD_sizeof_CDict(dict);
206
+ }
207
+
208
+ static void free_ddict(void *dict)
209
+ {
210
+ ZSTD_freeDDict(dict);
211
+ }
212
+
213
+ static size_t sizeof_ddict(const void *dict)
214
+ {
215
+ return ZSTD_sizeof_DDict(dict);
216
+ }
217
+
218
+ static const rb_data_type_t cdict_type = {
219
+ "Zstd::CDict",
220
+ {0, free_cdict, sizeof_cdict,},
221
+ 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
222
+ };
223
+
224
+ static const rb_data_type_t ddict_type = {
225
+ "Zstd::DDict",
226
+ {0, free_ddict, sizeof_ddict,},
227
+ 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
228
+ };
229
+
230
+ static VALUE rb_cdict_alloc(VALUE self)
231
+ {
232
+ ZSTD_CDict* cdict = NULL;
233
+ return TypedData_Wrap_Struct(self, &cdict_type, cdict);
234
+ }
235
+
236
+ static VALUE rb_cdict_initialize(int argc, VALUE *argv, VALUE self)
237
+ {
238
+ VALUE dict;
239
+ VALUE compression_level_value;
240
+ rb_scan_args(argc, argv, "11", &dict, &compression_level_value);
241
+ int compression_level = convert_compression_level(compression_level_value);
242
+
243
+ StringValue(dict);
244
+ char* dict_buffer = RSTRING_PTR(dict);
245
+ size_t dict_size = RSTRING_LEN(dict);
246
+
247
+ ZSTD_CDict* const cdict = ZSTD_createCDict(dict_buffer, dict_size, compression_level);
248
+ if (cdict == NULL) {
249
+ rb_raise(rb_eRuntimeError, "%s", "ZSTD_createCDict failed");
250
+ }
251
+
252
+ DATA_PTR(self) = cdict;
253
+ return self;
254
+ }
255
+
256
+ static VALUE rb_ddict_alloc(VALUE self)
257
+ {
258
+ ZSTD_CDict* ddict = NULL;
259
+ return TypedData_Wrap_Struct(self, &ddict_type, ddict);
260
+ }
261
+
262
+ static VALUE rb_ddict_initialize(VALUE self, VALUE dict)
263
+ {
264
+ StringValue(dict);
265
+ char* dict_buffer = RSTRING_PTR(dict);
266
+ size_t dict_size = RSTRING_LEN(dict);
267
+
268
+ ZSTD_DDict* const ddict = ZSTD_createDDict(dict_buffer, dict_size);
269
+ if (ddict == NULL) {
270
+ rb_raise(rb_eRuntimeError, "%s", "ZSTD_createDDict failed");
271
+ }
272
+
273
+ DATA_PTR(self) = ddict;
274
+ return self;
275
+ }
276
+
277
+ static VALUE rb_prohibit_copy(VALUE self, VALUE obj)
278
+ {
279
+ rb_raise(rb_eRuntimeError, "CDict cannot be duplicated");
280
+ }
281
+
198
282
  void
199
283
  zstd_ruby_init(void)
200
284
  {
@@ -203,4 +287,12 @@ zstd_ruby_init(void)
203
287
  rb_define_module_function(rb_mZstd, "compress_using_dict", rb_compress_using_dict, -1);
204
288
  rb_define_module_function(rb_mZstd, "decompress", rb_decompress, -1);
205
289
  rb_define_module_function(rb_mZstd, "decompress_using_dict", rb_decompress_using_dict, -1);
290
+
291
+ rb_define_alloc_func(rb_cCDict, rb_cdict_alloc);
292
+ rb_define_private_method(rb_cCDict, "initialize", rb_cdict_initialize, -1);
293
+ rb_define_method(rb_cCDict, "initialize_copy", rb_prohibit_copy, 1);
294
+
295
+ rb_define_alloc_func(rb_cDDict, rb_ddict_alloc);
296
+ rb_define_private_method(rb_cDDict, "initialize", rb_ddict_initialize, 1);
297
+ rb_define_method(rb_cDDict, "initialize_copy", rb_prohibit_copy, 1);
206
298
  }
@@ -3,7 +3,7 @@ module Zstd
3
3
  class StreamWriter
4
4
  def initialize(io, level: nil)
5
5
  @io = io
6
- @stream = Zstd::StreamingCompress.new(level)
6
+ @stream = Zstd::StreamingCompress.new(level: level)
7
7
  end
8
8
 
9
9
  def write(*data)
@@ -1,3 +1,3 @@
1
1
  module Zstd
2
- VERSION = "1.5.6.6"
2
+ VERSION = "1.5.7.0"
3
3
  end
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: 1.5.6.6
4
+ version: 1.5.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SpringMT
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-23 00:00:00.000000000 Z
11
+ date: 2025-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -151,6 +151,8 @@ files:
151
151
  - ext/zstdruby/libzstd/compress/zstd_ldm_geartab.h
152
152
  - ext/zstdruby/libzstd/compress/zstd_opt.c
153
153
  - ext/zstdruby/libzstd/compress/zstd_opt.h
154
+ - ext/zstdruby/libzstd/compress/zstd_preSplit.c
155
+ - ext/zstdruby/libzstd/compress/zstd_preSplit.h
154
156
  - ext/zstdruby/libzstd/compress/zstdmt_compress.c
155
157
  - ext/zstdruby/libzstd/compress/zstdmt_compress.h
156
158
  - ext/zstdruby/libzstd/decompress/huf_decompress.c
@@ -200,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
202
  - !ruby/object:Gem::Version
201
203
  version: '0'
202
204
  requirements: []
203
- rubygems_version: 3.5.3
205
+ rubygems_version: 3.4.19
204
206
  signing_key:
205
207
  specification_version: 4
206
208
  summary: Ruby binding for zstd(Zstandard - Fast real-time compression algorithm)