messagepack 1.0.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.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/README.adoc +773 -0
  3. data/Rakefile +8 -0
  4. data/docs/Gemfile +7 -0
  5. data/docs/README.md +85 -0
  6. data/docs/_config.yml +137 -0
  7. data/docs/_guides/index.adoc +14 -0
  8. data/docs/_guides/io-streaming.adoc +226 -0
  9. data/docs/_guides/migration.adoc +218 -0
  10. data/docs/_guides/performance.adoc +189 -0
  11. data/docs/_pages/buffer.adoc +85 -0
  12. data/docs/_pages/extension-types.adoc +117 -0
  13. data/docs/_pages/factory-pattern.adoc +115 -0
  14. data/docs/_pages/index.adoc +20 -0
  15. data/docs/_pages/serialization.adoc +159 -0
  16. data/docs/_pages/streaming.adoc +97 -0
  17. data/docs/_pages/symbol-extension.adoc +69 -0
  18. data/docs/_pages/timestamp-extension.adoc +88 -0
  19. data/docs/_references/api.adoc +360 -0
  20. data/docs/_references/extensions.adoc +198 -0
  21. data/docs/_references/format.adoc +301 -0
  22. data/docs/_references/index.adoc +14 -0
  23. data/docs/_tutorials/extension-types.adoc +170 -0
  24. data/docs/_tutorials/getting-started.adoc +165 -0
  25. data/docs/_tutorials/index.adoc +14 -0
  26. data/docs/_tutorials/thread-safety.adoc +157 -0
  27. data/docs/index.adoc +77 -0
  28. data/docs/lychee.toml +42 -0
  29. data/lib/messagepack/bigint.rb +131 -0
  30. data/lib/messagepack/buffer.rb +534 -0
  31. data/lib/messagepack/core_ext.rb +34 -0
  32. data/lib/messagepack/error.rb +24 -0
  33. data/lib/messagepack/extensions/base.rb +55 -0
  34. data/lib/messagepack/extensions/registry.rb +154 -0
  35. data/lib/messagepack/extensions/symbol.rb +38 -0
  36. data/lib/messagepack/extensions/timestamp.rb +110 -0
  37. data/lib/messagepack/extensions/value.rb +38 -0
  38. data/lib/messagepack/factory.rb +349 -0
  39. data/lib/messagepack/format.rb +99 -0
  40. data/lib/messagepack/packer.rb +702 -0
  41. data/lib/messagepack/symbol.rb +4 -0
  42. data/lib/messagepack/time.rb +29 -0
  43. data/lib/messagepack/timestamp.rb +4 -0
  44. data/lib/messagepack/unpacker.rb +1418 -0
  45. data/lib/messagepack/version.rb +5 -0
  46. data/lib/messagepack.rb +81 -0
  47. metadata +94 -0
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Messagepack
4
+ VERSION = "1.0.0"
5
+ end
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'messagepack/version'
4
+ require_relative 'messagepack/error'
5
+ require_relative 'messagepack/format'
6
+ require_relative 'messagepack/buffer'
7
+ require_relative 'messagepack/packer'
8
+ require_relative 'messagepack/unpacker'
9
+ require_relative 'messagepack/factory'
10
+ require_relative 'messagepack/bigint'
11
+ require_relative 'messagepack/extensions/base'
12
+ require_relative 'messagepack/extensions/registry'
13
+ require_relative 'messagepack/extensions/value'
14
+ require_relative 'messagepack/extensions/timestamp'
15
+ require_relative 'messagepack/time'
16
+ require_relative 'messagepack/symbol'
17
+ require_relative 'messagepack/core_ext'
18
+
19
+ # MessagePack - Efficient binary serialization format
20
+ #
21
+ # This is a pure Ruby implementation of the MessagePack specification.
22
+ # See https://msgpack.org/ for more information.
23
+ #
24
+ module Messagepack
25
+ # Buffer class alias for backward compatibility
26
+ Buffer = BinaryBuffer
27
+
28
+ DefaultFactory = Factory.new
29
+
30
+ # Register built-in extension types
31
+
32
+ # Timestamp extension (-1) for Time class
33
+ DefaultFactory.register_type(-1, ::Time,
34
+ packer: ->(time) { Timestamp.to_msgpack_ext(time.tv_sec, time.tv_nsec) },
35
+ unpacker: ->(data) {
36
+ tv = Timestamp.from_msgpack_ext(data)
37
+ ::Time.at(tv.sec, tv.nsec, :nanosecond)
38
+ }
39
+ )
40
+
41
+ # Timestamp extension (-1) for Timestamp class
42
+ DefaultFactory.register_type(-1, Timestamp,
43
+ packer: :to_msgpack_ext,
44
+ unpacker: :from_msgpack_ext
45
+ )
46
+
47
+ # Module-level convenience methods
48
+
49
+ # Serialize an object to MessagePack binary.
50
+ #
51
+ # @param object Object to serialize
52
+ # @param io [IO] Optional IO to write to
53
+ # @param options [Hash] Options to pass to Packer
54
+ # @return [String, nil] Binary string if io is nil
55
+ #
56
+ def self.pack(object, *args)
57
+ io = args.first if args.first.respond_to?(:write)
58
+ options = args.last if args.last.is_a?(Hash)
59
+ DefaultFactory.pack(object, io, **(options || {}))
60
+ end
61
+
62
+ # Deserialize MessagePack binary to Ruby object.
63
+ #
64
+ # @param data [String, IO] Binary data or IO to read from
65
+ # @param options [Hash] Options to pass to Unpacker
66
+ # @return [Object] Deserialized object
67
+ #
68
+ def self.unpack(data, options = nil)
69
+ DefaultFactory.unpack(data, **(options || {}))
70
+ end
71
+
72
+ # Alias for pack.
73
+ def self.dump(object, *args)
74
+ pack(object, *args)
75
+ end
76
+
77
+ # Alias for unpack.
78
+ def self.load(data, options = nil)
79
+ unpack(data, options)
80
+ end
81
+ end
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: messagepack
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Ribose Inc.
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2026-02-04 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |-
14
+ MessagePack Ruby is a pure Ruby implementation of the MessagePack binary
15
+ serialization format. MessagePack is an efficient binary serialization format that
16
+ enables exchange of data among multiple languages like JSON, but is faster and smaller.
17
+ email:
18
+ - open.source@ribose.com
19
+ executables: []
20
+ extensions: []
21
+ extra_rdoc_files: []
22
+ files:
23
+ - README.adoc
24
+ - Rakefile
25
+ - docs/Gemfile
26
+ - docs/README.md
27
+ - docs/_config.yml
28
+ - docs/_guides/index.adoc
29
+ - docs/_guides/io-streaming.adoc
30
+ - docs/_guides/migration.adoc
31
+ - docs/_guides/performance.adoc
32
+ - docs/_pages/buffer.adoc
33
+ - docs/_pages/extension-types.adoc
34
+ - docs/_pages/factory-pattern.adoc
35
+ - docs/_pages/index.adoc
36
+ - docs/_pages/serialization.adoc
37
+ - docs/_pages/streaming.adoc
38
+ - docs/_pages/symbol-extension.adoc
39
+ - docs/_pages/timestamp-extension.adoc
40
+ - docs/_references/api.adoc
41
+ - docs/_references/extensions.adoc
42
+ - docs/_references/format.adoc
43
+ - docs/_references/index.adoc
44
+ - docs/_tutorials/extension-types.adoc
45
+ - docs/_tutorials/getting-started.adoc
46
+ - docs/_tutorials/index.adoc
47
+ - docs/_tutorials/thread-safety.adoc
48
+ - docs/index.adoc
49
+ - docs/lychee.toml
50
+ - lib/messagepack.rb
51
+ - lib/messagepack/bigint.rb
52
+ - lib/messagepack/buffer.rb
53
+ - lib/messagepack/core_ext.rb
54
+ - lib/messagepack/error.rb
55
+ - lib/messagepack/extensions/base.rb
56
+ - lib/messagepack/extensions/registry.rb
57
+ - lib/messagepack/extensions/symbol.rb
58
+ - lib/messagepack/extensions/timestamp.rb
59
+ - lib/messagepack/extensions/value.rb
60
+ - lib/messagepack/factory.rb
61
+ - lib/messagepack/format.rb
62
+ - lib/messagepack/packer.rb
63
+ - lib/messagepack/symbol.rb
64
+ - lib/messagepack/time.rb
65
+ - lib/messagepack/timestamp.rb
66
+ - lib/messagepack/unpacker.rb
67
+ - lib/messagepack/version.rb
68
+ homepage: https://github.com/lutaml/messagepack
69
+ licenses:
70
+ - MIT
71
+ metadata:
72
+ homepage_uri: https://github.com/lutaml/messagepack
73
+ source_code_uri: https://github.com/lutaml/messagepack
74
+ changelog_uri: https://github.com/lutaml/messagepack
75
+ post_install_message:
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 2.7.0
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubygems_version: 3.5.22
91
+ signing_key:
92
+ specification_version: 4
93
+ summary: Pure Ruby implementation of the MessagePack binary serialization format
94
+ test_files: []