vibe_zstd 1.0.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 (109) hide show
  1. checksums.yaml +7 -0
  2. data/.standard.yml +3 -0
  3. data/CHANGELOG.md +22 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +978 -0
  6. data/Rakefile +20 -0
  7. data/benchmark/README.md +198 -0
  8. data/benchmark/compression_levels.rb +99 -0
  9. data/benchmark/context_reuse.rb +174 -0
  10. data/benchmark/decompression_speed_by_level.rb +65 -0
  11. data/benchmark/dictionary_training.rb +182 -0
  12. data/benchmark/dictionary_usage.rb +121 -0
  13. data/benchmark/for_readme.rb +157 -0
  14. data/benchmark/generate_fixture.rb +82 -0
  15. data/benchmark/helpers.rb +237 -0
  16. data/benchmark/multithreading.rb +105 -0
  17. data/benchmark/run_all.rb +150 -0
  18. data/benchmark/streaming.rb +154 -0
  19. data/ext/vibe_zstd/Makefile +270 -0
  20. data/ext/vibe_zstd/cctx.c +565 -0
  21. data/ext/vibe_zstd/dctx.c +493 -0
  22. data/ext/vibe_zstd/dict.c +587 -0
  23. data/ext/vibe_zstd/extconf.rb +52 -0
  24. data/ext/vibe_zstd/frames.c +132 -0
  25. data/ext/vibe_zstd/libzstd/LICENSE +30 -0
  26. data/ext/vibe_zstd/libzstd/common/allocations.h +55 -0
  27. data/ext/vibe_zstd/libzstd/common/bits.h +205 -0
  28. data/ext/vibe_zstd/libzstd/common/bitstream.h +454 -0
  29. data/ext/vibe_zstd/libzstd/common/compiler.h +464 -0
  30. data/ext/vibe_zstd/libzstd/common/cpu.h +249 -0
  31. data/ext/vibe_zstd/libzstd/common/debug.c +30 -0
  32. data/ext/vibe_zstd/libzstd/common/debug.h +107 -0
  33. data/ext/vibe_zstd/libzstd/common/entropy_common.c +340 -0
  34. data/ext/vibe_zstd/libzstd/common/error_private.c +64 -0
  35. data/ext/vibe_zstd/libzstd/common/error_private.h +158 -0
  36. data/ext/vibe_zstd/libzstd/common/fse.h +625 -0
  37. data/ext/vibe_zstd/libzstd/common/fse_decompress.c +315 -0
  38. data/ext/vibe_zstd/libzstd/common/huf.h +277 -0
  39. data/ext/vibe_zstd/libzstd/common/mem.h +422 -0
  40. data/ext/vibe_zstd/libzstd/common/pool.c +371 -0
  41. data/ext/vibe_zstd/libzstd/common/pool.h +81 -0
  42. data/ext/vibe_zstd/libzstd/common/portability_macros.h +171 -0
  43. data/ext/vibe_zstd/libzstd/common/threading.c +182 -0
  44. data/ext/vibe_zstd/libzstd/common/threading.h +142 -0
  45. data/ext/vibe_zstd/libzstd/common/xxhash.c +18 -0
  46. data/ext/vibe_zstd/libzstd/common/xxhash.h +7094 -0
  47. data/ext/vibe_zstd/libzstd/common/zstd_common.c +48 -0
  48. data/ext/vibe_zstd/libzstd/common/zstd_deps.h +123 -0
  49. data/ext/vibe_zstd/libzstd/common/zstd_internal.h +324 -0
  50. data/ext/vibe_zstd/libzstd/common/zstd_trace.h +156 -0
  51. data/ext/vibe_zstd/libzstd/compress/clevels.h +134 -0
  52. data/ext/vibe_zstd/libzstd/compress/fse_compress.c +625 -0
  53. data/ext/vibe_zstd/libzstd/compress/hist.c +191 -0
  54. data/ext/vibe_zstd/libzstd/compress/hist.h +82 -0
  55. data/ext/vibe_zstd/libzstd/compress/huf_compress.c +1464 -0
  56. data/ext/vibe_zstd/libzstd/compress/zstd_compress.c +7843 -0
  57. data/ext/vibe_zstd/libzstd/compress/zstd_compress_internal.h +1636 -0
  58. data/ext/vibe_zstd/libzstd/compress/zstd_compress_literals.c +235 -0
  59. data/ext/vibe_zstd/libzstd/compress/zstd_compress_literals.h +39 -0
  60. data/ext/vibe_zstd/libzstd/compress/zstd_compress_sequences.c +442 -0
  61. data/ext/vibe_zstd/libzstd/compress/zstd_compress_sequences.h +55 -0
  62. data/ext/vibe_zstd/libzstd/compress/zstd_compress_superblock.c +688 -0
  63. data/ext/vibe_zstd/libzstd/compress/zstd_compress_superblock.h +32 -0
  64. data/ext/vibe_zstd/libzstd/compress/zstd_cwksp.h +765 -0
  65. data/ext/vibe_zstd/libzstd/compress/zstd_double_fast.c +778 -0
  66. data/ext/vibe_zstd/libzstd/compress/zstd_double_fast.h +42 -0
  67. data/ext/vibe_zstd/libzstd/compress/zstd_fast.c +985 -0
  68. data/ext/vibe_zstd/libzstd/compress/zstd_fast.h +30 -0
  69. data/ext/vibe_zstd/libzstd/compress/zstd_lazy.c +2199 -0
  70. data/ext/vibe_zstd/libzstd/compress/zstd_lazy.h +193 -0
  71. data/ext/vibe_zstd/libzstd/compress/zstd_ldm.c +745 -0
  72. data/ext/vibe_zstd/libzstd/compress/zstd_ldm.h +109 -0
  73. data/ext/vibe_zstd/libzstd/compress/zstd_ldm_geartab.h +106 -0
  74. data/ext/vibe_zstd/libzstd/compress/zstd_opt.c +1580 -0
  75. data/ext/vibe_zstd/libzstd/compress/zstd_opt.h +72 -0
  76. data/ext/vibe_zstd/libzstd/compress/zstd_preSplit.c +238 -0
  77. data/ext/vibe_zstd/libzstd/compress/zstd_preSplit.h +33 -0
  78. data/ext/vibe_zstd/libzstd/compress/zstdmt_compress.c +1923 -0
  79. data/ext/vibe_zstd/libzstd/compress/zstdmt_compress.h +102 -0
  80. data/ext/vibe_zstd/libzstd/decompress/huf_decompress.c +1944 -0
  81. data/ext/vibe_zstd/libzstd/decompress/huf_decompress_amd64.S +602 -0
  82. data/ext/vibe_zstd/libzstd/decompress/zstd_ddict.c +244 -0
  83. data/ext/vibe_zstd/libzstd/decompress/zstd_ddict.h +44 -0
  84. data/ext/vibe_zstd/libzstd/decompress/zstd_decompress.c +2410 -0
  85. data/ext/vibe_zstd/libzstd/decompress/zstd_decompress_block.c +2209 -0
  86. data/ext/vibe_zstd/libzstd/decompress/zstd_decompress_block.h +73 -0
  87. data/ext/vibe_zstd/libzstd/decompress/zstd_decompress_internal.h +240 -0
  88. data/ext/vibe_zstd/libzstd/deprecated/zbuff.h +214 -0
  89. data/ext/vibe_zstd/libzstd/deprecated/zbuff_common.c +26 -0
  90. data/ext/vibe_zstd/libzstd/deprecated/zbuff_compress.c +167 -0
  91. data/ext/vibe_zstd/libzstd/deprecated/zbuff_decompress.c +77 -0
  92. data/ext/vibe_zstd/libzstd/dictBuilder/cover.c +1302 -0
  93. data/ext/vibe_zstd/libzstd/dictBuilder/cover.h +152 -0
  94. data/ext/vibe_zstd/libzstd/dictBuilder/divsufsort.c +1913 -0
  95. data/ext/vibe_zstd/libzstd/dictBuilder/divsufsort.h +57 -0
  96. data/ext/vibe_zstd/libzstd/dictBuilder/fastcover.c +766 -0
  97. data/ext/vibe_zstd/libzstd/dictBuilder/zdict.c +1133 -0
  98. data/ext/vibe_zstd/libzstd/zdict.h +481 -0
  99. data/ext/vibe_zstd/libzstd/zstd.h +3198 -0
  100. data/ext/vibe_zstd/libzstd/zstd_errors.h +107 -0
  101. data/ext/vibe_zstd/streaming.c +410 -0
  102. data/ext/vibe_zstd/vibe_zstd.c +293 -0
  103. data/ext/vibe_zstd/vibe_zstd.h +56 -0
  104. data/ext/vibe_zstd/vibe_zstd_internal.h +27 -0
  105. data/lib/vibe_zstd/constants.rb +67 -0
  106. data/lib/vibe_zstd/version.rb +5 -0
  107. data/lib/vibe_zstd.rb +255 -0
  108. data/sig/vibe_zstd.rbs +76 -0
  109. metadata +179 -0
