ruby-zstds 1.0.4 → 1.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae8809ef7fdd1bd25745784dbd1621851bd05c3fba52597fcbe532beeef17801
4
- data.tar.gz: ebe9a4333e96fd000da57e5885d5fc8dd825fd7e5b533c630da19d5abe51054c
3
+ metadata.gz: 2f277f0e51b0f8328d440a5f42f4834026c188f665eae60949645222cb73a23a
4
+ data.tar.gz: 0d7dffc0a3a026ecc4f3d97d060b43e3e701d5f1cabc53c9694a276eccad2199
5
5
  SHA512:
6
- metadata.gz: e552d52aa1b3c6867d5d3bffd67934b83d24a21d69e1e1777aa649ac7faba69ae3adb377b9ffb9214112cc5f9b346d2a26f4ce4269c8c2d7217905c052a06178
7
- data.tar.gz: 623001b72258e1def31308111068609b436834ad148b4bb32cf8ac006ca7d64a93afd16a42c426aef39e9f196d6063f96a45046e1e29166538dfb50c7681404b
6
+ metadata.gz: 652c9cc07c28459b47d16efa85aabb46bce2c5e35e440243aba73092ee3058e48cbcb0349179796cb041343f4c80cf2918101f6881b08b17c9922cf4dc64ce01
7
+ data.tar.gz: e1b3e5fd27512a02561ad61aff70983a42ef37e86293cb75365aa39174139f37a163ac51030ef9ebec721746f6bf39114e4a8db1c851a7207bed90c2ecf092ce
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Ruby bindings for zstd library
2
2
 
