mmh3 1.1.0 → 1.2.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/build.yml +6 -7
- data/.github/workflows/coverage.yml +3 -5
- data/.rubocop.yml +50 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +7 -1
- data/LICENSE.txt +1 -1
- data/Rakefile +9 -3
- data/lib/mmh3/version.rb +1 -1
- data/lib/mmh3.rb +45 -23
- data/mmh3.gemspec +3 -0
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70a69ac210acc55f49b85764ddacced777cd5b14c515c587b22e77a08479356e
|
4
|
+
data.tar.gz: 320c6db6188375dd16f065164691af0c254bcdc01968a5dd7318b087c6bdc896
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b533e1bf9b5bb655eef411e0b4f5e6cf184dfab4c9053513771941aa851f2abc768c2d81c6c97ebd37d2af7232d8f091cb9511fb8e6f2b23759727e944872555
|
7
|
+
data.tar.gz: dbf836b9f3e3f7cef52aa4aa414f58f960592533f40d6bbf885250ee2ce36d12bd68dd43b2c3b0417d3fbc76c5222be94dd9367b26c419d0f768fb140cbbd2c5
|
data/.github/workflows/build.yml
CHANGED
@@ -6,16 +6,15 @@ jobs:
|
|
6
6
|
build:
|
7
7
|
runs-on: ubuntu-latest
|
8
8
|
strategy:
|
9
|
+
fail-fast: false
|
9
10
|
matrix:
|
10
|
-
ruby: [ '2.
|
11
|
+
ruby: [ '2.7', '3.0', '3.1' ]
|
11
12
|
steps:
|
12
|
-
- uses: actions/checkout@
|
13
|
+
- uses: actions/checkout@v3
|
13
14
|
- name: Set up Ruby ${{ matrix.ruby }}
|
14
|
-
uses:
|
15
|
+
uses: ruby/setup-ruby@v1
|
15
16
|
with:
|
16
17
|
ruby-version: ${{ matrix.ruby }}
|
18
|
+
bundler-cache: true
|
17
19
|
- name: Build and test with Rake
|
18
|
-
run:
|
19
|
-
gem install bundler
|
20
|
-
bundle install --jobs 4 --retry 3
|
21
|
-
bundle exec rake
|
20
|
+
run: bundle exec rake
|
@@ -12,14 +12,12 @@ jobs:
|
|
12
12
|
steps:
|
13
13
|
- uses: actions/checkout@v2
|
14
14
|
- name: Set up Ruby 2.7
|
15
|
-
uses:
|
15
|
+
uses: ruby/setup-ruby@v1
|
16
16
|
with:
|
17
17
|
ruby-version: '2.7'
|
18
|
+
bundler-cache: true
|
18
19
|
- name: Build and test with Rake
|
19
|
-
run:
|
20
|
-
gem install bundler
|
21
|
-
bundle install --jobs 4 --retry 3
|
22
|
-
bundle exec rake
|
20
|
+
run: bundle exec rake
|
23
21
|
- name: Coveralls GitHub Action
|
24
22
|
uses: coverallsapp/github-action@v1.1.2
|
25
23
|
with:
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require:
|
2
|
+
- rubocop-performance
|
3
|
+
- rubocop-rake
|
4
|
+
- rubocop-rspec
|
5
|
+
|
6
|
+
AllCops:
|
7
|
+
NewCops: enable
|
8
|
+
DisplayCopNames: true
|
9
|
+
DisplayStyleGuide: true
|
10
|
+
Exclude:
|
11
|
+
- 'tmp/**/*'
|
12
|
+
- 'vendor/**/*'
|
13
|
+
- 'Steepfile'
|
14
|
+
|
15
|
+
Gemspec/RequiredRubyVersion:
|
16
|
+
Enabled: false
|
17
|
+
|
18
|
+
Layout/LineLength:
|
19
|
+
IgnoredPatterns: ['(\A|\s)#']
|
20
|
+
|
21
|
+
Metrics/BlockLength:
|
22
|
+
Exclude:
|
23
|
+
- 'spec/**/*'
|
24
|
+
|
25
|
+
Metrics/ParameterLists:
|
26
|
+
Max: 8
|
27
|
+
|
28
|
+
Naming/AccessorMethodName:
|
29
|
+
Enabled: false
|
30
|
+
|
31
|
+
Naming/MethodParameterName:
|
32
|
+
Enabled: false
|
33
|
+
|
34
|
+
RSpec/ExampleLength:
|
35
|
+
Max: 16
|
36
|
+
|
37
|
+
RSpec/MultipleMemoizedHelpers:
|
38
|
+
Max: 8
|
39
|
+
|
40
|
+
RSpec/NamedSubject:
|
41
|
+
Enabled: false
|
42
|
+
|
43
|
+
RSpec/NestedGroups:
|
44
|
+
Max: 4
|
45
|
+
|
46
|
+
Style/NumericLiterals:
|
47
|
+
Enabled: false
|
48
|
+
|
49
|
+
Style/NumericPredicate:
|
50
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -1,11 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source 'https://rubygems.org'
|
2
4
|
|
3
5
|
# Specify your gem's dependencies in mmh3.gemspec
|
4
6
|
gemspec
|
5
7
|
|
6
8
|
gem 'rake', '~> 12.0'
|
9
|
+
gem 'rbs', '~> 1.2'
|
7
10
|
gem 'rspec', '~> 3.0'
|
11
|
+
gem 'rubocop', '~> 1.24'
|
12
|
+
gem 'rubocop-performance', '~> 1.14'
|
13
|
+
gem 'rubocop-rake', '~> 0.6.0'
|
14
|
+
gem 'rubocop-rspec', '~> 2.11'
|
8
15
|
gem 'simplecov', '~> 0.21'
|
9
16
|
gem 'simplecov-lcov', '~> 0.8'
|
10
|
-
gem 'rbs', '~> 1.2'
|
11
17
|
gem 'steep', '~> 0.44'
|
data/LICENSE.txt
CHANGED
data/Rakefile
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler/gem_tasks'
|
4
|
+
require 'rspec/core/rake_task'
|
3
5
|
|
4
6
|
RSpec::Core::RakeTask.new(:spec)
|
5
7
|
|
6
|
-
|
8
|
+
require 'rubocop/rake_task'
|
9
|
+
|
10
|
+
RuboCop::RakeTask.new
|
11
|
+
|
12
|
+
task default: %i[rubocop spec]
|
data/lib/mmh3/version.rb
CHANGED
data/lib/mmh3.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
require 'mmh3/version'
|
4
4
|
|
5
|
+
# rubocop:disable Metrics/AbcSize, Metrics/BlockLength, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/ModuleLength, Metrics/PerceivedComplexity
|
6
|
+
|
5
7
|
# This module consists module functions that implement MurmurHash3.
|
6
8
|
# MurmurHash3 was written by Austin Appleby, and is placed in the public domain.
|
7
9
|
# The author hereby disclaims copyright to this source code.
|
@@ -29,16 +31,18 @@ module Mmh3
|
|
29
31
|
k = block32(keyb, bstart, 0)
|
30
32
|
h ^= scramble32(k)
|
31
33
|
h = rotl32(h, 13)
|
32
|
-
h = (h * 5 + 0xe6546b64) & 0xFFFFFFFF
|
34
|
+
h = ((h * 5) + 0xe6546b64) & 0xFFFFFFFF
|
33
35
|
end
|
34
36
|
|
35
37
|
tail_id = n_blocks * 4
|
36
38
|
tail_sz = key_len & 3
|
37
39
|
|
38
40
|
k = 0
|
41
|
+
# rubocop:disable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
39
42
|
k ^= keyb[tail_id + 2] << 16 if tail_sz >= 3
|
40
43
|
k ^= keyb[tail_id + 1] << 8 if tail_sz >= 2
|
41
44
|
k ^= keyb[tail_id + 0] if tail_sz >= 1
|
45
|
+
# rubocop:enable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
42
46
|
|
43
47
|
h ^= scramble32(k) if tail_sz.positive?
|
44
48
|
|
@@ -92,7 +96,7 @@ module Mmh3
|
|
92
96
|
|
93
97
|
h1 = rotl64(h1, 27)
|
94
98
|
h1 = (h1 + h2) & 0xFFFFFFFFFFFFFFFF
|
95
|
-
h1 = (h1 * 5 + 0x52dce729) & 0xFFFFFFFFFFFFFFFF
|
99
|
+
h1 = ((h1 * 5) + 0x52dce729) & 0xFFFFFFFFFFFFFFFF
|
96
100
|
|
97
101
|
k2 = (k2 * c2) & 0xFFFFFFFFFFFFFFFF
|
98
102
|
k2 = rotl64(k2, 33)
|
@@ -101,13 +105,14 @@ module Mmh3
|
|
101
105
|
|
102
106
|
h2 = rotl64(h2, 31)
|
103
107
|
h2 = (h2 + h1) & 0xFFFFFFFFFFFFFFFF
|
104
|
-
h2 = (h2 * 5 + 0x38495ab5) & 0xFFFFFFFFFFFFFFFF
|
108
|
+
h2 = ((h2 * 5) + 0x38495ab5) & 0xFFFFFFFFFFFFFFFF
|
105
109
|
end
|
106
110
|
|
107
111
|
tail_id = n_blocks * 16
|
108
112
|
tail_sz = key_len & 15
|
109
113
|
|
110
114
|
k2 = 0
|
115
|
+
# rubocop:disable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
111
116
|
k2 ^= keyb[tail_id + 14] << 48 if tail_sz >= 15
|
112
117
|
k2 ^= keyb[tail_id + 13] << 40 if tail_sz >= 14
|
113
118
|
k2 ^= keyb[tail_id + 12] << 32 if tail_sz >= 13
|
@@ -115,6 +120,7 @@ module Mmh3
|
|
115
120
|
k2 ^= keyb[tail_id + 10] << 16 if tail_sz >= 11
|
116
121
|
k2 ^= keyb[tail_id + 9] << 8 if tail_sz >= 10
|
117
122
|
k2 ^= keyb[tail_id + 8] if tail_sz >= 9
|
123
|
+
# rubocop:enable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
118
124
|
|
119
125
|
if tail_sz > 8
|
120
126
|
k2 = (k2 * c2) & 0xFFFFFFFFFFFFFFFF
|
@@ -124,6 +130,7 @@ module Mmh3
|
|
124
130
|
end
|
125
131
|
|
126
132
|
k1 = 0
|
133
|
+
# rubocop:disable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
127
134
|
k1 ^= keyb[tail_id + 7] << 56 if tail_sz >= 8
|
128
135
|
k1 ^= keyb[tail_id + 6] << 48 if tail_sz >= 7
|
129
136
|
k1 ^= keyb[tail_id + 5] << 40 if tail_sz >= 6
|
@@ -132,6 +139,7 @@ module Mmh3
|
|
132
139
|
k1 ^= keyb[tail_id + 2] << 16 if tail_sz >= 3
|
133
140
|
k1 ^= keyb[tail_id + 1] << 8 if tail_sz >= 2
|
134
141
|
k1 ^= keyb[tail_id] if tail_sz >= 1
|
142
|
+
# rubocop:enable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
135
143
|
|
136
144
|
if tail_sz > 0
|
137
145
|
k1 = (k1 * c1) & 0xFFFFFFFFFFFFFFFF
|
@@ -152,7 +160,7 @@ module Mmh3
|
|
152
160
|
h1 = (h1 + h2) & 0xFFFFFFFFFFFFFFFF
|
153
161
|
h2 = (h1 + h2) & 0xFFFFFFFFFFFFFFFF
|
154
162
|
|
155
|
-
h2 << 64 | h1
|
163
|
+
(h2 << 64) | h1
|
156
164
|
end
|
157
165
|
|
158
166
|
def hash128_x86(key, seed = 0)
|
@@ -182,7 +190,7 @@ module Mmh3
|
|
182
190
|
|
183
191
|
h1 = rotl32(h1, 19)
|
184
192
|
h1 = (h1 + h2) & 0xFFFFFFFF
|
185
|
-
h1 = (h1 * 5 + 0x561ccd1b) & 0xFFFFFFFF
|
193
|
+
h1 = ((h1 * 5) + 0x561ccd1b) & 0xFFFFFFFF
|
186
194
|
|
187
195
|
k2 = (k2 * c2) & 0xFFFFFFFF
|
188
196
|
k2 = rotl32(k2, 16)
|
@@ -191,7 +199,7 @@ module Mmh3
|
|
191
199
|
|
192
200
|
h2 = rotl32(h2, 17)
|
193
201
|
h2 = (h2 + h3) & 0xFFFFFFFF
|
194
|
-
h2 = (h2 * 5 + 0x0bcaa747) & 0xFFFFFFFF
|
202
|
+
h2 = ((h2 * 5) + 0x0bcaa747) & 0xFFFFFFFF
|
195
203
|
|
196
204
|
k3 = (k3 * c3) & 0xFFFFFFFF
|
197
205
|
k3 = rotl32(k3, 17)
|
@@ -200,7 +208,7 @@ module Mmh3
|
|
200
208
|
|
201
209
|
h3 = rotl32(h3, 15)
|
202
210
|
h3 = (h3 + h4) & 0xFFFFFFFF
|
203
|
-
h3 = (h3 * 5 + 0x96cd1c35) & 0xFFFFFFFF
|
211
|
+
h3 = ((h3 * 5) + 0x96cd1c35) & 0xFFFFFFFF
|
204
212
|
|
205
213
|
k4 = (k4 * c4) & 0xFFFFFFFF
|
206
214
|
k4 = rotl32(k4, 18)
|
@@ -209,16 +217,18 @@ module Mmh3
|
|
209
217
|
|
210
218
|
h4 = rotl32(h4, 13)
|
211
219
|
h4 = (h4 + h1) & 0xFFFFFFFF
|
212
|
-
h4 = (h4 * 5 + 0x32ac3b17) & 0xFFFFFFFF
|
220
|
+
h4 = ((h4 * 5) + 0x32ac3b17) & 0xFFFFFFFF
|
213
221
|
end
|
214
222
|
|
215
223
|
tail_id = n_blocks * 16
|
216
224
|
tail_sz = key_len & 15
|
217
225
|
|
218
226
|
k4 = 0
|
227
|
+
# rubocop:disable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
219
228
|
k4 ^= keyb[tail_id + 14] << 16 if tail_sz >= 15
|
220
229
|
k4 ^= keyb[tail_id + 13] << 8 if tail_sz >= 14
|
221
230
|
k4 ^= keyb[tail_id + 12] if tail_sz >= 13
|
231
|
+
# rubocop:enable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
222
232
|
|
223
233
|
if tail_sz > 12
|
224
234
|
k4 = (k4 * c4) & 0xFFFFFFFF
|
@@ -228,10 +238,12 @@ module Mmh3
|
|
228
238
|
end
|
229
239
|
|
230
240
|
k3 = 0
|
241
|
+
# rubocop:disable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
231
242
|
k3 ^= keyb[tail_id + 11] << 24 if tail_sz >= 12
|
232
243
|
k3 ^= keyb[tail_id + 10] << 16 if tail_sz >= 11
|
233
244
|
k3 ^= keyb[tail_id + 9] << 8 if tail_sz >= 10
|
234
245
|
k3 ^= keyb[tail_id + 8] if tail_sz >= 9
|
246
|
+
# rubocop:enable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
235
247
|
|
236
248
|
if tail_sz > 8
|
237
249
|
k3 = (k3 * c3) & 0xFFFFFFFF
|
@@ -241,10 +253,12 @@ module Mmh3
|
|
241
253
|
end
|
242
254
|
|
243
255
|
k2 = 0
|
256
|
+
# rubocop:disable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
244
257
|
k2 ^= keyb[tail_id + 7] << 24 if tail_sz >= 8
|
245
258
|
k2 ^= keyb[tail_id + 6] << 16 if tail_sz >= 7
|
246
259
|
k2 ^= keyb[tail_id + 5] << 8 if tail_sz >= 6
|
247
260
|
k2 ^= keyb[tail_id + 4] if tail_sz >= 5
|
261
|
+
# rubocop:enable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
248
262
|
|
249
263
|
if tail_sz > 4
|
250
264
|
k2 = (k2 * c2) & 0xFFFFFFFF
|
@@ -254,10 +268,12 @@ module Mmh3
|
|
254
268
|
end
|
255
269
|
|
256
270
|
k1 = 0
|
271
|
+
# rubocop:disable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
257
272
|
k1 ^= keyb[tail_id + 3] << 24 if tail_sz >= 4
|
258
273
|
k1 ^= keyb[tail_id + 2] << 16 if tail_sz >= 3
|
259
274
|
k1 ^= keyb[tail_id + 1] << 8 if tail_sz >= 2
|
260
275
|
k1 ^= keyb[tail_id] if tail_sz >= 1
|
276
|
+
# rubocop:enable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
261
277
|
|
262
278
|
if tail_sz > 0
|
263
279
|
k1 = (k1 * c1) & 0xFFFFFFFF
|
@@ -290,33 +306,37 @@ module Mmh3
|
|
290
306
|
h3 = (h1 + h3) & 0xFFFFFFFF
|
291
307
|
h4 = (h1 + h4) & 0xFFFFFFFF
|
292
308
|
|
293
|
-
h4 << 96 | h3 << 64 | h2 << 32 | h1
|
309
|
+
(h4 << 96) | (h3 << 64) | (h2 << 32) | h1
|
294
310
|
end
|
295
311
|
|
296
312
|
def block32(kb, bstart, offset)
|
297
|
-
|
298
|
-
kb[bstart + offset +
|
299
|
-
kb[bstart + offset +
|
300
|
-
kb[bstart + offset]
|
313
|
+
# rubocop:disable Layout/ExtraSpacing, Layout/SpaceAroundOperators, Layout/MultilineOperationIndentation
|
314
|
+
(kb[bstart + offset + 3] << 24) |
|
315
|
+
(kb[bstart + offset + 2] << 16) |
|
316
|
+
(kb[bstart + offset + 1] << 8) |
|
317
|
+
kb[bstart + offset]
|
318
|
+
# rubocop:enable Layout/ExtraSpacing, Layout/SpaceAroundOperators, Layout/MultilineOperationIndentation
|
301
319
|
end
|
302
320
|
|
303
321
|
def block64(kb, bstart, offset)
|
304
|
-
|
305
|
-
kb[2 * bstart + (
|
306
|
-
kb[2 * bstart + (
|
307
|
-
kb[2 * bstart + (
|
308
|
-
kb[2 * bstart + (
|
309
|
-
kb[2 * bstart + (
|
310
|
-
kb[2 * bstart + (
|
311
|
-
kb[2 * bstart + offset]
|
322
|
+
# rubocop:disable Layout/ExtraSpacing, Layout/SpaceAroundOperators, Layout/MultilineOperationIndentation
|
323
|
+
(kb[(2 * bstart) + (7 + offset)] << 56) |
|
324
|
+
(kb[(2 * bstart) + (6 + offset)] << 48) |
|
325
|
+
(kb[(2 * bstart) + (5 + offset)] << 40) |
|
326
|
+
(kb[(2 * bstart) + (4 + offset)] << 32) |
|
327
|
+
(kb[(2 * bstart) + (3 + offset)] << 24) |
|
328
|
+
(kb[(2 * bstart) + (2 + offset)] << 16) |
|
329
|
+
(kb[(2 * bstart) + (1 + offset)] << 8) |
|
330
|
+
kb[(2 * bstart) + offset]
|
331
|
+
# rubocop:enable Layout/ExtraSpacing, Layout/SpaceAroundOperators, Layout/MultilineOperationIndentation
|
312
332
|
end
|
313
333
|
|
314
334
|
def rotl32(x, r)
|
315
|
-
(x << r | x >> (32 - r)) & 0xFFFFFFFF
|
335
|
+
((x << r) | (x >> (32 - r))) & 0xFFFFFFFF
|
316
336
|
end
|
317
337
|
|
318
338
|
def rotl64(x, r)
|
319
|
-
(x << r | x >> (64 - r)) & 0xFFFFFFFFFFFFFFFF
|
339
|
+
((x << r) | (x >> (64 - r))) & 0xFFFFFFFFFFFFFFFF
|
320
340
|
end
|
321
341
|
|
322
342
|
def scramble32(k)
|
@@ -343,3 +363,5 @@ module Mmh3
|
|
343
363
|
|
344
364
|
private_class_method :hash128_x64, :hash128_x86, :block32, :block64, :rotl32, :rotl64, :scramble32, :fmix32, :fmix64
|
345
365
|
end
|
366
|
+
|
367
|
+
# rubocop:enable Metrics/AbcSize, Metrics/BlockLength, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/ModuleLength, Metrics/PerceivedComplexity
|
data/mmh3.gemspec
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'lib/mmh3/version'
|
2
4
|
|
3
5
|
Gem::Specification.new do |spec|
|
@@ -24,4 +26,5 @@ Gem::Specification.new do |spec|
|
|
24
26
|
spec.bindir = 'exe'
|
25
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
26
28
|
spec.require_paths = ['lib']
|
29
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
27
30
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mmh3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yoshoku
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A pure Ruby implementation of MurmurHash3
|
14
14
|
email:
|
@@ -22,6 +22,7 @@ files:
|
|
22
22
|
- ".github/workflows/coverage.yml"
|
23
23
|
- ".gitignore"
|
24
24
|
- ".rspec"
|
25
|
+
- ".rubocop.yml"
|
25
26
|
- CHANGELOG.md
|
26
27
|
- Gemfile
|
27
28
|
- LICENSE.txt
|
@@ -40,7 +41,8 @@ metadata:
|
|
40
41
|
source_code_uri: https://github.com/yoshoku/mmh3
|
41
42
|
changelog_uri: https://github.com/yoshoku/mmh3/blob/main/CHANGELOG.md
|
42
43
|
documentation_uri: https://rubydoc.info/gems/mmh3
|
43
|
-
|
44
|
+
rubygems_mfa_required: 'true'
|
45
|
+
post_install_message:
|
44
46
|
rdoc_options: []
|
45
47
|
require_paths:
|
46
48
|
- lib
|
@@ -55,8 +57,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
55
57
|
- !ruby/object:Gem::Version
|
56
58
|
version: '0'
|
57
59
|
requirements: []
|
58
|
-
rubygems_version: 3.
|
59
|
-
signing_key:
|
60
|
+
rubygems_version: 3.2.33
|
61
|
+
signing_key:
|
60
62
|
specification_version: 4
|
61
63
|
summary: A pure Ruby implementation of MurmurHash3
|
62
64
|
test_files: []
|