msgpack 1.4.2 → 1.7.3

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.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +89 -0
  3. data/README.md +73 -13
  4. data/ext/java/org/msgpack/jruby/Buffer.java +26 -19
  5. data/ext/java/org/msgpack/jruby/Decoder.java +29 -21
  6. data/ext/java/org/msgpack/jruby/Encoder.java +68 -30
  7. data/ext/java/org/msgpack/jruby/ExtensionRegistry.java +43 -64
  8. data/ext/java/org/msgpack/jruby/ExtensionValue.java +6 -9
  9. data/ext/java/org/msgpack/jruby/Factory.java +43 -42
  10. data/ext/java/org/msgpack/jruby/Packer.java +37 -40
  11. data/ext/java/org/msgpack/jruby/Unpacker.java +80 -73
  12. data/ext/msgpack/buffer.c +54 -74
  13. data/ext/msgpack/buffer.h +21 -18
  14. data/ext/msgpack/buffer_class.c +161 -52
  15. data/ext/msgpack/buffer_class.h +1 -0
  16. data/ext/msgpack/compat.h +0 -99
  17. data/ext/msgpack/extconf.rb +25 -46
  18. data/ext/msgpack/factory_class.c +143 -87
  19. data/ext/msgpack/packer.c +66 -43
  20. data/ext/msgpack/packer.h +25 -20
  21. data/ext/msgpack/packer_class.c +102 -130
  22. data/ext/msgpack/packer_class.h +11 -0
  23. data/ext/msgpack/packer_ext_registry.c +35 -40
  24. data/ext/msgpack/packer_ext_registry.h +41 -38
  25. data/ext/msgpack/rbinit.c +1 -1
  26. data/ext/msgpack/rmem.c +3 -4
  27. data/ext/msgpack/sysdep.h +5 -2
  28. data/ext/msgpack/unpacker.c +136 -111
  29. data/ext/msgpack/unpacker.h +16 -13
  30. data/ext/msgpack/unpacker_class.c +86 -126
  31. data/ext/msgpack/unpacker_class.h +11 -0
  32. data/ext/msgpack/unpacker_ext_registry.c +40 -28
  33. data/ext/msgpack/unpacker_ext_registry.h +21 -18
  34. data/lib/msgpack/bigint.rb +69 -0
  35. data/lib/msgpack/buffer.rb +9 -0
  36. data/lib/msgpack/factory.rb +140 -10
  37. data/lib/msgpack/packer.rb +10 -1
  38. data/lib/msgpack/symbol.rb +21 -4
  39. data/lib/msgpack/time.rb +1 -1
  40. data/lib/msgpack/unpacker.rb +14 -1
  41. data/lib/msgpack/version.rb +1 -1
  42. data/lib/msgpack.rb +6 -7
  43. data/msgpack.gemspec +8 -5
  44. metadata +37 -82
  45. data/.gitignore +0 -23
  46. data/.rubocop.yml +0 -36
  47. data/.travis.yml +0 -39
  48. data/Gemfile +0 -9
  49. data/Rakefile +0 -71
  50. data/appveyor.yml +0 -18
  51. data/bench/pack.rb +0 -23
  52. data/bench/pack_log.rb +0 -33
  53. data/bench/pack_log_long.rb +0 -65
  54. data/bench/pack_symbols.rb +0 -28
  55. data/bench/run.sh +0 -14
  56. data/bench/run_long.sh +0 -35
  57. data/bench/run_symbols.sh +0 -26
  58. data/bench/unpack.rb +0 -21
  59. data/bench/unpack_log.rb +0 -34
  60. data/bench/unpack_log_long.rb +0 -67
  61. data/doclib/msgpack/buffer.rb +0 -193
  62. data/doclib/msgpack/core_ext.rb +0 -101
  63. data/doclib/msgpack/error.rb +0 -19
  64. data/doclib/msgpack/extension_value.rb +0 -9
  65. data/doclib/msgpack/factory.rb +0 -101
  66. data/doclib/msgpack/packer.rb +0 -208
  67. data/doclib/msgpack/time.rb +0 -22
  68. data/doclib/msgpack/timestamp.rb +0 -44
  69. data/doclib/msgpack/unpacker.rb +0 -183
  70. data/doclib/msgpack.rb +0 -87
  71. data/msgpack.org.md +0 -46
  72. data/spec/cases.json +0 -1
  73. data/spec/cases.msg +0 -0
  74. data/spec/cases_compact.msg +0 -0
  75. data/spec/cases_spec.rb +0 -39
  76. data/spec/cruby/buffer_io_spec.rb +0 -255
  77. data/spec/cruby/buffer_packer.rb +0 -29
  78. data/spec/cruby/buffer_spec.rb +0 -575
  79. data/spec/cruby/buffer_unpacker.rb +0 -19
  80. data/spec/cruby/unpacker_spec.rb +0 -70
  81. data/spec/ext_value_spec.rb +0 -99
  82. data/spec/exttypes.rb +0 -51
  83. data/spec/factory_spec.rb +0 -367
  84. data/spec/format_spec.rb +0 -301
  85. data/spec/jruby/benchmarks/shootout_bm.rb +0 -73
  86. data/spec/jruby/benchmarks/symbolize_keys_bm.rb +0 -25
  87. data/spec/jruby/unpacker_spec.rb +0 -186
  88. data/spec/msgpack_spec.rb +0 -214
  89. data/spec/pack_spec.rb +0 -61
  90. data/spec/packer_spec.rb +0 -557
  91. data/spec/random_compat.rb +0 -24
  92. data/spec/spec_helper.rb +0 -55
  93. data/spec/timestamp_spec.rb +0 -121
  94. data/spec/unpack_spec.rb +0 -57
  95. data/spec/unpacker_spec.rb +0 -819