3
- | Travis | AppVeyor | Cirrus | Circle | Codecov |
4
- | :---: | :---: | :---: | :---: | :---: |
5
- | [![Travis test status](https://travis-ci.com/andrew-aladev/ruby-zstds.svg?branch=master)](https://travis-ci.com/andrew-aladev/ruby-zstds) | [![AppVeyor test status](https://ci.appveyor.com/api/projects/status/github/andrew-aladev/ruby-zstds?branch=master&svg=true)](https://ci.appveyor.com/project/andrew-aladev/ruby-zstds/branch/master) | [![Cirrus test status](https://api.cirrus-ci.com/github/andrew-aladev/ruby-zstds.svg?branch=master)](https://cirrus-ci.com/github/andrew-aladev/ruby-zstds) | [![Circle test status](https://circleci.com/gh/andrew-aladev/ruby-zstds/tree/master.svg?style=shield)](https://circleci.com/gh/andrew-aladev/ruby-zstds/tree/master) | [![Codecov](https://codecov.io/gh/andrew-aladev/ruby-zstds/branch/master/graph/badge.svg)](https://codecov.io/gh/andrew-aladev/ruby-zstds) |
3
+ | Travis | AppVeyor | Circle | Codecov |
4
+ | :---: | :---: | :---: | :---: |
5
+ | [![Travis test status](https://travis-ci.com/andrew-aladev/ruby-zstds.svg?branch=master)](https://travis-ci.com/andrew-aladev/ruby-zstds) | [![AppVeyor test status](https://ci.appveyor.com/api/projects/status/github/andrew-aladev/ruby-zstds?branch=master&svg=true)](https://ci.appveyor.com/project/andrew-aladev/ruby-zstds/branch/master) | [![Circle test status](https://circleci.com/gh/andrew-aladev/ruby-zstds/tree/master.svg?style=shield)](https://circleci.com/gh/andrew-aladev/ruby-zstds/tree/master) | [![Codecov](https://codecov.io/gh/andrew-aladev/ruby-zstds/branch/master/graph/badge.svg)](https://codecov.io/gh/andrew-aladev/ruby-zstds) |
6
6
 
7
7
  See [zstd library](https://github.com/facebook/zstd).
8
8
 
@@ -21,6 +21,8 @@ rake gem
21
21
  gem install pkg/ruby-zstds-*.gem
22
22
  ```
23
23
 
24
+ You can also use [overlay](https://github.com/andrew-aladev/overlay) for gentoo.
25
+
24
26
  ## Usage
25
27
 
26
28
  There are simple APIs: `String` and `File`. Also you can use generic streaming API: `Stream::Writer` and `Stream::Reader`.
@@ -101,158 +103,64 @@ end
101
103
 
102
104
  ## Options
103
105
 
104
- Each API supports several options:
105
-
106
- ```
107
- :source_buffer_length
108
- :destination_buffer_length
109
- ```
106
+ | Option | Values | Default | Description |
107
+ |---------------------------------|------------------|--------------|-------------|
108
+ | `source_buffer_length` | `0 - inf` | `0 (auto)` | internal buffer length for source data |
109
+ | `destination_buffer_length` | `0 - inf` | `0 (auto)` | internal buffer length for description data |
110
+ | `compression_level` | `-131072 - 22` | `0 (auto)` | compression level |
111
+ | `window_log` | `10 - 31` | `0 (auto)` | maximum back-reference distance (power of 2) |
112
+ | `hash_log` | `6 - 30` | `0 (auto)` | size of the initial probe table (power of 2) |
113
+ | `chain_log` | `6 - 30` | `0 (auto)` | size of the multi-probe search table (power of 2) |
114
+ | `search_log` | `1 - 30` | `0 (auto)` | number of search attempts (power of 2) |
115
+ | `min_match` | `3 - 7` | `0 (auto)` | minimum size of searched matches |
116
+ | `target_length` | `0 - 131072` | `0 (auto)` | distance between match sampling (for `:fast` strategy), length of match considered "good enough" for (for other strategies) |
117
+ | `strategy` | `STRATEGIES` | `nil (auto)` | choses strategy |
118
+ | `enable_long_distance_matching` | `true/false` | `nil (auto)` | enables long distance matching |
119
+ | `ldm_hash_log` | `6 - 30` | `0 (auto)` | size of the table for long distance matching (power of 2) |
120
+ | `ldm_min_match` | `4 - 4096` | `0 (auto)` | minimum match size for long distance matcher |
121
+ | `ldm_bucket_size_log` | `1 - 8` | `0 (auto)` | log size of each bucket in the LDM hash table for collision resolution |
122
+ | `ldm_hash_rate_log` | `0 - 25` | `0 (auto)` | frequency of inserting/looking up entries into the LDM hash table |
123
+ | `content_size_flag` | `true/false` | `true` | enables writing of content size into frame header (if known) |
124
+ | `checksum_flag` | `true/false` | `false` | enables writing of 32-bits checksum of content at end of frame |
125
+ | `dict_id_flag` | `true/false` | `true` | enables writing of dictionary id into frame header |
126
+ | `nb_workers` | `0 - 200` | `0 (auto)` | number of threads spawned in parallel |
127
+ | `job_size` | `0 - 1073741824` | `0 (auto)` | size of job (nb_workers >= 1) |
128
+ | `overlap_log` | `0 - 9` | `0 (auto)` | overlap size, as a fraction of window size |
129
+ | `window_log_max` | `10 - 31` | `0 (auto)` | size limit (power of 2) |
130
+ | `dictionary` | `Dictionary` | `nil` | chose dictionary |
131
+ | `pledged_size` | `0 - inf` | `0 (auto)` | size of input (if known) |
110
132
 
111
133
  There are internal buffers for compressed and decompressed data.
112
- For example you want to use 1 KB as source buffer length for compressor - please use 256 B as destination buffer length.
113
- You want to use 256 B as source buffer length for decompressor - please use 1 KB as destination buffer length.
114
-
115
- Values: 0 - infinity, default value: 0.
116
- 0 means automatic buffer length selection.
117
-
118
- ```
119
- :compression_level
120
- ```
121
-
122
- Values: `ZSTDS::Option::MIN_COMPRESSION_LEVEL` - `ZSTDS::Option::MAX_COMPRESSION_LEVEL`, default value: `0`.
123
-
124
- ```
125
- :window_log
126
- ```
127
-
128
- Values: `ZSTDS::Option::MIN_WINDOW_LOG` - `ZSTDS::Option::MAX_WINDOW_LOG`, default value: `0`.
129
-
130
- ```
131
- :hash_log
132
- ```
133
-
134
- Values: `ZSTDS::Option::MIN_HASH_LOG` - `ZSTDS::Option::MAX_HASH_LOG`, default value: `0`.
135
-
136
- ```
137
- :chain_log
138
- ```
139
-
140
- Values: `ZSTDS::Option::MIN_CHAIN_LOG` - `ZSTDS::Option::MAX_CHAIN_LOG`, default value: `0`.
141
-
142
- ```
143
- :search_log
144
- ```
145
-
146
- Values: `ZSTDS::Option::MIN_SEARCH_LOG` - `ZSTDS::Option::MAX_SEARCH_LOG`, default value: `0`.
147
-
148
- ```
149
- :min_match
150
- ```
151
-
152
- Values: `ZSTDS::Option::MIN_MIN_MATCH` - `ZSTDS::Option::MAX_MIN_MATCH`, default value: `0`.
153
-
154
- ```
155
- :target_length
156
- ```
157
-
158
- Values: `ZSTDS::Option::MIN_TARGET_LENGTH` - `ZSTDS::Option::MAX_TARGET_LENGTH`, default value: `0`.
159
-
160
- ```
161
- :strategy
162
- ```
163
-
164
- Values: `ZSTDS::Option::STRATEGIES`, default value: none.
165
-
166
- ```
167
- :enable_long_distance_matching
168
- ```
169
-
170
- Values: true/false, default value: none.
171
-
172
- ```
173
- :ldm_hash_log
174
- ```
175
-
176
- Values: `ZSTDS::Option::MIN_LDM_HASH_LOG` - `ZSTDS::Option::MAX_LDM_HASH_LOG`, default value: `0`.
177
-
178
- ```
179
- :ldm_min_match
180
- ```
134
+ For example you want to use 1 KB as `source_buffer_length` for compressor - please use 256 B as `destination_buffer_length`.
135
+ You want to use 256 B as `source_buffer_length` for decompressor - please use 1 KB as `destination_buffer_length`.
181
136
 
182
- Values: `ZSTDS::Option::MIN_LDM_MIN_MATCH` - `ZSTDS::Option::MAX_LDM_MIN_MATCH`, default value: `0`.
183
-
184
- ```
185
- :ldm_bucket_size_log
186
- ```
187
-
188
- Values: `ZSTDS::Option::MIN_LDM_BUCKET_SIZE_LOG` - `ZSTDS::Option::MAX_LDM_BUCKET_SIZE_LOG`, default value: `0`.
189
-
190
- ```
191
- :ldm_hash_rate_log
192
- ```
193
-
194
- Values: `ZSTDS::Option::MIN_LDM_HASH_RATE_LOG` - `ZSTDS::Option::MAX_LDM_HASH_RATE_LOG`, default value: `0`.
195
-
196
- ```
197
- :content_size_flag
198
- ```
199
-
200
- Values: true/false, default value: true.
201
-
202
- ```
203
- :checksum_flag
204
- ```
205
-
206
- Values: true/false, default value: false.
207
-
208
- ```
209
- :dict_id_flag
210
- ```
211
-
212
- Values: true/false, default value: true.
213
-
214
- ```
215
- :nb_workers
216
- ```
217
-
218
- Values: `ZSTDS::Option::MIN_NB_WORKERS` - `ZSTDS::Option::MAX_NB_WORKERS`, default value: `0`.
219
-
220
- ```
221
- :job_size
222
- ```
223
-
224
- Values: `ZSTDS::Option::MIN_JOB_SIZE` - `ZSTDS::Option::MAX_JOB_SIZE`, default value: `0`.
225
-
226
- ```
227
- :overlap_log
228
- ```
229
-
230
- Values: `ZSTDS::Option::MIN_OVERLAP_LOG` - `ZSTDS::Option::MAX_OVERLAP_LOG`, default value: `0`.
231
-
232
- ```
233
- :window_log_max
234
- ```
235
-
236
- Values: `ZSTDS::Option::MIN_WINDOW_LOG_MAX` - `ZSTDS::Option::MAX_WINDOW_LOG_MAX`, default value: `0`.
237
-
238
- ```
239
- :dictionary
240
- ```
241
-
242
- Special option for dictionary, default value: none.
243
-
244
- ```
245
- :pledged_size
246
- ```
247
-
248
- Values: 0 - infinity, default value: 0.
249
- It is reasonable to provide size of input (if known) for streaming api.
250
137
  `String` and `File` will set `:pledged_size` automaticaly.
251
138
 
252
- Please read zstd docs for more info about options.
139
+ You can also read zstd docs for more info about options.
140
+
141
+ | Option | Related constants |
142
+ |-----------------------|-------------------|
143
+ | `compression_level` | `ZSTDS::Option::MIN_COMPRESSION_LEVEL = -131072`, `ZSTDS::Option::MAX_COMPRESSION_LEVEL = 22` |
144
+ | `window_log` | `ZSTDS::Option::MIN_WINDOW_LOG = 10`, `ZSTDS::Option::MAX_WINDOW_LOG = 31` |
145
+ | `hash_log` | `ZSTDS::Option::MIN_HASH_LOG = 6`, `ZSTDS::Option::MAX_HASH_LOG = 30` |
146
+ | `chain_log` | `ZSTDS::Option::MIN_CHAIN_LOG = 6`, `ZSTDS::Option::MAX_CHAIN_LOG = 30` |
147
+ | `search_log` | `ZSTDS::Option::MIN_SEARCH_LOG = 1`, `ZSTDS::Option::MAX_SEARCH_LOG = 30` |
148
+ | `min_match` | `ZSTDS::Option::MIN_MIN_MATCH = 3`, `ZSTDS::Option::MAX_MIN_MATCH = 7` |
149
+ | `target_length` | `ZSTDS::Option::MIN_TARGET_LENGTH = 0`, `ZSTDS::Option::MAX_TARGET_LENGTH = 131072` |
150
+ | `strategy` | `ZSTDS::Option::STRATEGIES = %i[fast dfast greedy lazy lazy2 btlazy2 btopt btultra btultra2]` |
151
+ | `ldm_hash_log` | `ZSTDS::Option::MIN_LDM_HASH_LOG = 6`, `ZSTDS::Option::MAX_LDM_HASH_LOG = 30` |
152
+ | `ldm_min_match` | `ZSTDS::Option::MIN_LDM_MIN_MATCH = 4`, `ZSTDS::Option::MAX_LDM_MIN_MATCH = 4096` |
153
+ | `ldm_bucket_size_log` | `ZSTDS::Option::MIN_LDM_BUCKET_SIZE_LOG = 1`, `ZSTDS::Option::MAX_LDM_BUCKET_SIZE_LOG = 8` |
154
+ | `ldm_hash_rate_log` | `ZSTDS::Option::MIN_LDM_HASH_RATE_LOG = 0`, `ZSTDS::Option::MAX_LDM_HASH_RATE_LOG = 25` |
155
+ | `nb_workers` | `ZSTDS::Option::MIN_NB_WORKERS = 0`, `ZSTDS::Option::MAX_NB_WORKERS = 200` |
156
+ | `job_size` | `ZSTDS::Option::MIN_JOB_SIZE = 0`, `ZSTDS::Option::MAX_JOB_SIZE = 1073741824` |
157
+ | `overlap_log` | `ZSTDS::Option::MIN_OVERLAP_LOG = 0`, `ZSTDS::Option::MAX_OVERLAP_LOG = 9` |
158
+ | `window_log_max` | `ZSTDS::Option::MIN_WINDOW_LOG_MAX = 10`, `ZSTDS::Option::MAX_WINDOW_LOG_MAX = 31` |
253
159
 
254
160
  Possible compressor options:
255
161
  ```
162
+ :source_buffer_length
163
+ :destination_buffer_length
256
164
  :compression_level
257
165
  :window_log
258
166
  :hash_log
@@ -278,6 +186,8 @@ Possible compressor options:
278
186
 
279
187
  Possible decompressor options:
280
188
  ```
189
+ :source_buffer_length
190
+ :destination_buffer_length
281
191
  :window_log_max
282
192
  :dictionary
283
193
  ```
@@ -514,8 +424,6 @@ See universal test script [scripts/ci_test.sh](scripts/ci_test.sh) for CI.
514
424
  Please visit [scripts/test-images](scripts/test-images).
515
425
  You can run this test script using many native and cross images.
516
426
 
517
- Cirrus CI uses `x86_64-pc-linux-gnu` image, Circle CI - `x86_64-gentoo-linux-musl` image.
518
-
519
427
  ## License
520
428
 
521
429
  MIT license, see LICENSE and AUTHORS.
@@ -75,6 +75,13 @@ $srcs = %w[
75
75
  .map { |name| "src/#{extension_name}/#{name}.c" }
76
76
  .freeze
77
77
 
78
+ # Removing library duplicates.
79
+ $libs = $libs.split(%r{\s})
80
+ .reject(&:empty?)
81
+ .sort
82
+ .uniq
83
+ .join " "
84
+
78
85
  if ENV["CI"] || ENV["COVERAGE"]
79
86
  $CFLAGS << " --coverage"
80
87
  $LDFLAGS << " --coverage"
@@ -166,9 +166,8 @@ module ZSTDS
166
166
  end
167
167
 
168
168
  dictionary = options[:dictionary]
169
- unless dictionary.nil?
170
- raise ValidateError, "invalid dictionary" unless dictionary.is_a? Dictionary
171
- end
169
+ raise ValidateError, "invalid dictionary" unless
170
+ dictionary.nil? || dictionary.is_a?(Dictionary)
172
171
 
173
172
  options
174
173
  end
@@ -2,5 +2,5 @@
2
2
  # Copyright (c) 2019 AUTHORS, MIT License.
3
3
 
4
4
  module ZSTDS
5
- VERSION = "1.0.4".freeze
5
+ VERSION = "1.0.5".freeze
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-zstds
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Aladjev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-18 00:00:00.000000000 Z
11
+ date: 2020-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: codecov
@@ -194,9 +194,9 @@ require_paths:
194
194
  - lib
195
195
  required_ruby_version: !ruby/object:Gem::Requirement
196
196
  requirements:
197
- - - ">="
197
+ - - "~>"
198
198
  - !ruby/object:Gem::Version
199
- version: '0'
199
+ version: '2.7'
200
200
  required_rubygems_version: !ruby/object:Gem::Requirement
201
201
  requirements:
202
202
  - - ">="