digest-crc 0.6.0.rc1 → 0.6.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/ChangeLog.md +45 -3
- data/gemspec.yml +1 -1
- data/lib/digest/crc16_qt.rb +3 -60
- data/lib/digest/crc32.rb +1 -1
- data/spec/crc16_qt_spec.rb +5 -5
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1fe46270c7eae650508a5502eebb79a4869fbae54d0fbe839821d10875fb0ecf
|
|
4
|
+
data.tar.gz: 4beab2099969546a407771454e5ded1a5490372418b33b078140f8cac82a2c97
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e62799bcab7e38e635d5619beb1ac13c9c4cc5c0017604b5e060672190fc7c5fdc6bfbdc48d164bf191d5906d868f4552a6318930a6fa3d1983cac63acdf8aa5
|
|
7
|
+
data.tar.gz: ff41e5f57d9f9b523105b72f76662b8fac5a1df7485742378bb93ed3e982fb8d69eae14199e7d285e38102d7e3970708b6615919502783f6050278a029666360
|
data/ChangeLog.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
### 0.6.0 / 2020-
|
|
1
|
+
### 0.6.0 / 2020-07-01
|
|
2
2
|
|
|
3
3
|
* Implement _optional_ C extensions for all CRC algorithms, resulting in an
|
|
4
4
|
average performance improvement of ~40x. Note, if for whatever reason the
|
|
@@ -6,9 +6,14 @@
|
|
|
6
6
|
CRC algorithms will be used instead. If the C extensions were successfully
|
|
7
7
|
compiled, then they will be loaded and override the pure-Ruby CRC methods with
|
|
8
8
|
the C equivalents.
|
|
9
|
+
* Alias {Digest::CRC16QT} to {Digest::CRC16X25}, since they are effectively the same (@dearblue).
|
|
10
|
+
* Fix {Digest::CRC32::WIDTH} (@dearblue).
|
|
9
11
|
|
|
10
|
-
####
|
|
12
|
+
#### pure-Ruby (ruby 2.7.1)
|
|
11
13
|
|
|
14
|
+
Loading Digest::CRC classes ...
|
|
15
|
+
Generating 1000 8Kb lengthed strings ...
|
|
16
|
+
Benchmarking Digest::CRC classes ...
|
|
12
17
|
user system total real
|
|
13
18
|
Digest::CRC1#update 0.412953 0.000000 0.412953 ( 0.414688)
|
|
14
19
|
Digest::CRC5#update 1.116375 0.000003 1.116378 ( 1.120741)
|
|
@@ -37,8 +42,45 @@
|
|
|
37
42
|
Digest::CRC64Jones#update 2.678003 0.000000 2.678003 ( 2.691390)
|
|
38
43
|
Digest::CRC64XZ#update 2.671395 0.000000 2.671395 ( 2.682684)
|
|
39
44
|
|
|
40
|
-
####
|
|
45
|
+
#### pure-Ruby (jruby 9.2.11.1)
|
|
41
46
|
|
|
47
|
+
Loading Digest::CRC classes ...
|
|
48
|
+
Generating 1000 8Kb lengthed strings ...
|
|
49
|
+
Benchmarking Digest::CRC classes ...
|
|
50
|
+
user system total real
|
|
51
|
+
Digest::CRC1#update 0.700000 0.070000 0.770000 ( 0.436112)
|
|
52
|
+
Digest::CRC5#update 1.930000 0.050000 1.980000 ( 1.084749)
|
|
53
|
+
Digest::CRC8#update 1.510000 0.060000 1.570000 ( 0.979123)
|
|
54
|
+
Digest::CRC8_1Wire#update 0.730000 0.030000 0.760000 ( 0.761309)
|
|
55
|
+
Digest::CRC15#update 1.760000 0.080000 1.840000 ( 1.061413)
|
|
56
|
+
Digest::CRC16#update 1.560000 0.030000 1.590000 ( 0.951273)
|
|
57
|
+
Digest::CRC16CCITT#update 1.700000 0.010000 1.710000 ( 1.046854)
|
|
58
|
+
Digest::CRC16DNP#update 1.490000 0.000000 1.490000 ( 0.902434)
|
|
59
|
+
Digest::CRC16Genibus#update 1.820000 0.020000 1.840000 ( 1.030269)
|
|
60
|
+
Digest::CRC16Modbus#update 0.740000 0.010000 0.750000 ( 0.738604)
|
|
61
|
+
Digest::CRC16QT#update 7.280000 0.040000 7.320000 ( 6.399987)
|
|
62
|
+
Digest::CRC16USB#update 0.930000 0.000000 0.930000 ( 0.801541)
|
|
63
|
+
Digest::CRC16X25#update 0.870000 0.000000 0.870000 ( 0.805130)
|
|
64
|
+
Digest::CRC16XModem#update 1.320000 0.010000 1.330000 ( 0.968956)
|
|
65
|
+
Digest::CRC16ZModem#update 1.300000 0.010000 1.310000 ( 0.928303)
|
|
66
|
+
Digest::CRC24#update 1.550000 0.020000 1.570000 ( 1.024450)
|
|
67
|
+
Digest::CRC32#update 1.260000 0.000000 1.260000 ( 0.913814)
|
|
68
|
+
Digest::CRC32BZip2#update 1.210000 0.010000 1.220000 ( 0.919086)
|
|
69
|
+
Digest::CRC32c#update 0.770000 0.010000 0.780000 ( 0.761726)
|
|
70
|
+
Digest::CRC32Jam#update 0.930000 0.000000 0.930000 ( 0.800468)
|
|
71
|
+
Digest::CRC32MPEG#update 1.240000 0.010000 1.250000 ( 0.933962)
|
|
72
|
+
Digest::CRC32POSIX#update 1.290000 0.010000 1.300000 ( 0.925254)
|
|
73
|
+
Digest::CRC32XFER#update 1.270000 0.000000 1.270000 ( 0.920521)
|
|
74
|
+
Digest::CRC64#update 3.480000 0.020000 3.500000 ( 2.883794)
|
|
75
|
+
Digest::CRC64Jones#update 2.740000 0.000000 2.740000 ( 2.738251)
|
|
76
|
+
Digest::CRC64XZ#update 2.780000 0.010000 2.790000 ( 2.715833)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
#### C extensions (ruby 2.7.1)
|
|
80
|
+
|
|
81
|
+
Loading Digest::CRC classes ...
|
|
82
|
+
Generating 1000 8Kb lengthed strings ...
|
|
83
|
+
Benchmarking Digest::CRC classes ...
|
|
42
84
|
user system total real
|
|
43
85
|
Digest::CRC1#update 0.407438 0.000000 0.407438 ( 0.410495)
|
|
44
86
|
Digest::CRC5#update 0.022873 0.000000 0.022873 ( 0.023796)
|
data/gemspec.yml
CHANGED
data/lib/digest/crc16_qt.rb
CHANGED
|
@@ -1,67 +1,10 @@
|
|
|
1
|
-
require 'digest/
|
|
1
|
+
require 'digest/crc16_x_25'
|
|
2
2
|
|
|
3
3
|
module Digest
|
|
4
4
|
#
|
|
5
5
|
# Implements the CRC16_CCITT algorithm used in QT algorithms.
|
|
6
6
|
#
|
|
7
|
-
# @
|
|
7
|
+
# @note Is exactly the same as the CRC16 X-25 algorithm.
|
|
8
8
|
#
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
FINAL_XOR = 0xffff
|
|
12
|
-
|
|
13
|
-
#
|
|
14
|
-
# Updates the CRC16 checksum.
|
|
15
|
-
#
|
|
16
|
-
# @param [String] data
|
|
17
|
-
# The data to update the checksum with.
|
|
18
|
-
#
|
|
19
|
-
def update(data)
|
|
20
|
-
data.each_byte do |b|
|
|
21
|
-
b = revert_byte(b)
|
|
22
|
-
@crc = ((@table[((@crc >> 8) ^ b) & 0xff] ^ (@crc << 8)) & 0xffff)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
return self
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
#
|
|
29
|
-
# Calculates the CRC checksum value.
|
|
30
|
-
#
|
|
31
|
-
# @return [Integer]
|
|
32
|
-
#
|
|
33
|
-
def checksum
|
|
34
|
-
crc = super
|
|
35
|
-
crc ^= FINAL_XOR
|
|
36
|
-
crc = revert_bits(crc)
|
|
37
|
-
return crc
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
protected
|
|
41
|
-
|
|
42
|
-
def revert_bits(cc)
|
|
43
|
-
ob = 0
|
|
44
|
-
b = (1 << 15)
|
|
45
|
-
|
|
46
|
-
16.times do |t|
|
|
47
|
-
ob |= (1 << t) if (cc & b) != 0
|
|
48
|
-
b >>= 1
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
return ob
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def revert_byte(cc)
|
|
55
|
-
ob = 0
|
|
56
|
-
b = (1 << 7)
|
|
57
|
-
|
|
58
|
-
8.times do |t|
|
|
59
|
-
ob |= (1 << t) if (cc & b) != 0
|
|
60
|
-
b >>= 1
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
return ob
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
end
|
|
9
|
+
CRC16QT = CRC16X25
|
|
67
10
|
end
|
data/lib/digest/crc32.rb
CHANGED
data/spec/crc16_qt_spec.rb
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
|
-
require 'crc_examples'
|
|
3
2
|
require 'digest/crc16_qt'
|
|
4
3
|
|
|
5
|
-
describe Digest::CRC16QT do
|
|
6
|
-
|
|
7
|
-
let(:expected) { '4b13' }
|
|
4
|
+
describe "Digest::CRC16QT" do
|
|
5
|
+
subject { Digest::CRC16QT }
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
it "should be an alias to Digest::CRC16X25" do
|
|
8
|
+
expect(subject).to be(Digest::CRC16X25)
|
|
9
|
+
end
|
|
10
10
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: digest-crc
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.0
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Postmodern
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-07-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -234,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
234
234
|
- !ruby/object:Gem::Version
|
|
235
235
|
version: '0'
|
|
236
236
|
requirements: []
|
|
237
|
-
rubygems_version: 3.
|
|
237
|
+
rubygems_version: 3.1.2
|
|
238
238
|
signing_key:
|
|
239
239
|
specification_version: 4
|
|
240
240
|
summary: A Cyclic Redundancy Check (CRC) library for Ruby.
|