data/sig/vibe_zstd.rbs ADDED
@@ -0,0 +1,76 @@
1
+ module VibeZstd
2
+ VERSION: String
3
+
4
+ # Compression context for reusable compression operations
5
+ class CCtx
6
+ def initialize: () -> void
7
+ def compress: (String data, ?Integer? level, ?CDict? dict, ?pledged_size: Integer?) -> String
8
+ def set_parameter: (Symbol param, Integer value) -> self
9
+ def get_parameter: (Symbol param) -> Integer
10
+ def use_prefix: (String prefix_data) -> self
11
+ def self.parameter_bounds: (Symbol param) -> Hash[Symbol, Integer]
12
+ def self.estimate_memory: (Integer level) -> Integer
13
+ end
14
+
15
+ # Decompression context for reusable decompression operations
16
+ class DCtx
17
+ def initialize: () -> void
18
+ def decompress: (String data, ?DDict? dict) -> String
19
+ def set_parameter: (Symbol param, Integer value) -> self
20
+ def get_parameter: (Symbol param) -> Integer
21
+ def use_prefix: (String prefix_data) -> self
22
+ def self.parameter_bounds: (Symbol param) -> Hash[Symbol, Integer]
23
+ def self.frame_content_size: (String data) -> Integer?
24
+ def self.estimate_memory: () -> Integer
25
+ end
26
+
27
+ # Pre-digested compression dictionary
28
+ class CDict
29
+ def initialize: (String dict_data, ?Integer? level) -> void
30
+ def size: () -> Integer
31
+ def dict_id: () -> Integer
32
+ def self.estimate_memory: (Integer dict_size, Integer level) -> Integer
33
+ end
34
+
35
+ # Pre-digested decompression dictionary
36
+ class DDict
37
+ def initialize: (String dict_data) -> void
38
+ def size: () -> Integer
39
+ def dict_id: () -> Integer
40
+ def self.estimate_memory: (Integer dict_size) -> Integer
41
+ end
42
+
43
+ module Compress
44
+ # Streaming compression writer
45
+ class Writer
46
+ def initialize: (IO io, ?level: Integer?, ?dict: CDict?, ?pledged_size: Integer?) -> void
47
+ def write: (String data) -> self
48
+ def flush: () -> self
49
+ def finish: () -> self
50
+ def close: () -> self
51
+ end
52
+ end
53
+
54
+ module Decompress
55
+ # Streaming decompression reader
56
+ class Reader
57
+ def initialize: (IO io, ?dict: DDict?) -> void
58
+ def read: (?Integer? size) -> String?
59
+ end
60
+ end
61
+
62
+ # Module-level convenience methods
63
+ def self.compress: (String data, ?level: Integer?, ?dict: CDict?) -> String
64
+ def self.decompress: (String data, ?dict: DDict?) -> String
65
+ def self.frame_content_size: (String data) -> Integer?
66
+
67
+ # Dictionary training and utilities
68
+ def self.train_dict: (Array[String] samples, ?max_dict_size: Integer?) -> String
69
+ def self.train_dict_cover: (Array[String] samples, ?max_dict_size: Integer?, ?k: Integer?, ?d: Integer?, ?steps: Integer?, ?split_point: Float?, ?shrink_dict: bool?, ?shrink_dict_max_regression: Integer?, ?nb_threads: Integer?) -> String
70
+ def self.train_dict_fast_cover: (Array[String] samples, ?max_dict_size: Integer?, ?k: Integer?, ?d: Integer?, ?f: Integer?, ?steps: Integer?, ?split_point: Float?, ?accel: Integer?, ?shrink_dict: bool?, ?shrink_dict_max_regression: Integer?, ?nb_threads: Integer?) -> String
71
+ def self.get_dict_id: (String dict_data) -> Integer
72
+ def self.get_dict_id_from_frame: (String data) -> Integer
73
+
74
+ # Compression utilities
75
+ def self.compress_bound: (Integer size) -> Integer
76
+ end
metadata ADDED
@@ -0,0 +1,179 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vibe_zstd
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Kelley Reynolds
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 2025-10-23 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: benchmark-ips
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '2.0'
19
+ type: :development
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '2.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: terminal-table
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '3.0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.0'
40
+ description: Fast, idiomatic Ruby bindings for Zstandard (zstd) compression library
41
+ email:
42
+ - kelley@water5000.com
43
+ executables: []
44
+ extensions:
45
+ - ext/vibe_zstd/extconf.rb
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".standard.yml"
49
+ - CHANGELOG.md
50
+ - LICENSE.txt
51
+ - README.md
52
+ - Rakefile
53
+ - benchmark/README.md
54
+ - benchmark/compression_levels.rb
55
+ - benchmark/context_reuse.rb
56
+ - benchmark/decompression_speed_by_level.rb
57
+ - benchmark/dictionary_training.rb
58
+ - benchmark/dictionary_usage.rb
59
+ - benchmark/for_readme.rb
60
+ - benchmark/generate_fixture.rb
61
+ - benchmark/helpers.rb
62
+ - benchmark/multithreading.rb
63
+ - benchmark/run_all.rb
64
+ - benchmark/streaming.rb
65
+ - ext/vibe_zstd/Makefile
66
+ - ext/vibe_zstd/cctx.c
67
+ - ext/vibe_zstd/dctx.c
68
+ - ext/vibe_zstd/dict.c
69
+ - ext/vibe_zstd/extconf.rb
70
+ - ext/vibe_zstd/frames.c
71
+ - ext/vibe_zstd/libzstd/LICENSE
72
+ - ext/vibe_zstd/libzstd/common/allocations.h
73
+ - ext/vibe_zstd/libzstd/common/bits.h
74
+ - ext/vibe_zstd/libzstd/common/bitstream.h
75
+ - ext/vibe_zstd/libzstd/common/compiler.h
76
+ - ext/vibe_zstd/libzstd/common/cpu.h
77
+ - ext/vibe_zstd/libzstd/common/debug.c
78
+ - ext/vibe_zstd/libzstd/common/debug.h
79
+ - ext/vibe_zstd/libzstd/common/entropy_common.c
80
+ - ext/vibe_zstd/libzstd/common/error_private.c
81
+ - ext/vibe_zstd/libzstd/common/error_private.h
82
+ - ext/vibe_zstd/libzstd/common/fse.h
83
+ - ext/vibe_zstd/libzstd/common/fse_decompress.c
84
+ - ext/vibe_zstd/libzstd/common/huf.h
85
+ - ext/vibe_zstd/libzstd/common/mem.h
86
+ - ext/vibe_zstd/libzstd/common/pool.c
87
+ - ext/vibe_zstd/libzstd/common/pool.h
88
+ - ext/vibe_zstd/libzstd/common/portability_macros.h
89
+ - ext/vibe_zstd/libzstd/common/threading.c
90
+ - ext/vibe_zstd/libzstd/common/threading.h
91
+ - ext/vibe_zstd/libzstd/common/xxhash.c
92
+ - ext/vibe_zstd/libzstd/common/xxhash.h
93
+ - ext/vibe_zstd/libzstd/common/zstd_common.c
94
+ - ext/vibe_zstd/libzstd/common/zstd_deps.h
95
+ - ext/vibe_zstd/libzstd/common/zstd_internal.h
96
+ - ext/vibe_zstd/libzstd/common/zstd_trace.h
97
+ - ext/vibe_zstd/libzstd/compress/clevels.h
98
+ - ext/vibe_zstd/libzstd/compress/fse_compress.c
99
+ - ext/vibe_zstd/libzstd/compress/hist.c
100
+ - ext/vibe_zstd/libzstd/compress/hist.h
101
+ - ext/vibe_zstd/libzstd/compress/huf_compress.c
102
+ - ext/vibe_zstd/libzstd/compress/zstd_compress.c
103
+ - ext/vibe_zstd/libzstd/compress/zstd_compress_internal.h
104
+ - ext/vibe_zstd/libzstd/compress/zstd_compress_literals.c
105
+ - ext/vibe_zstd/libzstd/compress/zstd_compress_literals.h
106
+ - ext/vibe_zstd/libzstd/compress/zstd_compress_sequences.c
107
+ - ext/vibe_zstd/libzstd/compress/zstd_compress_sequences.h
108
+ - ext/vibe_zstd/libzstd/compress/zstd_compress_superblock.c
109
+ - ext/vibe_zstd/libzstd/compress/zstd_compress_superblock.h
110
+ - ext/vibe_zstd/libzstd/compress/zstd_cwksp.h
111
+ - ext/vibe_zstd/libzstd/compress/zstd_double_fast.c
112
+ - ext/vibe_zstd/libzstd/compress/zstd_double_fast.h
113
+ - ext/vibe_zstd/libzstd/compress/zstd_fast.c
114
+ - ext/vibe_zstd/libzstd/compress/zstd_fast.h
115
+ - ext/vibe_zstd/libzstd/compress/zstd_lazy.c
116
+ - ext/vibe_zstd/libzstd/compress/zstd_lazy.h
117
+ - ext/vibe_zstd/libzstd/compress/zstd_ldm.c
118
+ - ext/vibe_zstd/libzstd/compress/zstd_ldm.h
119
+ - ext/vibe_zstd/libzstd/compress/zstd_ldm_geartab.h
120
+ - ext/vibe_zstd/libzstd/compress/zstd_opt.c
121
+ - ext/vibe_zstd/libzstd/compress/zstd_opt.h
122
+ - ext/vibe_zstd/libzstd/compress/zstd_preSplit.c
123
+ - ext/vibe_zstd/libzstd/compress/zstd_preSplit.h
124
+ - ext/vibe_zstd/libzstd/compress/zstdmt_compress.c
125
+ - ext/vibe_zstd/libzstd/compress/zstdmt_compress.h
126
+ - ext/vibe_zstd/libzstd/decompress/huf_decompress.c
127
+ - ext/vibe_zstd/libzstd/decompress/huf_decompress_amd64.S
128
+ - ext/vibe_zstd/libzstd/decompress/zstd_ddict.c
129
+ - ext/vibe_zstd/libzstd/decompress/zstd_ddict.h
130
+ - ext/vibe_zstd/libzstd/decompress/zstd_decompress.c
131
+ - ext/vibe_zstd/libzstd/decompress/zstd_decompress_block.c
132
+ - ext/vibe_zstd/libzstd/decompress/zstd_decompress_block.h
133
+ - ext/vibe_zstd/libzstd/decompress/zstd_decompress_internal.h
134
+ - ext/vibe_zstd/libzstd/deprecated/zbuff.h
135
+ - ext/vibe_zstd/libzstd/deprecated/zbuff_common.c
136
+ - ext/vibe_zstd/libzstd/deprecated/zbuff_compress.c
137
+ - ext/vibe_zstd/libzstd/deprecated/zbuff_decompress.c
138
+ - ext/vibe_zstd/libzstd/dictBuilder/cover.c
139
+ - ext/vibe_zstd/libzstd/dictBuilder/cover.h
140
+ - ext/vibe_zstd/libzstd/dictBuilder/divsufsort.c
141
+ - ext/vibe_zstd/libzstd/dictBuilder/divsufsort.h
142
+ - ext/vibe_zstd/libzstd/dictBuilder/fastcover.c
143
+ - ext/vibe_zstd/libzstd/dictBuilder/zdict.c
144
+ - ext/vibe_zstd/libzstd/zdict.h
145
+ - ext/vibe_zstd/libzstd/zstd.h
146
+ - ext/vibe_zstd/libzstd/zstd_errors.h
147
+ - ext/vibe_zstd/streaming.c
148
+ - ext/vibe_zstd/vibe_zstd.c
149
+ - ext/vibe_zstd/vibe_zstd.h
150
+ - ext/vibe_zstd/vibe_zstd_internal.h
151
+ - lib/vibe_zstd.rb
152
+ - lib/vibe_zstd/constants.rb
153
+ - lib/vibe_zstd/version.rb
154
+ - sig/vibe_zstd.rbs
155
+ homepage: https://github.com/kreynolds/vibe_zstd
156
+ licenses:
157
+ - MIT
158
+ metadata:
159
+ homepage_uri: https://github.com/kreynolds/vibe_zstd
160
+ source_code_uri: https://github.com/kreynolds/vibe_zstd
161
+ changelog_uri: https://github.com/kreynolds/vibe_zstd/blob/main/CHANGELOG.md
162
+ rdoc_options: []
163
+ require_paths:
164
+ - lib
165
+ required_ruby_version: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: 3.1.0
170
+ required_rubygems_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ requirements: []
176
+ rubygems_version: 3.6.5
177
+ specification_version: 4
178
+ summary: Ruby bindings for Zstandard compression
179
+ test_files: []