extlz4 0.2.5 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.ja.md +9 -1
- data/README.md +44 -41
- data/contrib/lz4/NEWS +33 -0
- data/contrib/lz4/README.md +30 -24
- data/contrib/lz4/lib/README.md +59 -10
- data/contrib/lz4/lib/lz4.c +1303 -583
- data/contrib/lz4/lib/lz4.h +376 -176
- data/contrib/lz4/lib/lz4frame.c +447 -286
- data/contrib/lz4/lib/lz4frame.h +289 -74
- data/contrib/lz4/lib/lz4frame_static.h +4 -111
- data/contrib/lz4/lib/lz4hc.c +789 -207
- data/contrib/lz4/lib/lz4hc.h +256 -93
- data/contrib/lz4/lib/xxhash.c +376 -240
- data/contrib/lz4/lib/xxhash.h +128 -93
- data/ext/blockapi.c +2 -2
- data/ext/lz4_amalgam.c +0 -23
- data/gemstub.rb +4 -4
- data/lib/extlz4.rb +46 -0
- data/lib/extlz4/version.rb +1 -1
- metadata +33 -10
- data/contrib/lz4/circle.yml +0 -38
- data/contrib/lz4/lib/lz4opt.h +0 -356
data/contrib/lz4/lib/xxhash.h
CHANGED
@@ -57,8 +57,8 @@ Q.Score is a measure of quality of the hash function.
|
|
57
57
|
It depends on successfully passing SMHasher test set.
|
58
58
|
10 is a perfect score.
|
59
59
|
|
60
|
-
A 64-
|
61
|
-
It offers much better speed, but for 64-
|
60
|
+
A 64-bit version, named XXH64, is available since r35.
|
61
|
+
It offers much better speed, but for 64-bit applications only.
|
62
62
|
Name Speed on 64 bits Speed on 32 bits
|
63
63
|
XXH64 13.8 GB/s 1.9 GB/s
|
64
64
|
XXH32 6.8 GB/s 6.0 GB/s
|
@@ -80,18 +80,19 @@ typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode;
|
|
80
80
|
|
81
81
|
|
82
82
|
/* ****************************
|
83
|
-
* API modifier
|
84
|
-
******************************/
|
85
|
-
/** XXH_PRIVATE_API
|
86
|
-
*
|
87
|
-
*
|
88
|
-
*
|
89
|
-
*
|
90
|
-
* #
|
91
|
-
*
|
92
|
-
*
|
93
|
-
|
94
|
-
|
83
|
+
* API modifier
|
84
|
+
******************************/
|
85
|
+
/** XXH_INLINE_ALL (and XXH_PRIVATE_API)
|
86
|
+
* This is useful to include xxhash functions in `static` mode
|
87
|
+
* in order to inline them, and remove their symbol from the public list.
|
88
|
+
* Inlining can offer dramatic performance improvement on small keys.
|
89
|
+
* Methodology :
|
90
|
+
* #define XXH_INLINE_ALL
|
91
|
+
* #include "xxhash.h"
|
92
|
+
* `xxhash.c` is automatically included.
|
93
|
+
* It's not useful to compile and link it as a separate module.
|
94
|
+
*/
|
95
|
+
#if defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API)
|
95
96
|
# ifndef XXH_STATIC_LINKING_ONLY
|
96
97
|
# define XXH_STATIC_LINKING_ONLY
|
97
98
|
# endif
|
@@ -102,23 +103,24 @@ typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode;
|
|
102
103
|
# elif defined(_MSC_VER)
|
103
104
|
# define XXH_PUBLIC_API static __inline
|
104
105
|
# else
|
105
|
-
|
106
|
+
/* this version may generate warnings for unused static functions */
|
107
|
+
# define XXH_PUBLIC_API static
|
106
108
|
# endif
|
107
109
|
#else
|
108
110
|
# define XXH_PUBLIC_API /* do nothing */
|
109
|
-
#endif /* XXH_PRIVATE_API */
|
110
|
-
|
111
|
-
/*!XXH_NAMESPACE, aka Namespace Emulation :
|
112
|
-
|
113
|
-
If you want to include _and expose_ xxHash functions from within your own library,
|
114
|
-
but also want to avoid symbol collisions with other libraries which may also include xxHash,
|
115
|
-
|
116
|
-
you can use XXH_NAMESPACE, to automatically prefix any public symbol from xxhash library
|
117
|
-
with the value of XXH_NAMESPACE (therefore, avoid NULL and numeric values).
|
118
|
-
|
119
|
-
Note that no change is required within the calling program as long as it includes `xxhash.h` :
|
120
|
-
regular symbol name will be automatically translated by this header.
|
121
|
-
*/
|
111
|
+
#endif /* XXH_INLINE_ALL || XXH_PRIVATE_API */
|
112
|
+
|
113
|
+
/*! XXH_NAMESPACE, aka Namespace Emulation :
|
114
|
+
*
|
115
|
+
* If you want to include _and expose_ xxHash functions from within your own library,
|
116
|
+
* but also want to avoid symbol collisions with other libraries which may also include xxHash,
|
117
|
+
*
|
118
|
+
* you can use XXH_NAMESPACE, to automatically prefix any public symbol from xxhash library
|
119
|
+
* with the value of XXH_NAMESPACE (therefore, avoid NULL and numeric values).
|
120
|
+
*
|
121
|
+
* Note that no change is required within the calling program as long as it includes `xxhash.h` :
|
122
|
+
* regular symbol name will be automatically translated by this header.
|
123
|
+
*/
|
122
124
|
#ifdef XXH_NAMESPACE
|
123
125
|
# define XXH_CAT(A,B) A##B
|
124
126
|
# define XXH_NAME2(A,B) XXH_CAT(A,B)
|
@@ -149,18 +151,18 @@ regular symbol name will be automatically translated by this header.
|
|
149
151
|
***************************************/
|
150
152
|
#define XXH_VERSION_MAJOR 0
|
151
153
|
#define XXH_VERSION_MINOR 6
|
152
|
-
#define XXH_VERSION_RELEASE
|
154
|
+
#define XXH_VERSION_RELEASE 5
|
153
155
|
#define XXH_VERSION_NUMBER (XXH_VERSION_MAJOR *100*100 + XXH_VERSION_MINOR *100 + XXH_VERSION_RELEASE)
|
154
156
|
XXH_PUBLIC_API unsigned XXH_versionNumber (void);
|
155
157
|
|
156
158
|
|
157
159
|
/*-**********************************************************************
|
158
|
-
* 32-
|
160
|
+
* 32-bit hash
|
159
161
|
************************************************************************/
|
160
|
-
typedef unsigned int
|
162
|
+
typedef unsigned int XXH32_hash_t;
|
161
163
|
|
162
164
|
/*! XXH32() :
|
163
|
-
Calculate the 32-
|
165
|
+
Calculate the 32-bit hash of sequence "length" bytes stored at memory address "input".
|
164
166
|
The memory between input & input+length must be valid (allocated and read-accessible).
|
165
167
|
"seed" can be used to alter the result predictably.
|
166
168
|
Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s */
|
@@ -177,26 +179,25 @@ XXH_PUBLIC_API XXH_errorcode XXH32_update (XXH32_state_t* statePtr, const void*
|
|
177
179
|
XXH_PUBLIC_API XXH32_hash_t XXH32_digest (const XXH32_state_t* statePtr);
|
178
180
|
|
179
181
|
/*
|
180
|
-
|
181
|
-
Note that, for small input, they are slower than single-call functions, due to state management.
|
182
|
-
For small
|
183
|
-
|
184
|
-
XXH state must first be allocated, using XXH*_createState() .
|
185
|
-
|
186
|
-
Start a new hash by initializing state with a seed, using XXH*_reset().
|
187
|
-
|
188
|
-
Then, feed the hash state by calling XXH*_update() as many times as necessary.
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
*/
|
182
|
+
* Streaming functions generate the xxHash of an input provided in multiple segments.
|
183
|
+
* Note that, for small input, they are slower than single-call functions, due to state management.
|
184
|
+
* For small inputs, prefer `XXH32()` and `XXH64()`, which are better optimized.
|
185
|
+
*
|
186
|
+
* XXH state must first be allocated, using XXH*_createState() .
|
187
|
+
*
|
188
|
+
* Start a new hash by initializing state with a seed, using XXH*_reset().
|
189
|
+
*
|
190
|
+
* Then, feed the hash state by calling XXH*_update() as many times as necessary.
|
191
|
+
* The function returns an error code, with 0 meaning OK, and any other value meaning there is an error.
|
192
|
+
*
|
193
|
+
* Finally, a hash value can be produced anytime, by using XXH*_digest().
|
194
|
+
* This function returns the nn-bits hash as an int or long long.
|
195
|
+
*
|
196
|
+
* It's still possible to continue inserting input into the hash state after a digest,
|
197
|
+
* and generate some new hashes later on, by calling again XXH*_digest().
|
198
|
+
*
|
199
|
+
* When done, free XXH state space if it was allocated dynamically.
|
200
|
+
*/
|
200
201
|
|
201
202
|
/*====== Canonical representation ======*/
|
202
203
|
|
@@ -205,22 +206,22 @@ XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t
|
|
205
206
|
XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src);
|
206
207
|
|
207
208
|
/* Default result type for XXH functions are primitive unsigned 32 and 64 bits.
|
208
|
-
*
|
209
|
-
*
|
210
|
-
*
|
211
|
-
*/
|
209
|
+
* The canonical representation uses human-readable write convention, aka big-endian (large digits first).
|
210
|
+
* These functions allow transformation of hash result into and from its canonical format.
|
211
|
+
* This way, hash values can be written into a file / memory, and remain comparable on different systems and programs.
|
212
|
+
*/
|
212
213
|
|
213
214
|
|
214
215
|
#ifndef XXH_NO_LONG_LONG
|
215
216
|
/*-**********************************************************************
|
216
|
-
* 64-
|
217
|
+
* 64-bit hash
|
217
218
|
************************************************************************/
|
218
219
|
typedef unsigned long long XXH64_hash_t;
|
219
220
|
|
220
221
|
/*! XXH64() :
|
221
|
-
Calculate the 64-
|
222
|
+
Calculate the 64-bit hash of sequence of length "len" stored at memory address "input".
|
222
223
|
"seed" can be used to alter the result predictably.
|
223
|
-
This function runs faster on 64-
|
224
|
+
This function runs faster on 64-bit systems, but slower on 32-bit systems (see benchmark).
|
224
225
|
*/
|
225
226
|
XXH_PUBLIC_API XXH64_hash_t XXH64 (const void* input, size_t length, unsigned long long seed);
|
226
227
|
|
@@ -241,48 +242,82 @@ XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src
|
|
241
242
|
#endif /* XXH_NO_LONG_LONG */
|
242
243
|
|
243
244
|
|
245
|
+
|
244
246
|
#ifdef XXH_STATIC_LINKING_ONLY
|
245
247
|
|
246
248
|
/* ================================================================================================
|
247
|
-
This section contains
|
249
|
+
This section contains declarations which are not guaranteed to remain stable.
|
248
250
|
They may change in future versions, becoming incompatible with a different version of the library.
|
249
|
-
|
250
|
-
Never use
|
251
|
+
These declarations should only be used with static linking.
|
252
|
+
Never use them in association with dynamic linking !
|
251
253
|
=================================================================================================== */
|
252
254
|
|
253
|
-
/* These definitions are only
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
255
|
+
/* These definitions are only present to allow
|
256
|
+
* static allocation of XXH state, on stack or in a struct for example.
|
257
|
+
* Never **ever** use members directly. */
|
258
|
+
|
259
|
+
#if !defined (__VMS) \
|
260
|
+
&& (defined (__cplusplus) \
|
261
|
+
|| (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) )
|
262
|
+
# include <stdint.h>
|
263
|
+
|
264
|
+
struct XXH32_state_s {
|
265
|
+
uint32_t total_len_32;
|
266
|
+
uint32_t large_len;
|
267
|
+
uint32_t v1;
|
268
|
+
uint32_t v2;
|
269
|
+
uint32_t v3;
|
270
|
+
uint32_t v4;
|
271
|
+
uint32_t mem32[4];
|
272
|
+
uint32_t memsize;
|
273
|
+
uint32_t reserved; /* never read nor write, might be removed in a future version */
|
274
|
+
}; /* typedef'd to XXH32_state_t */
|
275
|
+
|
276
|
+
struct XXH64_state_s {
|
277
|
+
uint64_t total_len;
|
278
|
+
uint64_t v1;
|
279
|
+
uint64_t v2;
|
280
|
+
uint64_t v3;
|
281
|
+
uint64_t v4;
|
282
|
+
uint64_t mem64[4];
|
283
|
+
uint32_t memsize;
|
284
|
+
uint32_t reserved[2]; /* never read nor write, might be removed in a future version */
|
285
|
+
}; /* typedef'd to XXH64_state_t */
|
286
|
+
|
287
|
+
# else
|
288
|
+
|
289
|
+
struct XXH32_state_s {
|
290
|
+
unsigned total_len_32;
|
291
|
+
unsigned large_len;
|
292
|
+
unsigned v1;
|
293
|
+
unsigned v2;
|
294
|
+
unsigned v3;
|
295
|
+
unsigned v4;
|
296
|
+
unsigned mem32[4];
|
297
|
+
unsigned memsize;
|
298
|
+
unsigned reserved; /* never read nor write, might be removed in a future version */
|
299
|
+
}; /* typedef'd to XXH32_state_t */
|
300
|
+
|
301
|
+
# ifndef XXH_NO_LONG_LONG /* remove 64-bit support */
|
302
|
+
struct XXH64_state_s {
|
303
|
+
unsigned long long total_len;
|
304
|
+
unsigned long long v1;
|
305
|
+
unsigned long long v2;
|
306
|
+
unsigned long long v3;
|
307
|
+
unsigned long long v4;
|
308
|
+
unsigned long long mem64[4];
|
309
|
+
unsigned memsize;
|
310
|
+
unsigned reserved[2]; /* never read nor write, might be removed in a future version */
|
311
|
+
}; /* typedef'd to XXH64_state_t */
|
312
|
+
# endif
|
313
|
+
|
314
|
+
# endif
|
315
|
+
|
316
|
+
|
317
|
+
#if defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API)
|
318
|
+
# include "xxhash.c" /* include xxhash function bodies as `static`, for inlining */
|
280
319
|
#endif
|
281
320
|
|
282
|
-
# ifdef XXH_PRIVATE_API
|
283
|
-
# include "xxhash.c" /* include xxhash function bodies as `static`, for inlining */
|
284
|
-
# endif
|
285
|
-
|
286
321
|
#endif /* XXH_STATIC_LINKING_ONLY */
|
287
322
|
|
288
323
|
|
data/ext/blockapi.c
CHANGED
@@ -504,7 +504,7 @@ blkenc_update(int argc, VALUE argv[], VALUE enc)
|
|
504
504
|
int s = p->traits->update(p->context, srcp, RSTRING_PTR(dest), srcsize, maxsize, p->level);
|
505
505
|
if (s <= 0) {
|
506
506
|
rb_raise(extlz4_eError,
|
507
|
-
"destsize too small (given destsize is %
|
507
|
+
"destsize too small (given destsize is %"PRIuSIZE")",
|
508
508
|
rb_str_capacity(dest));
|
509
509
|
}
|
510
510
|
p->prefixsize = p->traits->savedict(p->context, p->prefix, sizeof(p->prefix));
|
@@ -684,7 +684,7 @@ blkenc_s_encode(int argc, VALUE argv[], VALUE lz4)
|
|
684
684
|
size_t srcsize = RSTRING_LEN(src);
|
685
685
|
if (srcsize > LZ4_MAX_INPUT_SIZE) {
|
686
686
|
rb_raise(extlz4_eError,
|
687
|
-
"source size is too big for lz4 encode (given %
|
687
|
+
"source size is too big for lz4 encode (given %"PRIuSIZE", but max %"PRIuSIZE" bytes)",
|
688
688
|
srcsize, (size_t)LZ4_MAX_INPUT_SIZE);
|
689
689
|
}
|
690
690
|
aux_str_reserve(dest, maxsize);
|
data/ext/lz4_amalgam.c
CHANGED
@@ -3,29 +3,6 @@
|
|
3
3
|
#endif
|
4
4
|
|
5
5
|
#include "../contrib/lz4/lib/lz4.c"
|
6
|
-
|
7
|
-
#define LZ4_isLittleEndian amalg_LZ4_isLittleEndian
|
8
|
-
#define LZ4_read16 amalg_LZ4_read16
|
9
|
-
#define LZ4_read32 amalg_LZ4_read32
|
10
|
-
#define LZ4_read_ARCH amalg_LZ4_read_ARCH
|
11
|
-
#define LZ4_write16 amalg_LZ4_write16
|
12
|
-
#define LZ4_write32 amalg_LZ4_write32
|
13
|
-
#define LZ4_readLE16 amalg_LZ4_readLE16
|
14
|
-
#define LZ4_writeLE16 amalg_LZ4_writeLE16
|
15
|
-
#define LZ4_copy8 amalg_LZ4_copy8
|
16
|
-
#define LZ4_wildCopy amalg_LZ4_wildCopy
|
17
|
-
#define LZ4_minLength amalg_LZ4_minLength
|
18
|
-
#define LZ4_NbCommonBytes amalg_LZ4_NbCommonBytes
|
19
|
-
#define LZ4_count amalg_LZ4_count
|
20
|
-
#define limitedOutput amalg_limitedOutput
|
21
|
-
#define limitedOutput_directive amalg_limitedOutput_directive
|
22
|
-
#define unalign amalg_unalign
|
23
6
|
#include "../contrib/lz4/lib/lz4hc.c"
|
24
|
-
|
25
|
-
#undef ALLOCATOR
|
26
|
-
#undef KB
|
27
|
-
#undef MB
|
28
|
-
#undef GB
|
29
7
|
#include "../contrib/lz4/lib/lz4frame.c"
|
30
|
-
|
31
8
|
#include "../contrib/lz4/lib/xxhash.c"
|
data/gemstub.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
unless File.read("README.md"
|
1
|
+
unless ver = File.read("README.md").scan(/^\s*[\*\-]\s*version:{1,2}\s*(.+)/i).flatten[-1]
|
2
2
|
raise "バージョン情報が README.md に見つかりません"
|
3
3
|
end
|
4
4
|
|
5
|
-
ver = $1
|
6
5
|
verfile = "lib/extlz4/version.rb"
|
7
6
|
LIB << verfile
|
8
7
|
|
@@ -29,12 +28,13 @@ GEMSTUB = Gem::Specification.new do |s|
|
|
29
28
|
s.version = ver
|
30
29
|
s.summary = "ruby bindings for LZ4"
|
31
30
|
s.description = <<EOS
|
32
|
-
ruby bindings for LZ4 <https://github.com/lz4/lz4>.
|
31
|
+
unofficial ruby bindings for LZ4 <https://github.com/lz4/lz4>.
|
33
32
|
EOS
|
34
33
|
s.homepage = "https://github.com/dearblue/ruby-extlz4"
|
35
34
|
s.license = "BSD-2-Clause"
|
36
35
|
s.author = "dearblue"
|
37
36
|
s.email = "dearblue@users.noreply.github.com"
|
38
37
|
|
39
|
-
s.add_development_dependency "rake"
|
38
|
+
s.add_development_dependency "rake", "~> 1.12", ">= 1.12.3"
|
39
|
+
s.add_development_dependency "test-unit", "~> 3.2", ">= 3.2.7"
|
40
40
|
end
|
data/lib/extlz4.rb
CHANGED
@@ -322,6 +322,52 @@ module LZ4
|
|
322
322
|
alias block_stream_decompress block_stream_decode
|
323
323
|
alias block_stream_uncompress block_stream_decode
|
324
324
|
end
|
325
|
+
|
326
|
+
refine String do
|
327
|
+
#
|
328
|
+
# call-seq:
|
329
|
+
# to_lz4frame(level = 1, opts = {}) -> lz4 frame'd data
|
330
|
+
#
|
331
|
+
def to_lz4frame(*args)
|
332
|
+
LZ4.encode self, *args
|
333
|
+
end
|
334
|
+
|
335
|
+
#
|
336
|
+
# call-seq:
|
337
|
+
# unlz4frame -> decoded data
|
338
|
+
#
|
339
|
+
def unlz4frame(*args, &block)
|
340
|
+
LZ4.decode self, *args, &block
|
341
|
+
end
|
342
|
+
|
343
|
+
def to_lz4block(*args)
|
344
|
+
LZ4.block_encode(self, *args)
|
345
|
+
end
|
346
|
+
|
347
|
+
def unlz4block(*args)
|
348
|
+
LZ4.block_decode(self, *args)
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
refine Object do
|
353
|
+
#
|
354
|
+
# call-seq:
|
355
|
+
# to_lz4frame(level = 1, opts = {}) -> stream encoder
|
356
|
+
# to_lz4frame(level = 1, opts = {}) { |stream_encoder| ... } -> yield_status
|
357
|
+
#
|
358
|
+
def to_lz4frame(*args, &block)
|
359
|
+
LZ4.encode self, *args, &block
|
360
|
+
end
|
361
|
+
|
362
|
+
#
|
363
|
+
# call-seq:
|
364
|
+
# -> decoder
|
365
|
+
# { |decoder| ... } -> yield_status
|
366
|
+
#
|
367
|
+
def unlz4frame(*args, &block)
|
368
|
+
LZ4.decode self, *args, &block
|
369
|
+
end
|
370
|
+
end
|
325
371
|
end
|
326
372
|
|
327
373
|
require_relative "extlz4/compat"
|
data/lib/extlz4/version.rb
CHANGED
metadata
CHANGED
@@ -1,32 +1,58 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: extlz4
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dearblue
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.12'
|
17
20
|
- - ">="
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
22
|
+
version: 1.12.3
|
20
23
|
type: :development
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.12'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.12.3
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: test-unit
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '3.2'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 3.2.7
|
43
|
+
type: :development
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '3.2'
|
24
50
|
- - ">="
|
25
51
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
-
description: 'ruby bindings for LZ4 <https://github.com/lz4/lz4>.
|
52
|
+
version: 3.2.7
|
53
|
+
description: 'unofficial ruby bindings for LZ4 <https://github.com/lz4/lz4>.
|
28
54
|
|
29
|
-
'
|
55
|
+
'
|
30
56
|
email: dearblue@users.noreply.github.com
|
31
57
|
executables:
|
32
58
|
- extlz4
|
@@ -62,7 +88,6 @@ files:
|
|
62
88
|
- contrib/lz4/LICENSE
|
63
89
|
- contrib/lz4/NEWS
|
64
90
|
- contrib/lz4/README.md
|
65
|
-
- contrib/lz4/circle.yml
|
66
91
|
- contrib/lz4/lib/LICENSE
|
67
92
|
- contrib/lz4/lib/README.md
|
68
93
|
- contrib/lz4/lib/liblz4.pc.in
|
@@ -73,7 +98,6 @@ files:
|
|
73
98
|
- contrib/lz4/lib/lz4frame_static.h
|
74
99
|
- contrib/lz4/lib/lz4hc.c
|
75
100
|
- contrib/lz4/lib/lz4hc.h
|
76
|
-
- contrib/lz4/lib/lz4opt.h
|
77
101
|
- contrib/lz4/lib/xxhash.c
|
78
102
|
- contrib/lz4/lib/xxhash.h
|
79
103
|
- examples/frameapi.rb
|
@@ -118,8 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
142
|
- !ruby/object:Gem::Version
|
119
143
|
version: '0'
|
120
144
|
requirements: []
|
121
|
-
|
122
|
-
rubygems_version: 2.7.4
|
145
|
+
rubygems_version: 3.0.3
|
123
146
|
signing_key:
|
124
147
|
specification_version: 4
|
125
148
|
summary: ruby bindings for LZ4
|