fast_osc 1.0.1 → 1.1.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/README.md +38 -96
- data/docs/what-about-truffle-ruby.md +102 -0
- data/ext/fast_osc/fast_osc_wrapper.c +7 -2
- data/lib/fast_osc/pure_ruby_fallback_decode.rb +1 -1
- data/lib/fast_osc/version.rb +1 -1
- data/test/benchmark_test.rb +1 -0
- data/test/fast_osc_test.rb +30 -28
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d28e104c919d500f56f8cc1ff18eaedfc3324c07127f72c5af5d4d662a453f55
|
4
|
+
data.tar.gz: fd255b333c9d2e482f08eab6dac3b7bab74fae4732e454b9d22b1f658a3f7dff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb5faf369b9b7859d9adda5f11811290c64f1014ffcb9cd2a9a81a5f9141d31b0c94e1055137bf3a730dc80499396624f06515e0c76f750e0fb68dc1fd08110b
|
7
|
+
data.tar.gz: 15333641c23c7095fe8453e4c78301f72e2e71a307304b8a756d760fcdc151a2f88d6c77322eb9bda9157bde31bd83a1899786963d1632b6642a314db0077ad1
|
data/README.md
CHANGED
@@ -18,6 +18,40 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
$ gem install fast_osc
|
20
20
|
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
Everything (single messages and bundles) can be parsed with a single method -
|
24
|
+
`FastOsc.decode`. This outputs an array of bundles, with each bundle containing
|
25
|
+
a timestamp and an array of messages. Each message contains a path and,
|
26
|
+
optionally, some arguments.
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
# encode an OSC message with the established Ruby OSC libary
|
30
|
+
@msg = OSC::Message.new("/testpath", ["some", "args", 1, 2.0]).encode
|
31
|
+
@encoded_msg = @msg1.encode
|
32
|
+
|
33
|
+
FastOsc.decode(@encoded_msg0).each do |bundle|
|
34
|
+
_timestamp, osc_msgs = bundle
|
35
|
+
|
36
|
+
osc_msgs.each do |(path, args)|
|
37
|
+
puts @path # "/testpath"
|
38
|
+
puts args # ["some", "args", 1, 2.0]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
```
|
44
|
+
>> FastOsc.encode_single_message("/foo", ["baz", 1, 2.0])
|
45
|
+
=> "/foo\x00\x00\x00\x00,sif\x00\x00\x00\x00baz\x00\x00\x00\x00\x01@\x00\x00\x00"
|
46
|
+
>> res = _
|
47
|
+
>> FastOsc.decode_no_bundles(res)
|
48
|
+
=> ["/foo", ["baz", 1, 2.0]]
|
49
|
+
>> FastOsc.encode_single_bundle(Time.now.to_i, "/foo", ["baz", 1, 2.0])
|
50
|
+
=> "#bundle\x00\x00\x00\x00\x00W*1\x7F\x00\x00\x00\x1C/foo\x00\x00\x00\x00,sif\x00\x00\x00\x00baz\x00\x00\x00\x00\x01@\x00\x00\x00"
|
51
|
+
```
|
52
|
+
|
53
|
+
A timestamp of `nil` is a special case meaning "immediately".
|
54
|
+
|
21
55
|
## Is it fast?
|
22
56
|
|
23
57
|
Let's see...
|
@@ -31,6 +65,7 @@ Key:
|
|
31
65
|
### Encoding Benchmark
|
32
66
|
|
33
67
|
```
|
68
|
+
$ WITH_BENCHMARKS=1 rake test
|
34
69
|
Warming up --------------------------------------
|
35
70
|
fast_osc 64.995k i/100ms
|
36
71
|
samsosc 23.371k i/100ms
|
@@ -44,6 +79,7 @@ Calculating -------------------------------------
|
|
44
79
|
### Decoding Bencmark
|
45
80
|
|
46
81
|
```
|
82
|
+
$ WITH_BENCHMARKS=1 rake test
|
47
83
|
Warming up --------------------------------------
|
48
84
|
fast_osc 102.344k i/100ms
|
49
85
|
samsosc 20.770k i/100ms
|
@@ -54,102 +90,7 @@ Calculating -------------------------------------
|
|
54
90
|
osc-ruby 34.266k (±13.3%) i/s - 169.830k in 5.048509s
|
55
91
|
```
|
56
92
|
|
57
|
-
Benchmarks are now part of this repo - run `rake test` to see the results for yourself.
|
58
|
-
|
59
|
-
## What about Truffle Ruby?
|
60
|
-
|
61
|
-
> A high performance implementation of the Ruby programming language. Built on GraalVM by Oracle Labs.
|
62
|
-
|
63
|
-
Just for fun, I re-ran the benchmarks using TruffleRuby. First some install steps:
|
64
|
-
|
65
|
-
```
|
66
|
-
git clone this repo
|
67
|
-
bundle install
|
68
|
-
export PATH="/usr/local/opt/llvm@4/bin:$PATH"
|
69
|
-
rake clean && rake compile
|
70
|
-
```
|
71
|
-
|
72
|
-
then the test:
|
73
|
-
|
74
|
-
```
|
75
|
-
$ rake test
|
76
|
-
ENCODING TEST
|
77
|
-
Warming up --------------------------------------
|
78
|
-
fast_osc 3.000 i/100ms
|
79
|
-
samsosc 28.219k i/100ms
|
80
|
-
osc-ruby 234.000 i/100ms
|
81
|
-
Calculating -------------------------------------
|
82
|
-
fast_osc 33.294 (±45.1%) i/s - 129.000 in 5.295649s
|
83
|
-
samsosc 1.369M (±33.5%) i/s - 3.556M in 5.010343s
|
84
|
-
osc-ruby 274.170k (±20.2%) i/s - 1.064M in 4.971832s
|
85
|
-
DECODING TEST
|
86
|
-
Warming up --------------------------------------
|
87
|
-
fast_osc 9.000 i/100ms
|
88
|
-
samsosc 6.087k i/100ms
|
89
|
-
osc-ruby 418.000 i/100ms
|
90
|
-
Calculating -------------------------------------
|
91
|
-
fast_osc 71.034 (±45.0%) i/s - 261.000 in 5.015393s
|
92
|
-
samsosc 114.443k (±70.2%) i/s - 261.741k in 5.283892s
|
93
|
-
osc-ruby 84.236k (±34.7%) i/s - 237.424k in 5.317738s
|
94
|
-
|
95
|
-
# update - retested using rc5
|
96
|
-
ENCODING TEST
|
97
|
-
Warming up --------------------------------------
|
98
|
-
fast_osc 106.000 i/100ms
|
99
|
-
samsosc 999.000 i/100ms
|
100
|
-
osc-ruby 159.000 i/100ms
|
101
|
-
Calculating -------------------------------------
|
102
|
-
fast_osc 24.507k (±28.6%) i/s - 83.316k in 4.984544s
|
103
|
-
samsosc 1.494M (±22.4%) i/s - 2.785M in 4.988822s
|
104
|
-
osc-ruby 265.322k (±26.5%) i/s - 597.522k in 5.014127s
|
105
|
-
DECODING TEST
|
106
|
-
Warming up --------------------------------------
|
107
|
-
fast_osc 173.000 i/100ms
|
108
|
-
samsosc 454.000 i/100ms
|
109
|
-
osc-ruby 208.000 i/100ms
|
110
|
-
Calculating -------------------------------------
|
111
|
-
fast_osc 73.712k (±66.4%) i/s - 163.831k in 5.049410s
|
112
|
-
samsosc 325.920k (±33.7%) i/s - 875.766k in 4.989279s
|
113
|
-
osc-ruby 63.624k (±52.3%) i/s - 129.792k in 5.005088s
|
114
|
-
Run options: --seed 56032
|
115
|
-
```
|
116
|
-
|
117
|
-
### The Good
|
118
|
-
|
119
|
-
The encoding benchmark - the optimised pure Ruby version is nearly as fast as
|
120
|
-
the C extension!
|
121
|
-
|
122
|
-
```
|
123
|
-
# C ext in MRI
|
124
|
-
fast_osc 797.673k (±15.0%) i/s - 3.900M in 5.043770s
|
125
|
-
# Pure Ruby in Truffle rc3
|
126
|
-
samsosc 1.369M (±33.5%) i/s - 3.556M in 5.010343s
|
127
|
-
# Pure Ruby in Truffle rc5
|
128
|
-
samsosc 1.494M (±22.4%) i/s - 2.785M in 4.988822s
|
129
|
-
```
|
130
|
-
|
131
|
-
### The Bad
|
132
|
-
|
133
|
-
Decoding was generally slower, although the (non optimised) osc gem seemed to
|
134
|
-
prefer TruffleRuby, running around 40% faster.
|
135
|
-
|
136
|
-
~Also the performance of the C extension in TruffleRuby was very, very poor but
|
137
|
-
this may be due to not warming up enough.~ update - this appears to be better
|
138
|
-
in rc5.
|
139
|
-
|
140
|
-
## Usage
|
141
|
-
|
142
|
-
```
|
143
|
-
>> FastOsc.encode_single_message("/foo", ["baz", 1, 2.0])
|
144
|
-
=> "/foo\x00\x00\x00\x00,sif\x00\x00\x00\x00baz\x00\x00\x00\x00\x01@\x00\x00\x00"
|
145
|
-
>> res = _
|
146
|
-
>> FastOsc.decode_single_message(res)
|
147
|
-
=> ["/foo", ["baz", 1, 2.0]]
|
148
|
-
>> FastOsc.encode_single_bundle(Time.now.to_i, "/foo", ["baz", 1, 2.0])
|
149
|
-
=> "#bundle\x00\x00\x00\x00\x00W*1\x7F\x00\x00\x00\x1C/foo\x00\x00\x00\x00,sif\x00\x00\x00\x00baz\x00\x00\x00\x00\x01@\x00\x00\x00"
|
150
|
-
```
|
151
|
-
|
152
|
-
See the test suite for additional methods regarding bundles with timestamps. Bundles are only supported with a single message at present. A timestamp of `nil` is a special case meaning "immediately".
|
93
|
+
Benchmarks are now part of this repo - run `WITH_BENCHMARKS=1 rake test` to see the results for yourself.
|
153
94
|
|
154
95
|
## Running the test suite
|
155
96
|
|
@@ -160,6 +101,7 @@ $ rake clean && rake clobber && rake compile && rake test
|
|
160
101
|
|
161
102
|
## Still todo
|
162
103
|
|
104
|
+
- [ ] Make a pure ruby fallback available
|
163
105
|
- [x] Implement more types
|
164
106
|
- [x] Bring benchmarks into the repo
|
165
107
|
- [ ] Work out cross compilation story for easier packaging
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# What about Truffle Ruby?
|
2
|
+
|
3
|
+
> A high performance implementation of the Ruby programming language. Built on GraalVM by Oracle Labs.
|
4
|
+
|
5
|
+
Just for fun, I re-ran the benchmarks using TruffleRuby. First some install steps:
|
6
|
+
|
7
|
+
```
|
8
|
+
git clone this repo
|
9
|
+
bundle install
|
10
|
+
export PATH="/usr/local/opt/llvm@4/bin:$PATH"
|
11
|
+
rake clean && rake compile
|
12
|
+
export WITH_BENCHMARKS=1
|
13
|
+
```
|
14
|
+
|
15
|
+
then the test:
|
16
|
+
|
17
|
+
```
|
18
|
+
$ rake test
|
19
|
+
ENCODING TEST
|
20
|
+
Warming up --------------------------------------
|
21
|
+
fast_osc 3.000 i/100ms
|
22
|
+
samsosc 28.219k i/100ms
|
23
|
+
osc-ruby 234.000 i/100ms
|
24
|
+
Calculating -------------------------------------
|
25
|
+
fast_osc 33.294 (±45.1%) i/s - 129.000 in 5.295649s
|
26
|
+
samsosc 1.369M (±33.5%) i/s - 3.556M in 5.010343s
|
27
|
+
osc-ruby 274.170k (±20.2%) i/s - 1.064M in 4.971832s
|
28
|
+
DECODING TEST
|
29
|
+
Warming up --------------------------------------
|
30
|
+
fast_osc 9.000 i/100ms
|
31
|
+
samsosc 6.087k i/100ms
|
32
|
+
osc-ruby 418.000 i/100ms
|
33
|
+
Calculating -------------------------------------
|
34
|
+
fast_osc 71.034 (±45.0%) i/s - 261.000 in 5.015393s
|
35
|
+
samsosc 114.443k (±70.2%) i/s - 261.741k in 5.283892s
|
36
|
+
osc-ruby 84.236k (±34.7%) i/s - 237.424k in 5.317738s
|
37
|
+
|
38
|
+
# update - retested using rc5
|
39
|
+
ENCODING TEST
|
40
|
+
Warming up --------------------------------------
|
41
|
+
fast_osc 106.000 i/100ms
|
42
|
+
samsosc 999.000 i/100ms
|
43
|
+
osc-ruby 159.000 i/100ms
|
44
|
+
Calculating -------------------------------------
|
45
|
+
fast_osc 24.507k (±28.6%) i/s - 83.316k in 4.984544s
|
46
|
+
samsosc 1.494M (±22.4%) i/s - 2.785M in 4.988822s
|
47
|
+
osc-ruby 265.322k (±26.5%) i/s - 597.522k in 5.014127s
|
48
|
+
DECODING TEST
|
49
|
+
Warming up --------------------------------------
|
50
|
+
fast_osc 173.000 i/100ms
|
51
|
+
samsosc 454.000 i/100ms
|
52
|
+
osc-ruby 208.000 i/100ms
|
53
|
+
Calculating -------------------------------------
|
54
|
+
fast_osc 73.712k (±66.4%) i/s - 163.831k in 5.049410s
|
55
|
+
samsosc 325.920k (±33.7%) i/s - 875.766k in 4.989279s
|
56
|
+
osc-ruby 63.624k (±52.3%) i/s - 129.792k in 5.005088s
|
57
|
+
Run options: --seed 56032
|
58
|
+
|
59
|
+
# update - retested using 19.0.1
|
60
|
+
ENCODING TEST
|
61
|
+
Warming up --------------------------------------
|
62
|
+
fast_osc 210.000 i/100ms
|
63
|
+
samsosc 12.833k i/100ms
|
64
|
+
osc-ruby 262.000 i/100ms
|
65
|
+
Calculating -------------------------------------
|
66
|
+
fast_osc 150.306k (±38.0%) i/s - 411.600k in 4.904832s
|
67
|
+
samsosc 1.393M (±22.7%) i/s - 5.300M in 4.995566s
|
68
|
+
osc-ruby 273.289k (±19.4%) i/s - 714.474k in 4.988380s
|
69
|
+
DECODING TEST
|
70
|
+
Warming up --------------------------------------
|
71
|
+
fast_osc 507.000 i/100ms
|
72
|
+
samsosc 871.000 i/100ms
|
73
|
+
osc-ruby 329.000 i/100ms
|
74
|
+
Calculating -------------------------------------
|
75
|
+
fast_osc 577.429k (±34.2%) i/s - 539.448k in 5.028383s
|
76
|
+
samsosc 779.126k (±14.0%) i/s - 2.360M in 4.989644s
|
77
|
+
osc-ruby 173.848k (±39.8%) i/s - 334.593k in 4.994280s
|
78
|
+
Run options: --seed 47839
|
79
|
+
```
|
80
|
+
|
81
|
+
### The Good
|
82
|
+
|
83
|
+
The encoding benchmark - the optimised pure Ruby version is nearly as fast as
|
84
|
+
the C extension!
|
85
|
+
|
86
|
+
```
|
87
|
+
# C ext in MRI
|
88
|
+
fast_osc 797.673k (±15.0%) i/s - 3.900M in 5.043770s
|
89
|
+
# Pure Ruby in Truffle rc3
|
90
|
+
samsosc 1.369M (±33.5%) i/s - 3.556M in 5.010343s
|
91
|
+
# Pure Ruby in Truffle rc5
|
92
|
+
samsosc 1.494M (±22.4%) i/s - 2.785M in 4.988822s
|
93
|
+
```
|
94
|
+
|
95
|
+
### The Bad
|
96
|
+
|
97
|
+
Decoding was generally slower, although the (non optimised) osc gem seemed to
|
98
|
+
prefer TruffleRuby, running around 40% faster.
|
99
|
+
|
100
|
+
~Also the performance of the C extension in TruffleRuby was very, very poor but
|
101
|
+
this may be due to not warming up enough.~ update - this appears to be better
|
102
|
+
in rc5.
|
@@ -96,9 +96,14 @@ VALUE method_fast_osc_decode(VALUE self, VALUE msg) {
|
|
96
96
|
// If we get != Qnil, then there were no bundles, and we need to add the element
|
97
97
|
VALUE element = method_fast_osc_decode_do(self, msg, output_ary);
|
98
98
|
if (element != Qnil){
|
99
|
+
// format [[timestamp, [[ ... msg ...]]]]
|
100
|
+
// enclosing arrays match output shape of decode_do
|
101
|
+
VALUE msgs_ary = rb_ary_new();
|
99
102
|
VALUE element_ary = rb_ary_new();
|
100
|
-
|
101
|
-
rb_ary_push(element_ary,
|
103
|
+
// A timestamp of `nil` is a special case meaning "immediately".
|
104
|
+
rb_ary_push(element_ary, Qnil);
|
105
|
+
rb_ary_push(msgs_ary, element);
|
106
|
+
rb_ary_push(element_ary, msgs_ary);
|
102
107
|
rb_ary_push(output_ary, element_ary);
|
103
108
|
}
|
104
109
|
return output_ary;
|
@@ -127,7 +127,7 @@ end
|
|
127
127
|
# Allow for loading above method in benmarks without clobbering c-ext
|
128
128
|
if ENV['FAST_OSC_USE_FALLBACK'] == "true"
|
129
129
|
module FastOsc
|
130
|
-
def
|
130
|
+
def decode_no_bundles(m)
|
131
131
|
SonicPi::OSC::OscEncode.new.decode_single_message(m)
|
132
132
|
end
|
133
133
|
end
|
data/lib/fast_osc/version.rb
CHANGED
data/test/benchmark_test.rb
CHANGED
data/test/fast_osc_test.rb
CHANGED
@@ -33,7 +33,6 @@ class FastOscTest < Minitest::Test
|
|
33
33
|
|
34
34
|
@bundle3 = OSC::Bundle.new(@timestamp3, @msg4, @bundle2, @msg3, @msg2)
|
35
35
|
@encoded_bundle3 = @bundle3.encode
|
36
|
-
|
37
36
|
end
|
38
37
|
|
39
38
|
def test_that_it_has_a_version_number
|
@@ -46,16 +45,15 @@ class FastOscTest < Minitest::Test
|
|
46
45
|
assert_equal msg, @encoded_msg0
|
47
46
|
end
|
48
47
|
|
49
|
-
|
50
48
|
def test_that_it_decodes_a_single_message
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
49
|
+
FastOsc.decode(@encoded_msg0).each do |msg|
|
50
|
+
_timestamp, osc_msgs = msg
|
51
|
+
|
52
|
+
osc_msgs.each do |(path, args)|
|
53
|
+
assert_equal @path, path
|
54
|
+
assert_equal args, []
|
55
|
+
end
|
56
|
+
end
|
59
57
|
end
|
60
58
|
|
61
59
|
def test_that_it_encodes_a_single_message_with_args
|
@@ -65,21 +63,14 @@ class FastOscTest < Minitest::Test
|
|
65
63
|
end
|
66
64
|
|
67
65
|
def test_that_it_decodes_a_single_message_with_args
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_that_it_decodes_a_single_message_with_args_knowing_there_are_no_bundles_using_the_decode_function
|
79
|
-
_timestamp, (path, args) = FastOsc.decode(@encoded_msg1)[0]
|
80
|
-
|
81
|
-
assert_equal path, @path
|
82
|
-
assert_equal args, @args
|
66
|
+
FastOsc.decode(@encoded_msg1).each do |msg|
|
67
|
+
_timestamp, osc_msgs = msg
|
68
|
+
path, args = osc_msgs[0]
|
69
|
+
|
70
|
+
assert_equal path, @path
|
71
|
+
assert_equal args, @args
|
72
|
+
assert_equal osc_msgs.length, 1
|
73
|
+
end
|
83
74
|
end
|
84
75
|
|
85
76
|
def test_that_it_decodes_a_single_message_with_args_knowing_there_are_no_bundles_using_the_decode_no_bundles_function
|
@@ -119,11 +110,11 @@ class FastOscTest < Minitest::Test
|
|
119
110
|
msgs = FastOsc.decode(@encoded_bundle2)
|
120
111
|
|
121
112
|
# Example of how to process the message:
|
122
|
-
#msgs.each do |timestamp, osc_messages|
|
123
|
-
|
113
|
+
# msgs.each do |timestamp, osc_messages|
|
114
|
+
# # These are the messages within this bundle
|
124
115
|
# puts "T: #{timestamp}, M: #{osc_messages}"
|
125
116
|
# osc_messages.each do |path, args|
|
126
|
-
|
117
|
+
# # And this is each message
|
127
118
|
# puts "P: #{path}, A: #{args}"
|
128
119
|
# end
|
129
120
|
#end
|
@@ -215,6 +206,17 @@ class FastOscTest < Minitest::Test
|
|
215
206
|
assert_equal bundle1, bundle2
|
216
207
|
end
|
217
208
|
|
209
|
+
def test_that_single_messages_and_bundles_can_still_be_iterated_over
|
210
|
+
multiple_decoded = FastOsc.decode(@encoded_bundle)
|
211
|
+
single_decoded = FastOsc.decode(@msg1)
|
212
|
+
|
213
|
+
timestamp1, msgs1 = multiple_decoded.first
|
214
|
+
assert_equal msgs1.first.class, Array
|
215
|
+
|
216
|
+
timestamp2, msgs2 = single_decoded.first
|
217
|
+
assert_equal msgs2.first.class, Array
|
218
|
+
end
|
219
|
+
|
218
220
|
def test_that_it_encodes_a_single_bundle_with_special_immediate_time
|
219
221
|
bundle1 = OSC::Bundle.new(nil, @msg1).encode
|
220
222
|
bundle2 = FastOsc.encode_single_bundle(nil, @path, @args)
|
metadata
CHANGED
@@ -1,24 +1,24 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fast_osc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Xavier Riley
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
|
+
prerelease: false
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
18
|
- - "~>"
|
18
19
|
- !ruby/object:Gem::Version
|
19
20
|
version: '2.0'
|
20
21
|
type: :development
|
21
|
-
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
@@ -26,13 +26,13 @@ dependencies:
|
|
26
26
|
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
|
+
prerelease: false
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
30
31
|
requirements:
|
31
32
|
- - ">="
|
32
33
|
- !ruby/object:Gem::Version
|
33
34
|
version: '0'
|
34
35
|
type: :development
|
35
|
-
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
@@ -40,13 +40,13 @@ dependencies:
|
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake-compiler
|
43
|
+
prerelease: false
|
43
44
|
requirement: !ruby/object:Gem::Requirement
|
44
45
|
requirements:
|
45
46
|
- - ">="
|
46
47
|
- !ruby/object:Gem::Version
|
47
48
|
version: '0'
|
48
49
|
type: :development
|
49
|
-
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
@@ -54,13 +54,13 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: minitest
|
57
|
+
prerelease: false
|
57
58
|
requirement: !ruby/object:Gem::Requirement
|
58
59
|
requirements:
|
59
60
|
- - "~>"
|
60
61
|
- !ruby/object:Gem::Version
|
61
62
|
version: '5.0'
|
62
63
|
type: :development
|
63
|
-
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
@@ -68,13 +68,13 @@ dependencies:
|
|
68
68
|
version: '5.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: osc-ruby
|
71
|
+
prerelease: false
|
71
72
|
requirement: !ruby/object:Gem::Requirement
|
72
73
|
requirements:
|
73
74
|
- - "~>"
|
74
75
|
- !ruby/object:Gem::Version
|
75
76
|
version: 1.1.1
|
76
77
|
type: :development
|
77
|
-
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
@@ -82,13 +82,13 @@ dependencies:
|
|
82
82
|
version: 1.1.1
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: benchmark-ips
|
85
|
+
prerelease: false
|
85
86
|
requirement: !ruby/object:Gem::Requirement
|
86
87
|
requirements:
|
87
88
|
- - "~>"
|
88
89
|
- !ruby/object:Gem::Version
|
89
90
|
version: 2.7.2
|
90
91
|
type: :development
|
91
|
-
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
@@ -108,6 +108,7 @@ files:
|
|
108
108
|
- LICENSE.txt
|
109
109
|
- README.md
|
110
110
|
- Rakefile
|
111
|
+
- docs/what-about-truffle-ruby.md
|
111
112
|
- ext/fast_osc/extconf.rb
|
112
113
|
- ext/fast_osc/fast_osc_wrapper.c
|
113
114
|
- ext/fast_osc/rtosc.c
|
@@ -140,8 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
141
|
- !ruby/object:Gem::Version
|
141
142
|
version: '0'
|
142
143
|
requirements: []
|
143
|
-
|
144
|
-
rubygems_version: 2.7.9
|
144
|
+
rubygems_version: 3.0.3
|
145
145
|
signing_key:
|
146
146
|
specification_version: 4
|
147
147
|
summary: Serialize and deserialize Open Sound Control messages
|