data/doclib/msgpack.rb DELETED
@@ -1,87 +0,0 @@
1
-
2
- module MessagePack
3
- #
4
- # Serializes an object into an IO or String.
5
- #
6
- # @overload dump(obj, options={})
7
- # @param obj [Object] object to be serialized
8
- # @param options [Hash]
9
- # @return [String] serialized data
10
- #
11
- # @overload dump(obj, io, options={})
12
- # @param obj [Object] object to be serialized
13
- # @param io [IO]
14
- # @param options [Hash]
15
- # @return [nil]
16
- #
17
- # See Packer#initialize for supported options.
18
- #
19
- def self.dump(obj)
20
- end
21
-
22
- #
23
- # Serializes an object into an IO or String. Alias of dump.
24
- #
25
- # @overload pack(obj, options={})
26
- # @param obj [Object] object to be serialized
27
- # @param options [Hash]
28
- # @return [String] serialized data
29
- #
30
- # @overload pack(obj, io, options={})
31
- # @param obj [Object] object to be serialized
32
- # @param io [IO]
33
- # @param options [Hash]
34
- # @return [nil]
35
- #
36
- # See Packer#initialize for supported options.
37
- #
38
- def self.pack(obj)
39
- end
40
-
41
- #
42
- # Deserializes an object from an IO or String.
43
- #
44
- # @overload load(string, options={})
45
- # @param string [String] data to deserialize
46
- # @param options [Hash]
47
- #
48
- # @overload load(io, options={})
49
- # @param io [IO]
50
- # @param options [Hash]
51
- #
52
- # @return [Object] deserialized object
53
- #
54
- # See Unpacker#initialize for supported options.
55
- #
56
- def self.load(src, options={})
57
- end
58
-
59
- #
60
- # Deserializes an object from an IO or String. Alias of load.
61
- #
62
- # @overload unpack(string, options={})
63
- # @param string [String] data to deserialize
64
- # @param options [Hash]
65
- #
66
- # @overload unpack(io, options={})
67
- # @param io [IO]
68
- # @param options [Hash]
69
- #
70
- # @return [Object] deserialized object
71
- #
72
- # See Unpacker#initialize for supported options.
73
- #
74
- def self.unpack(src, options={})
75
- end
76
-
77
- #
78
- # An instance of Factory class. DefaultFactory is also used
79
- # by global pack/unpack methods such as MessagePack.dump/load,
80
- # Hash#to_msgpack, and other to_msgpack methods.
81
- #
82
- # Calling DefaultFactory.register_type lets you add an extension
83
- # type globally.
84
- #
85
- DefaultFactory = Factory.new
86
- end
87
-
data/msgpack.org.md DELETED
@@ -1,46 +0,0 @@
1
- # MessagePack for Ruby
2
-
3
- ```
4
- require 'msgpack'
5
- msg = [1,2,3].to_msgpack #=> "\x93\x01\x02\x03"
6
- MessagePack.unpack(msg) #=> [1,2,3]
7
- ```
8
-
9
- ## Install
10
-
11
- ```
12
- gem install msgpack
13
- ```
14
-
15
- ## Use cases
16
-
17
- * Create REST API returing MessagePack using Rails + [RABL](https://github.com/nesquena/rabl)
18
- * Store objects efficiently in memcached or Redis
19
- * Upload data in efficient format from mobile devices. See also MessagePack for [Objective-C](https://github.com/msgpack/msgpack-objectivec) and [Java](https://github.com/msgpack/msgpack-java)
20
-
21
- ## Links
22
-
23
- * [Github](https://github.com/msgpack/msgpack-ruby)
24
- * [API document](http://ruby.msgpack.org/)
25
-
26
- ## Streaming API
27
-
28
- ```
29
- # serialize a 2-element array [e1, e2]
30
- pk = MessagePack::Packer.new(io)
31
- pk.write_array_header(2).write(e1).write(e2).flush
32
- ```
33
-
34
- ```
35
- # deserialize objects from an IO
36
- u = MessagePack::Unpacker.new(io)
37
- u.each { |obj| ... }
38
- ```
39
-
40
- ```
41
- # event-driven deserialization
42
- def on_read(data)
43
- @u ||= MessagePack::Unpacker.new
44
- @u.feed_each(data) { |obj| ... }
45
- end
46
- ```
data/spec/cases.json DELETED
@@ -1 +0,0 @@
1
- [false,true,null,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,127,127,255,65535,4294967295,-32,-32,-128,-32768,-2147483648,0.0,-0.0,1.0,-1.0,"a","a","a","","","",[0],[0],[0],[],[],[],{},{},{},{"a":97},{"a":97},{"a":97},[[]],[["a"]]]
data/spec/cases.msg DELETED
Binary file
Binary file
data/spec/cases_spec.rb DELETED
@@ -1,39 +0,0 @@
1
- require 'spec_helper'
2
- require 'json'
3
-
4
- describe MessagePack do
5
- here = File.dirname(__FILE__)
6
- CASES = File.read("#{here}/cases.msg")
7
- CASES_JSON = File.read("#{here}/cases.json")
8
- CASES_COMPACT = File.read("#{here}/cases_compact.msg")
9
-
10
- it 'compare with json' do
11
- ms = []
12
- MessagePack::Unpacker.new.feed_each(CASES) {|m|
13
- ms << m
14
- }
15
-
16
- js = JSON.load(CASES_JSON)
17
-
18
- ms.zip(js) {|m,j|
19
- m.should == j
20
- }
21
- end
22
-
23
- it 'compare with compat' do
24
- ms = []
25
- MessagePack::Unpacker.new.feed_each(CASES) {|m|
26
- ms << m
27
- }
28
-
29
- cs = []
30
- MessagePack::Unpacker.new.feed_each(CASES_COMPACT) {|c|
31
- cs << c
32
- }
33
-
34
- ms.zip(cs) {|m,c|
35
- m.should == c
36
- }
37
- end
38
- end
39
-
@@ -1,255 +0,0 @@
1
- require 'spec_helper'
2
- require 'random_compat'
3
-
4
- require 'stringio'
5
- if defined?(Encoding)
6
- Encoding.default_external = 'ASCII-8BIT'
7
- end
8
-
9
- describe Buffer do
10
- r = Random.new
11
- random_seed = r.seed
12
- puts "buffer_io random seed: 0x#{random_seed.to_s(16)}"
13
-
14
- let :source do
15
- ''
16
- end
17
-
18
- def set_source(s)
19
- source.replace(s)
20
- end
21
-
22
- let :io do
23
- StringIO.new(source.dup)
24
- end
25
-
26
- let :buffer do
27
- Buffer.new(io)
28
- end
29
-
30
- it 'io returns internal io' do
31
- buffer.io.should == io
32
- end
33
-
34
- it 'close closes internal io' do
35
- expect(io).to receive(:close)
36
- buffer.close
37
- end
38
-
39
- it 'short feed and read all' do
40
- set_source 'aa'
41
- buffer.read.should == 'aa'
42
- end
43
-
44
- it 'short feed and read short' do
45
- set_source 'aa'
46
- buffer.read(1).should == 'a'
47
- buffer.read(1).should == 'a'
48
- buffer.read(1).should == nil
49
- end
50
-
51
- it 'long feed and read all' do
52
- set_source ' '*(1024*1024)
53
- s = buffer.read
54
- s.size.should == source.size
55
- s.should == source
56
- end
57
-
58
- it 'long feed and read mixed' do
59
- set_source ' '*(1024*1024)
60
- buffer.read(10).should == source.slice!(0, 10)
61
- buffer.read(10).should == source.slice!(0, 10)
62
- buffer.read(10).should == source.slice!(0, 10)
63
- s = buffer.read
64
- s.size.should == source.size
65
- s.should == source
66
- end
67
-
68
- it 'eof' do
69
- set_source ''
70
- buffer.read.should == ''
71
- end
72
-
73
- it 'eof 2' do
74
- set_source 'a'
75
- buffer.read.should == 'a'
76
- buffer.read.should == ''
77
- end
78
-
79
- it 'write short once and flush' do
80
- buffer.write('aa')
81
- buffer.flush
82
- io.string.should == 'aa'
83
- end
84
-
85
- it 'write short twice and flush' do
86
- buffer.write('a')
87
- buffer.write('a')
88
- buffer.flush
89
- io.string.should == 'aa'
90
- end
91
-
92
- it 'write long once and flush' do
93
- s = ' '*(1024*1024)
94
- buffer.write s
95
- buffer.flush
96
- io.string.size.should == s.size
97
- io.string.should == s
98
- end
99
-
100
- it 'write short multi and flush' do
101
- s = ' '*(1024*1024)
102
- 1024.times {
103
- buffer.write ' '*1024
104
- }
105
- buffer.flush
106
- io.string.size.should == s.size
107
- io.string.should == s
108
- end
109
-
110
- it 'random read' do
111
- r = Random.new(random_seed)
112
-
113
- 50.times {
114
- fragments = []
115
-
116
- r.rand(4).times do
117
- n = r.rand(1024*1400)
118
- s = r.bytes(n)
119
- fragments << s
120
- end
121
-
122
- io = StringIO.new(fragments.join)
123
- b = Buffer.new(io)
124
-
125
- fragments.each {|s|
126
- x = b.read(s.size)
127
- x.size.should == s.size
128
- x.should == s
129
- }
130
- b.empty?.should == true
131
- b.read.should == ''
132
- }
133
- end
134
-
135
- it 'random read_all' do
136
- r = Random.new(random_seed)
137
-
138
- 50.times {
139
- fragments = []
140
- r.bytes(0)
141
-
142
- r.rand(4).times do
143
- n = r.rand(1024*1400)
144
- s = r.bytes(n)
145
- fragments << s
146
- end
147
-
148
- io = StringIO.new(fragments.join)
149
- b = Buffer.new(io)
150
-
151
- fragments.each {|s|
152
- x = b.read_all(s.size)
153
- x.size.should == s.size
154
- x.should == s
155
- }
156
- b.empty?.should == true
157
- lambda {
158
- b.read_all(1)
159
- }.should raise_error(EOFError)
160
- }
161
- end
162
-
163
- it 'random skip' do
164
- r = Random.new(random_seed)
165
-
166
- 50.times {
167
- fragments = []
168
-
169
- r.rand(4).times do
170
- n = r.rand(1024*1400)
171
- s = r.bytes(n)
172
- fragments << s
173
- end
174
-
175
- io = StringIO.new(fragments.join)
176
- b = Buffer.new(io)
177
-
178
- fragments.each {|s|
179
- b.skip(s.size).should == s.size
180
- }
181
- b.empty?.should == true
182
- b.skip(1).should == 0
183
- }
184
- end
185
-
186
- it 'random skip_all' do
187
- r = Random.new(random_seed)
188
-
189
- 50.times {
190
- fragments = []
191
-
192
- r.rand(4).times do
193
- n = r.rand(1024*1400)
194
- s = r.bytes(n)
195
- fragments << s
196
- end
197
-
198
- io = StringIO.new(fragments.join)
199
- b = Buffer.new(io)
200
-
201
- fragments.each {|s|
202
- lambda {
203
- b.skip_all(s.size)
204
- }.should_not raise_error
205
- }
206
- b.empty?.should == true
207
- lambda {
208
- b.skip_all(1)
209
- }.should raise_error(EOFError)
210
- }
211
- end
212
-
213
- it 'random write and flush' do
214
- r = Random.new(random_seed)
215
-
216
- 50.times {
217
- s = r.bytes(0)
218
- io = StringIO.new
219
- b = Buffer.new(io)
220
-
221
- r.rand(4).times do
222
- n = r.rand(1024*1400)
223
- x = r.bytes(n)
224
- s << x
225
- b.write(x)
226
- end
227
-
228
- (io.string.size + b.size).should == s.size
229
-
230
- b.flush
231
-
232
- io.string.size.should == s.size
233
- io.string.should == s
234
- }
235
- end
236
-
237
- it 'random write and clear' do
238
- r = Random.new(random_seed)
239
- b = Buffer.new
240
-
241
- 50.times {
242
- s = r.bytes(0)
243
-
244
- r.rand(4).times do
245
- n = r.rand(1024*1400)
246
- x = r.bytes(n)
247
- s << x
248
- b.write(x)
249
- end
250
-
251
- b.size.should == s.size
252
- b.clear
253
- }
254
- end
255
- end
@@ -1,29 +0,0 @@
1
- # encoding: ascii-8bit
2
- require 'spec_helper'
3
-
4
- require 'stringio'
5
- if defined?(Encoding)
6
- Encoding.default_external = 'ASCII-8BIT'
7
- end
8
-
9
- describe Packer do
10
- let :packer do
11
- Packer.new
12
- end
13
-
14
- it 'initialize' do
15
- Packer.new
16
- Packer.new(nil)
17
- Packer.new(StringIO.new)
18
- Packer.new({})
19
- Packer.new(StringIO.new, {})
20
- end
21
-
22
- it 'buffer' do
23
- o1 = packer.buffer.object_id
24
- packer.buffer << 'frsyuki'
25
- packer.buffer.to_s.should == 'frsyuki'
26
- packer.buffer.object_id.should == o1
27
- end
28
- end
29
-