brotli 0.2.3 → 0.4.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.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +34 -0
- data/.github/workflows/publish.yml +34 -0
- data/Gemfile +6 -3
- data/Rakefile +16 -9
- data/brotli.gemspec +7 -13
- data/ext/brotli/brotli.c +209 -31
- data/ext/brotli/buffer.c +1 -7
- data/ext/brotli/buffer.h +1 -1
- data/ext/brotli/extconf.rb +20 -18
- data/lib/brotli/version.rb +1 -1
- data/test/brotli_test.rb +104 -0
- data/test/brotli_writer_test.rb +36 -0
- data/test/test_helper.rb +8 -0
- data/vendor/brotli/c/common/constants.c +15 -0
- data/vendor/brotli/c/common/constants.h +136 -0
- data/vendor/brotli/c/common/context.c +156 -0
- data/vendor/brotli/c/common/context.h +4 -152
- data/vendor/brotli/c/common/dictionary.bin.br +0 -0
- data/vendor/brotli/c/common/dictionary.c +10 -1
- data/vendor/brotli/c/common/platform.c +22 -0
- data/vendor/brotli/c/common/platform.h +43 -17
- data/vendor/brotli/c/common/transform.c +59 -3
- data/vendor/brotli/c/common/transform.h +5 -0
- data/vendor/brotli/c/common/version.h +2 -2
- data/vendor/brotli/c/dec/bit_reader.c +28 -0
- data/vendor/brotli/c/dec/bit_reader.h +58 -16
- data/vendor/brotli/c/dec/decode.c +353 -251
- data/vendor/brotli/c/dec/huffman.h +6 -12
- data/vendor/brotli/c/dec/prefix.h +0 -18
- data/vendor/brotli/c/dec/state.c +9 -14
- data/vendor/brotli/c/dec/state.h +144 -37
- data/vendor/brotli/c/enc/backward_references.c +8 -7
- data/vendor/brotli/c/enc/backward_references.h +5 -4
- data/vendor/brotli/c/enc/backward_references_hq.c +51 -33
- data/vendor/brotli/c/enc/backward_references_hq.h +11 -8
- data/vendor/brotli/c/enc/backward_references_inc.h +24 -14
- data/vendor/brotli/c/enc/block_splitter.c +3 -3
- data/vendor/brotli/c/enc/block_splitter_inc.h +15 -6
- data/vendor/brotli/c/enc/brotli_bit_stream.c +13 -30
- data/vendor/brotli/c/enc/cluster_inc.h +6 -3
- data/vendor/brotli/c/enc/command.c +28 -0
- data/vendor/brotli/c/enc/command.h +12 -12
- data/vendor/brotli/c/enc/compress_fragment_two_pass.c +1 -1
- data/vendor/brotli/c/enc/dictionary_hash.c +1826 -1100
- data/vendor/brotli/c/enc/dictionary_hash.h +2 -1
- data/vendor/brotli/c/enc/encode.c +104 -39
- data/vendor/brotli/c/enc/encoder_dict.c +3 -2
- data/vendor/brotli/c/enc/encoder_dict.h +3 -1
- data/vendor/brotli/c/enc/entropy_encode.c +2 -0
- data/vendor/brotli/c/enc/entropy_encode.h +2 -2
- data/vendor/brotli/c/enc/fast_log.c +105 -0
- data/vendor/brotli/c/enc/fast_log.h +19 -100
- data/vendor/brotli/c/enc/find_match_length.h +2 -3
- data/vendor/brotli/c/enc/hash.h +80 -90
- data/vendor/brotli/c/enc/hash_composite_inc.h +52 -63
- data/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +88 -49
- data/vendor/brotli/c/enc/hash_longest_match64_inc.h +50 -50
- data/vendor/brotli/c/enc/hash_longest_match_inc.h +53 -50
- data/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +91 -60
- data/vendor/brotli/c/enc/hash_rolling_inc.h +23 -27
- data/vendor/brotli/c/enc/hash_to_binary_tree_inc.h +39 -38
- data/vendor/brotli/c/enc/memory.h +24 -12
- data/vendor/brotli/c/enc/metablock.c +23 -27
- data/vendor/brotli/c/enc/metablock_inc.h +1 -1
- data/vendor/brotli/c/enc/params.h +3 -1
- data/vendor/brotli/c/enc/ringbuffer.h +4 -1
- data/vendor/brotli/c/enc/utf8_util.c +1 -1
- data/vendor/brotli/c/enc/write_bits.h +27 -25
- data/vendor/brotli/c/include/brotli/encode.h +22 -1
- data/vendor/brotli/c/include/brotli/port.h +14 -0
- metadata +17 -97
- data/.travis.yml +0 -31
- data/docs/Brotli.html +0 -485
- data/docs/Brotli/Error.html +0 -124
- data/docs/_index.html +0 -122
- data/docs/class_list.html +0 -51
- data/docs/css/common.css +0 -1
- data/docs/css/full_list.css +0 -58
- data/docs/css/style.css +0 -496
- data/docs/file.README.html +0 -127
- data/docs/file_list.html +0 -56
- data/docs/frames.html +0 -17
- data/docs/index.html +0 -127
- data/docs/js/app.js +0 -292
- data/docs/js/full_list.js +0 -216
- data/docs/js/jquery.js +0 -4
- data/docs/method_list.html +0 -67
- data/docs/top-level-namespace.html +0 -110
- data/spec/brotli_spec.rb +0 -88
- data/spec/inflate_spec.rb +0 -75
- data/spec/spec_helper.rb +0 -4
@@ -71,7 +71,7 @@ static void FN(InitBlockSplitter)(
|
|
71
71
|
*histograms_size = max_num_types;
|
72
72
|
*histograms = BROTLI_ALLOC(m, HistogramType, *histograms_size);
|
73
73
|
self->histograms_ = *histograms;
|
74
|
-
if (BROTLI_IS_OOM(m)) return;
|
74
|
+
if (BROTLI_IS_OOM(m) || BROTLI_IS_NULL(*histograms)) return;
|
75
75
|
/* Clear only current histogram. */
|
76
76
|
FN(HistogramClear)(&self->histograms_[0]);
|
77
77
|
self->last_histogram_ix_[0] = self->last_histogram_ix_[1] = 0;
|
@@ -23,7 +23,8 @@ typedef struct BrotliHasherParams {
|
|
23
23
|
typedef struct BrotliDistanceParams {
|
24
24
|
uint32_t distance_postfix_bits;
|
25
25
|
uint32_t num_direct_distance_codes;
|
26
|
-
uint32_t
|
26
|
+
uint32_t alphabet_size_max;
|
27
|
+
uint32_t alphabet_size_limit;
|
27
28
|
size_t max_distance;
|
28
29
|
} BrotliDistanceParams;
|
29
30
|
|
@@ -33,6 +34,7 @@ typedef struct BrotliEncoderParams {
|
|
33
34
|
int quality;
|
34
35
|
int lgwin;
|
35
36
|
int lgblock;
|
37
|
+
size_t stream_offset;
|
36
38
|
size_t size_hint;
|
37
39
|
BROTLI_BOOL disable_literal_context_modeling;
|
38
40
|
BROTLI_BOOL large_window;
|
@@ -75,7 +75,7 @@ static BROTLI_INLINE void RingBufferInitBuffer(
|
|
75
75
|
uint8_t* new_data = BROTLI_ALLOC(
|
76
76
|
m, uint8_t, 2 + buflen + kSlackForEightByteHashingEverywhere);
|
77
77
|
size_t i;
|
78
|
-
if (BROTLI_IS_OOM(m)) return;
|
78
|
+
if (BROTLI_IS_OOM(m) || BROTLI_IS_NULL(new_data)) return;
|
79
79
|
if (rb->data_) {
|
80
80
|
memcpy(new_data, rb->data_,
|
81
81
|
2 + rb->cur_size_ + kSlackForEightByteHashingEverywhere);
|
@@ -125,6 +125,9 @@ static BROTLI_INLINE void RingBufferWrite(
|
|
125
125
|
later when we copy the last two bytes to the first two positions. */
|
126
126
|
rb->buffer_[rb->size_ - 2] = 0;
|
127
127
|
rb->buffer_[rb->size_ - 1] = 0;
|
128
|
+
/* Initialize tail; might be touched by "best_len++" optimization when
|
129
|
+
ring buffer is "full". */
|
130
|
+
rb->buffer_[rb->size_] = 241;
|
128
131
|
}
|
129
132
|
{
|
130
133
|
const size_t masked_pos = rb->pos_ & rb->mask_;
|
@@ -77,7 +77,7 @@ BROTLI_BOOL BrotliIsMostlyUTF8(
|
|
77
77
|
i += bytes_read;
|
78
78
|
if (symbol < 0x110000) size_utf8 += bytes_read;
|
79
79
|
}
|
80
|
-
return TO_BROTLI_BOOL(size_utf8 > min_fraction * (double)length);
|
80
|
+
return TO_BROTLI_BOOL((double)size_utf8 > min_fraction * (double)length);
|
81
81
|
}
|
82
82
|
|
83
83
|
#if defined(__cplusplus) || defined(c_plusplus)
|
@@ -16,8 +16,6 @@
|
|
16
16
|
extern "C" {
|
17
17
|
#endif
|
18
18
|
|
19
|
-
/*#define BIT_WRITER_DEBUG */
|
20
|
-
|
21
19
|
/* This function writes bits into bytes in increasing addresses, and within
|
22
20
|
a byte least-significant-bit first.
|
23
21
|
|
@@ -28,7 +26,7 @@ extern "C" {
|
|
28
26
|
|
29
27
|
0000 0RRR 0000 0000 0000 0000
|
30
28
|
|
31
|
-
Now, we could write 5 or less bits in MSB by just
|
29
|
+
Now, we could write 5 or less bits in MSB by just shifting by 3
|
32
30
|
and OR'ing to BYTE-0.
|
33
31
|
|
34
32
|
For n bits, we take the last 5 bits, OR that with high bits in BYTE-0,
|
@@ -37,37 +35,41 @@ static BROTLI_INLINE void BrotliWriteBits(size_t n_bits,
|
|
37
35
|
uint64_t bits,
|
38
36
|
size_t* BROTLI_RESTRICT pos,
|
39
37
|
uint8_t* BROTLI_RESTRICT array) {
|
38
|
+
BROTLI_LOG(("WriteBits %2d 0x%08x%08x %10d\n", (int)n_bits,
|
39
|
+
(uint32_t)(bits >> 32), (uint32_t)(bits & 0xFFFFFFFF),
|
40
|
+
(int)*pos));
|
41
|
+
BROTLI_DCHECK((bits >> n_bits) == 0);
|
42
|
+
BROTLI_DCHECK(n_bits <= 56);
|
40
43
|
#if defined(BROTLI_LITTLE_ENDIAN)
|
41
44
|
/* This branch of the code can write up to 56 bits at a time,
|
42
45
|
7 bits are lost by being perhaps already in *p and at least
|
43
46
|
1 bit is needed to initialize the bit-stream ahead (i.e. if 7
|
44
47
|
bits are in *p and we write 57 bits, then the next write will
|
45
48
|
access a byte that was never initialized). */
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
v |= bits << (*pos & 7);
|
54
|
-
BROTLI_UNALIGNED_STORE64LE(p, v); /* Set some bits. */
|
55
|
-
*pos += n_bits;
|
49
|
+
{
|
50
|
+
uint8_t* p = &array[*pos >> 3];
|
51
|
+
uint64_t v = (uint64_t)(*p); /* Zero-extend 8 to 64 bits. */
|
52
|
+
v |= bits << (*pos & 7);
|
53
|
+
BROTLI_UNALIGNED_STORE64LE(p, v); /* Set some bits. */
|
54
|
+
*pos += n_bits;
|
55
|
+
}
|
56
56
|
#else
|
57
57
|
/* implicit & 0xFF is assumed for uint8_t arithmetics */
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
58
|
+
{
|
59
|
+
uint8_t* array_pos = &array[*pos >> 3];
|
60
|
+
const size_t bits_reserved_in_first_byte = (*pos & 7);
|
61
|
+
size_t bits_left_to_write;
|
62
|
+
bits <<= bits_reserved_in_first_byte;
|
63
|
+
*array_pos++ |= (uint8_t)bits;
|
64
|
+
for (bits_left_to_write = n_bits + bits_reserved_in_first_byte;
|
65
|
+
bits_left_to_write >= 9;
|
66
|
+
bits_left_to_write -= 8) {
|
67
|
+
bits >>= 8;
|
68
|
+
*array_pos++ = (uint8_t)bits;
|
69
|
+
}
|
70
|
+
*array_pos = 0;
|
71
|
+
*pos += n_bits;
|
68
72
|
}
|
69
|
-
*array_pos = 0;
|
70
|
-
*pos += n_bits;
|
71
73
|
#endif
|
72
74
|
}
|
73
75
|
|
@@ -201,7 +201,23 @@ typedef enum BrotliEncoderParameter {
|
|
201
201
|
*
|
202
202
|
* Range is from 0 to (15 << NPOSTFIX) in steps of (1 << NPOSTFIX).
|
203
203
|
*/
|
204
|
-
BROTLI_PARAM_NDIRECT = 8
|
204
|
+
BROTLI_PARAM_NDIRECT = 8,
|
205
|
+
/**
|
206
|
+
* Number of bytes of input stream already processed by a different instance.
|
207
|
+
*
|
208
|
+
* @note It is important to configure all the encoder instances with same
|
209
|
+
* parameters (except this one) in order to allow all the encoded parts
|
210
|
+
* obey the same restrictions implied by header.
|
211
|
+
*
|
212
|
+
* If offset is not 0, then stream header is omitted.
|
213
|
+
* In any case output start is byte aligned, so for proper streams stitching
|
214
|
+
* "predecessor" stream must be flushed.
|
215
|
+
*
|
216
|
+
* Range is not artificially limited, but all the values greater or equal to
|
217
|
+
* maximal window size have the same effect. Values greater than 2**30 are not
|
218
|
+
* allowed.
|
219
|
+
*/
|
220
|
+
BROTLI_PARAM_STREAM_OFFSET = 9
|
205
221
|
} BrotliEncoderParameter;
|
206
222
|
|
207
223
|
/**
|
@@ -274,6 +290,11 @@ BROTLI_ENC_API size_t BrotliEncoderMaxCompressedSize(size_t input_size);
|
|
274
290
|
* @note If ::BrotliEncoderMaxCompressedSize(@p input_size) returns non-zero
|
275
291
|
* value, then output is guaranteed to be no longer than that.
|
276
292
|
*
|
293
|
+
* @note If @p lgwin is greater than ::BROTLI_MAX_WINDOW_BITS then resulting
|
294
|
+
* stream might be incompatible with RFC 7932; to decode such streams,
|
295
|
+
* decoder should be configured with
|
296
|
+
* ::BROTLI_DECODER_PARAM_LARGE_WINDOW = @c 1
|
297
|
+
*
|
277
298
|
* @param quality quality parameter value, e.g. ::BROTLI_DEFAULT_QUALITY
|
278
299
|
* @param lgwin lgwin parameter value, e.g. ::BROTLI_DEFAULT_WINDOW
|
279
300
|
* @param mode mode parameter value, e.g. ::BROTLI_DEFAULT_MODE
|
@@ -218,6 +218,20 @@
|
|
218
218
|
BROTLI_GNUC_VERSION_CHECK(major, minor, patch)
|
219
219
|
#endif
|
220
220
|
|
221
|
+
#if defined(__has_feature)
|
222
|
+
#define BROTLI_HAS_FEATURE(feature) __has_feature(feature)
|
223
|
+
#else
|
224
|
+
#define BROTLI_HAS_FEATURE(feature) (0)
|
225
|
+
#endif
|
226
|
+
|
227
|
+
#if defined(ADDRESS_SANITIZER) || BROTLI_HAS_FEATURE(address_sanitizer) || \
|
228
|
+
defined(THREAD_SANITIZER) || BROTLI_HAS_FEATURE(thread_sanitizer) || \
|
229
|
+
defined(MEMORY_SANITIZER) || BROTLI_HAS_FEATURE(memory_sanitizer)
|
230
|
+
#define BROTLI_SANITIZED 1
|
231
|
+
#else
|
232
|
+
#define BROTLI_SANITIZED 0
|
233
|
+
#endif
|
234
|
+
|
221
235
|
#if defined(_WIN32) || defined(__CYGWIN__)
|
222
236
|
#define BROTLI_PUBLIC
|
223
237
|
#elif BROTLI_GNUC_VERSION_CHECK(3, 3, 0) || \
|
metadata
CHANGED
@@ -1,85 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brotli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- miyucy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake-compiler
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rantly
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
11
|
+
date: 2020-12-27 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
83
13
|
description: Brotli compressor/decompressor
|
84
14
|
email:
|
85
15
|
- fistfvck@gmail.com
|
@@ -88,10 +18,11 @@ extensions:
|
|
88
18
|
- ext/brotli/extconf.rb
|
89
19
|
extra_rdoc_files: []
|
90
20
|
files:
|
21
|
+
- ".github/workflows/main.yml"
|
22
|
+
- ".github/workflows/publish.yml"
|
91
23
|
- ".gitignore"
|
92
24
|
- ".gitmodules"
|
93
25
|
- ".rspec"
|
94
|
-
- ".travis.yml"
|
95
26
|
- Gemfile
|
96
27
|
- LICENSE.txt
|
97
28
|
- README.md
|
@@ -100,22 +31,6 @@ files:
|
|
100
31
|
- bin/console
|
101
32
|
- bin/setup
|
102
33
|
- brotli.gemspec
|
103
|
-
- docs/Brotli.html
|
104
|
-
- docs/Brotli/Error.html
|
105
|
-
- docs/_index.html
|
106
|
-
- docs/class_list.html
|
107
|
-
- docs/css/common.css
|
108
|
-
- docs/css/full_list.css
|
109
|
-
- docs/css/style.css
|
110
|
-
- docs/file.README.html
|
111
|
-
- docs/file_list.html
|
112
|
-
- docs/frames.html
|
113
|
-
- docs/index.html
|
114
|
-
- docs/js/app.js
|
115
|
-
- docs/js/full_list.js
|
116
|
-
- docs/js/jquery.js
|
117
|
-
- docs/method_list.html
|
118
|
-
- docs/top-level-namespace.html
|
119
34
|
- ext/brotli/brotli.c
|
120
35
|
- ext/brotli/brotli.h
|
121
36
|
- ext/brotli/buffer.c
|
@@ -124,16 +39,19 @@ files:
|
|
124
39
|
- lib/brotli.rb
|
125
40
|
- lib/brotli/version.rb
|
126
41
|
- smoke.sh
|
127
|
-
-
|
128
|
-
-
|
129
|
-
-
|
42
|
+
- test/brotli_test.rb
|
43
|
+
- test/brotli_writer_test.rb
|
44
|
+
- test/test_helper.rb
|
130
45
|
- vendor/brotli/LICENSE
|
46
|
+
- vendor/brotli/c/common/constants.c
|
131
47
|
- vendor/brotli/c/common/constants.h
|
48
|
+
- vendor/brotli/c/common/context.c
|
132
49
|
- vendor/brotli/c/common/context.h
|
133
50
|
- vendor/brotli/c/common/dictionary.bin
|
134
51
|
- vendor/brotli/c/common/dictionary.bin.br
|
135
52
|
- vendor/brotli/c/common/dictionary.c
|
136
53
|
- vendor/brotli/c/common/dictionary.h
|
54
|
+
- vendor/brotli/c/common/platform.c
|
137
55
|
- vendor/brotli/c/common/platform.h
|
138
56
|
- vendor/brotli/c/common/transform.c
|
139
57
|
- vendor/brotli/c/common/transform.h
|
@@ -163,6 +81,7 @@ files:
|
|
163
81
|
- vendor/brotli/c/enc/cluster.c
|
164
82
|
- vendor/brotli/c/enc/cluster.h
|
165
83
|
- vendor/brotli/c/enc/cluster_inc.h
|
84
|
+
- vendor/brotli/c/enc/command.c
|
166
85
|
- vendor/brotli/c/enc/command.h
|
167
86
|
- vendor/brotli/c/enc/compress_fragment.c
|
168
87
|
- vendor/brotli/c/enc/compress_fragment.h
|
@@ -176,6 +95,7 @@ files:
|
|
176
95
|
- vendor/brotli/c/enc/entropy_encode.c
|
177
96
|
- vendor/brotli/c/enc/entropy_encode.h
|
178
97
|
- vendor/brotli/c/enc/entropy_encode_static.h
|
98
|
+
- vendor/brotli/c/enc/fast_log.c
|
179
99
|
- vendor/brotli/c/enc/fast_log.h
|
180
100
|
- vendor/brotli/c/enc/find_match_length.h
|
181
101
|
- vendor/brotli/c/enc/hash.h
|
@@ -229,11 +149,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
149
|
- !ruby/object:Gem::Version
|
230
150
|
version: '0'
|
231
151
|
requirements: []
|
232
|
-
rubygems_version: 3.
|
152
|
+
rubygems_version: 3.1.4
|
233
153
|
signing_key:
|
234
154
|
specification_version: 4
|
235
155
|
summary: Brotli compressor/decompressor
|
236
156
|
test_files:
|
237
|
-
-
|
238
|
-
-
|
239
|
-
-
|
157
|
+
- test/brotli_test.rb
|
158
|
+
- test/brotli_writer_test.rb
|
159
|
+
- test/test_helper.rb
|
data/.travis.yml
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
sudo: false
|
3
|
-
cache:
|
4
|
-
bundler: true
|
5
|
-
directories:
|
6
|
-
- "$HOME/.ccache"
|
7
|
-
rvm:
|
8
|
-
- 1.9
|
9
|
-
- 2.2
|
10
|
-
- 2.3
|
11
|
-
- 2.4
|
12
|
-
- 2.5
|
13
|
-
- 2.6
|
14
|
-
- truffleruby
|
15
|
-
env:
|
16
|
-
global:
|
17
|
-
- RANTLY_COUNT=10000
|
18
|
-
- PATH="/usr/lib/ccache:$PATH"
|
19
|
-
before_install: ./bin/before_install.sh
|
20
|
-
deploy:
|
21
|
-
provider: rubygems
|
22
|
-
api_key:
|
23
|
-
secure: pHMMdI6cthdpQ8XHK4LPMRJK9yndRNRprSpttbK+M2Cq6O8ABIx9YsaiR4U6+kkS4RXwWnnJ6qkglQVLsCd1x+elJA0V8MxhOdzKyQgNC5wbIhtIdEZ9cN0c/hG8e9pKa35K9q9ETJ4M8QWNPxkJTRKw1yM8rIMbzf0oy0Btrcz+pJG8C9cMQwfV3QGJFPdO4Hcb5v2gK9rMDU5v3OD9CgbQqaZN3tbR2G1WTiAkFk86RlwPTyaurIRiUV/AQedPSPHHJ5SYbThjcu5iy1OtlFHkVTy/5QNm8ooJkX3pAVhnexTL/iufP0YI9xmYPq4k4RxK1ywSATbvz13JKyD94Sdlhpblz4kJaA4Fg3td8qQtZnFEICBuiW1yelWwVXbyb+zjeL8K4EizoqZV2WwKq2GR3fmyAgFHWiVXRbu0aNjJi23rpNkAGif41vAbsskgBgOiKYsW5/ZOE2opL7lH5l8GGjiYQ8cOKbiNKpUSFaCfwOwgZt4QBTNsN+GuasLNZkm3Dt4Wj7KhFJ+HtAfTnSpomsSQ5/wGwMUchQKo9mfSE0lmKglFyvRV23+WnEX0ZC2jUIJmaxGn1PajDL5tjnZOd5mZAehrc74r84o5olM39y7DynU6FP9QaVBaXF/vue4kIbL0ePSxxwMIYErOh0pOWbWx7ipMfDn+1jfsmvA=
|
24
|
-
gem: brotli
|
25
|
-
on:
|
26
|
-
tags: true
|
27
|
-
repo: miyucy/brotli
|
28
|
-
script: bundle exec rake && ./smoke.sh
|
29
|
-
matrix:
|
30
|
-
allow_failures:
|
31
|
-
- rvm: truffleruby
|
data/docs/Brotli.html
DELETED
@@ -1,485 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<meta charset="utf-8">
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
-
<title>
|
7
|
-
Module: Brotli
|
8
|
-
|
9
|
-
— Documentation by YARD 0.9.16
|
10
|
-
|
11
|
-
</title>
|
12
|
-
|
13
|
-
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
14
|
-
|
15
|
-
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
16
|
-
|
17
|
-
<script type="text/javascript" charset="utf-8">
|
18
|
-
pathId = "Brotli";
|
19
|
-
relpath = '';
|
20
|
-
</script>
|
21
|
-
|
22
|
-
|
23
|
-
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
24
|
-
|
25
|
-
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
26
|
-
|
27
|
-
|
28
|
-
</head>
|
29
|
-
<body>
|
30
|
-
<div class="nav_wrap">
|
31
|
-
<iframe id="nav" src="class_list.html?1"></iframe>
|
32
|
-
<div id="resizer"></div>
|
33
|
-
</div>
|
34
|
-
|
35
|
-
<div id="main" tabindex="-1">
|
36
|
-
<div id="header">
|
37
|
-
<div id="menu">
|
38
|
-
|
39
|
-
<a href="_index.html">Index (B)</a> »
|
40
|
-
|
41
|
-
|
42
|
-
<span class="title">Brotli</span>
|
43
|
-
|
44
|
-
</div>
|
45
|
-
|
46
|
-
<div id="search">
|
47
|
-
|
48
|
-
<a class="full_list_link" id="class_list_link"
|
49
|
-
href="class_list.html">
|
50
|
-
|
51
|
-
<svg width="24" height="24">
|
52
|
-
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
53
|
-
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
54
|
-
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
55
|
-
</svg>
|
56
|
-
</a>
|
57
|
-
|
58
|
-
</div>
|
59
|
-
<div class="clear"></div>
|
60
|
-
</div>
|
61
|
-
|
62
|
-
<div id="content"><h1>Module: Brotli
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
</h1>
|
67
|
-
<div class="box_info">
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
<dl>
|
80
|
-
<dt>Defined in:</dt>
|
81
|
-
<dd>lib/brotli/version.rb<span class="defines">,<br />
|
82
|
-
ext/brotli/brotli.c</span>
|
83
|
-
</dd>
|
84
|
-
</dl>
|
85
|
-
|
86
|
-
</div>
|
87
|
-
|
88
|
-
<h2>Defined Under Namespace</h2>
|
89
|
-
<p class="children">
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Brotli/Error.html" title="Brotli::Error (class)">Error</a></span>
|
95
|
-
|
96
|
-
|
97
|
-
</p>
|
98
|
-
|
99
|
-
|
100
|
-
<h2>
|
101
|
-
Constant Summary
|
102
|
-
<small><a href="#" class="constants_summary_toggle">collapse</a></small>
|
103
|
-
</h2>
|
104
|
-
|
105
|
-
<dl class="constants">
|
106
|
-
|
107
|
-
<dt id="VERSION-constant" class="">VERSION =
|
108
|
-
|
109
|
-
</dt>
|
110
|
-
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>0.2.0</span><span class='tstring_end'>'</span></span></pre></dd>
|
111
|
-
|
112
|
-
</dl>
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
<h2>
|
123
|
-
Class Method Summary
|
124
|
-
<small><a href="#" class="summary_toggle">collapse</a></small>
|
125
|
-
</h2>
|
126
|
-
|
127
|
-
<ul class="summary">
|
128
|
-
|
129
|
-
<li class="public ">
|
130
|
-
<span class="summary_signature">
|
131
|
-
|
132
|
-
<a href="#deflate-class_method" title="deflate (class method)">.<strong>deflate</strong>(str, opts = nil) ⇒ String </a>
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
</span>
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
<span class="summary_desc"><div class='inline'>
|
147
|
-
<p>Deflated string.</p>
|
148
|
-
</div></span>
|
149
|
-
|
150
|
-
</li>
|
151
|
-
|
152
|
-
|
153
|
-
<li class="public ">
|
154
|
-
<span class="summary_signature">
|
155
|
-
|
156
|
-
<a href="#inflate-class_method" title="inflate (class method)">.<strong>inflate</strong>(str) ⇒ Object </a>
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
</span>
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
<span class="summary_desc"><div class='inline'></div></span>
|
171
|
-
|
172
|
-
</li>
|
173
|
-
|
174
|
-
|
175
|
-
</ul>
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
<div id="class_method_details" class="method_details_list">
|
181
|
-
<h2>Class Method Details</h2>
|
182
|
-
|
183
|
-
|
184
|
-
<div class="method_details first">
|
185
|
-
<h3 class="signature first" id="deflate-class_method">
|
186
|
-
|
187
|
-
.<strong>deflate</strong>(str, opts = nil) ⇒ <tt>String</tt>
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
</h3><div class="docstring">
|
194
|
-
<div class="discussion">
|
195
|
-
|
196
|
-
<p>Returns Deflated string</p>
|
197
|
-
|
198
|
-
|
199
|
-
</div>
|
200
|
-
</div>
|
201
|
-
<div class="tags">
|
202
|
-
|
203
|
-
<div class="docstring">
|
204
|
-
<div class="discussion">
|
205
|
-
|
206
|
-
|
207
|
-
</div>
|
208
|
-
</div>
|
209
|
-
<div class="tags">
|
210
|
-
|
211
|
-
<p class="tag_title">Returns:</p>
|
212
|
-
<ul class="return">
|
213
|
-
|
214
|
-
<li>
|
215
|
-
|
216
|
-
|
217
|
-
<span class='type'>(<tt>String</tt>)</span>
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
</li>
|
222
|
-
|
223
|
-
</ul>
|
224
|
-
|
225
|
-
</div>
|
226
|
-
<p class="tag_title">Parameters:</p>
|
227
|
-
<ul class="param">
|
228
|
-
|
229
|
-
<li>
|
230
|
-
|
231
|
-
<span class='name'>str</span>
|
232
|
-
|
233
|
-
|
234
|
-
<span class='type'>(<tt>String</tt>)</span>
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
—
|
239
|
-
<div class='inline'>
|
240
|
-
<p>string</p>
|
241
|
-
</div>
|
242
|
-
|
243
|
-
</li>
|
244
|
-
|
245
|
-
<li>
|
246
|
-
|
247
|
-
<span class='name'>opts</span>
|
248
|
-
|
249
|
-
|
250
|
-
<span class='type'>(<tt>Hash</tt>)</span>
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
—
|
255
|
-
<div class='inline'>
|
256
|
-
<p>options</p>
|
257
|
-
</div>
|
258
|
-
|
259
|
-
</li>
|
260
|
-
|
261
|
-
</ul>
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
<p class="tag_title">Returns:</p>
|
268
|
-
<ul class="return">
|
269
|
-
|
270
|
-
<li>
|
271
|
-
|
272
|
-
|
273
|
-
<span class='type'>(<tt>String</tt>)</span>
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
—
|
278
|
-
<div class='inline'>
|
279
|
-
<p>Deflated string</p>
|
280
|
-
</div>
|
281
|
-
|
282
|
-
</li>
|
283
|
-
|
284
|
-
</ul>
|
285
|
-
|
286
|
-
</div><table class="source_code">
|
287
|
-
<tr>
|
288
|
-
<td>
|
289
|
-
<pre class="lines">
|
290
|
-
|
291
|
-
|
292
|
-
264
|
293
|
-
265
|
294
|
-
266
|
295
|
-
267
|
296
|
-
268
|
297
|
-
269
|
298
|
-
270
|
299
|
-
271
|
300
|
-
272
|
301
|
-
273
|
302
|
-
274
|
303
|
-
275
|
304
|
-
276
|
305
|
-
277
|
306
|
-
278
|
307
|
-
279
|
308
|
-
280
|
309
|
-
281
|
310
|
-
282
|
311
|
-
283
|
312
|
-
284
|
313
|
-
285
|
314
|
-
286
|
315
|
-
287
|
316
|
-
288
|
317
|
-
289
|
318
|
-
290
|
319
|
-
291
|
320
|
-
292
|
321
|
-
293
|
322
|
-
294</pre>
|
323
|
-
</td>
|
324
|
-
<td>
|
325
|
-
<pre class="code"><span class="info file"># File 'ext/brotli/brotli.c', line 264</span>
|
326
|
-
|
327
|
-
static VALUE
|
328
|
-
brotli_deflate(int argc, VALUE *argv, VALUE self)
|
329
|
-
{
|
330
|
-
VALUE str = Qnil, opts = Qnil, value = Qnil;
|
331
|
-
brotli_deflate_args_t args;
|
332
|
-
|
333
|
-
rb_scan_args(argc, argv, "11", &str, &opts);
|
334
|
-
StringValue(str);
|
335
|
-
|
336
|
-
args.str = (uint8_t*)RSTRING_PTR(str);
|
337
|
-
args.len = (size_t)RSTRING_LEN(str);
|
338
|
-
args.s = brotli_deflate_parse_options(
|
339
|
-
BrotliEncoderCreateInstance(brotli_alloc, brotli_free, NULL),
|
340
|
-
opts);
|
341
|
-
args.buffer = create_buffer(BUFSIZ);
|
342
|
-
args.finished = BROTLI_FALSE;
|
343
|
-
|
344
|
-
#ifdef HAVE_RUBY_THREAD_H
|
345
|
-
rb_thread_call_without_gvl(brotli_deflate_no_gvl, (void *)&args, NULL, NULL);
|
346
|
-
#else
|
347
|
-
brotli_deflate_no_gvl((void *)&args);
|
348
|
-
#endif
|
349
|
-
if (args.finished == BROTLI_TRUE) {
|
350
|
-
value = rb_str_new(args.buffer->ptr, args.buffer->used);
|
351
|
-
}
|
352
|
-
|
353
|
-
delete_buffer(args.buffer);
|
354
|
-
BrotliEncoderDestroyInstance(args.s);
|
355
|
-
|
356
|
-
return value;
|
357
|
-
}</pre>
|
358
|
-
</td>
|
359
|
-
</tr>
|
360
|
-
</table>
|
361
|
-
</div>
|
362
|
-
|
363
|
-
<div class="method_details ">
|
364
|
-
<h3 class="signature " id="inflate-class_method">
|
365
|
-
|
366
|
-
.<strong>inflate</strong>(str) ⇒ <tt>Object</tt>
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
</h3><table class="source_code">
|
373
|
-
<tr>
|
374
|
-
<td>
|
375
|
-
<pre class="lines">
|
376
|
-
|
377
|
-
|
378
|
-
72
|
379
|
-
73
|
380
|
-
74
|
381
|
-
75
|
382
|
-
76
|
383
|
-
77
|
384
|
-
78
|
385
|
-
79
|
386
|
-
80
|
387
|
-
81
|
388
|
-
82
|
389
|
-
83
|
390
|
-
84
|
391
|
-
85
|
392
|
-
86
|
393
|
-
87
|
394
|
-
88
|
395
|
-
89
|
396
|
-
90
|
397
|
-
91
|
398
|
-
92
|
399
|
-
93
|
400
|
-
94
|
401
|
-
95
|
402
|
-
96
|
403
|
-
97
|
404
|
-
98
|
405
|
-
99
|
406
|
-
100
|
407
|
-
101
|
408
|
-
102
|
409
|
-
103
|
410
|
-
104
|
411
|
-
105
|
412
|
-
106
|
413
|
-
107
|
414
|
-
108
|
415
|
-
109
|
416
|
-
110
|
417
|
-
111
|
418
|
-
112
|
419
|
-
113
|
420
|
-
114</pre>
|
421
|
-
</td>
|
422
|
-
<td>
|
423
|
-
<pre class="code"><span class="info file"># File 'ext/brotli/brotli.c', line 72</span>
|
424
|
-
|
425
|
-
static VALUE
|
426
|
-
brotli_inflate(VALUE self, VALUE str)
|
427
|
-
{
|
428
|
-
VALUE value = Qnil;
|
429
|
-
brotli_inflate_args_t args;
|
430
|
-
|
431
|
-
StringValue(str);
|
432
|
-
|
433
|
-
args.str = (uint8_t*)RSTRING_PTR(str);
|
434
|
-
args.len = (size_t)RSTRING_LEN(str);
|
435
|
-
args.buffer = create_buffer(BUFSIZ);
|
436
|
-
args.s = BrotliDecoderCreateInstance(brotli_alloc,
|
437
|
-
brotli_free,
|
438
|
-
NULL);
|
439
|
-
args.r = BROTLI_DECODER_RESULT_ERROR;
|
440
|
-
|
441
|
-
#ifdef HAVE_RUBY_THREAD_H
|
442
|
-
rb_thread_call_without_gvl(brotli_inflate_no_gvl, (void *)&args, NULL, NULL);
|
443
|
-
#else
|
444
|
-
brotli_inflate_no_gvl((void *)&args);
|
445
|
-
#endif
|
446
|
-
if (args.r == BROTLI_DECODER_RESULT_SUCCESS) {
|
447
|
-
value = rb_str_new(args.buffer->ptr, args.buffer->used);
|
448
|
-
delete_buffer(args.buffer);
|
449
|
-
BrotliDecoderDestroyInstance(args.s);
|
450
|
-
} else if (args.r == BROTLI_DECODER_RESULT_ERROR) {
|
451
|
-
const char * error = BrotliDecoderErrorString(BrotliDecoderGetErrorCode(args.s));
|
452
|
-
delete_buffer(args.buffer);
|
453
|
-
BrotliDecoderDestroyInstance(args.s);
|
454
|
-
rb_raise(rb_eBrotli, "%s", error);
|
455
|
-
} else if (args.r == BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT) {
|
456
|
-
delete_buffer(args.buffer);
|
457
|
-
BrotliDecoderDestroyInstance(args.s);
|
458
|
-
rb_raise(rb_eBrotli, "Needs more input");
|
459
|
-
} else if (args.r == BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT) {
|
460
|
-
/* never reach to this block */
|
461
|
-
delete_buffer(args.buffer);
|
462
|
-
BrotliDecoderDestroyInstance(args.s);
|
463
|
-
rb_raise(rb_eBrotli, "Needs more output");
|
464
|
-
}
|
465
|
-
|
466
|
-
return value;
|
467
|
-
}</pre>
|
468
|
-
</td>
|
469
|
-
</tr>
|
470
|
-
</table>
|
471
|
-
</div>
|
472
|
-
|
473
|
-
</div>
|
474
|
-
|
475
|
-
</div>
|
476
|
-
|
477
|
-
<div id="footer">
|
478
|
-
Generated on Fri Aug 17 23:21:32 2018 by
|
479
|
-
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
480
|
-
0.9.16 (ruby-2.5.1).
|
481
|
-
</div>
|
482
|
-
|
483
|
-
</div>
|
484
|
-
</body>
|
485
|
-
</html>
|