rapidyaml 0.1.0-aarch64-linux

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.
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,20 @@
1
+ # Object#to_yaml monkey patch for rapidyaml
2
+ #
3
+ # This file extends all Ruby objects with a to_yaml method that uses RapidYAML
4
+ # instead of the standard library's Psych implementation. When loaded via
5
+ # require "rapidyaml/core_ext", existing code calling obj.to_yaml will
6
+ # automatically benefit from rapidyaml's performance without modification.
7
+ #
8
+ # This modifies global behavior by overriding the standard to_yaml method.
9
+ # Use with caution in environments where Psych-specific serialization behavior
10
+ # is expected or where other libraries depend on the original implementation.
11
+
12
+ require 'rapidyaml'
13
+
14
+ class Object
15
+ def to_yaml
16
+ RapidYAML.dump(self)
17
+ end
18
+ end
19
+
20
+ # Copyright (c) 2026 Durable Programming, LLC. All rights reserved.
@@ -0,0 +1,63 @@
1
+ # YAML module monkey patch for rapidyaml
2
+ #
3
+ # This file overrides the standard YAML module methods to delegate to RapidYAML
4
+ # instead of Psych. When loaded via require "rapidyaml/core_ext", existing
5
+ # code using YAML.load, YAML.dump, and related methods will automatically use
6
+ # rapidyaml for improved performance without requiring code changes.
7
+ #
8
+ # The monkey patch preserves the original YAML API signatures while redirecting
9
+ # calls to the corresponding RapidYAML methods. Extra keyword arguments are
10
+ # ignored to maintain compatibility with Psych's extended parameter lists.
11
+ #
12
+ # This modifies global behavior by replacing Ruby's standard YAML implementation.
13
+ # Use with caution in environments where Psych-specific features or behaviors
14
+ # are required by other parts of the application or loaded libraries.
15
+
16
+ require 'yaml'
17
+ require 'rapidyaml'
18
+
19
+ module YAML
20
+ class << self
21
+ def load(yaml, symbolize_names: false, permitted_classes: [], **_)
22
+ RapidYAML.load(yaml, symbolize_names: symbolize_names, permitted_classes: permitted_classes)
23
+ end
24
+
25
+ def safe_load(yaml, symbolize_names: false, permitted_classes: [], **_)
26
+ RapidYAML.safe_load(yaml, symbolize_names: symbolize_names, permitted_classes: permitted_classes)
27
+ end
28
+
29
+ def unsafe_load(yaml, symbolize_names: false, permitted_classes: [], **_)
30
+ RapidYAML.unsafe_load(yaml, symbolize_names: symbolize_names, permitted_classes: permitted_classes)
31
+ end
32
+
33
+ def dump(obj, **)
34
+ RapidYAML.dump(obj)
35
+ end
36
+
37
+ def safe_dump(obj, **)
38
+ RapidYAML.safe_dump(obj)
39
+ end
40
+
41
+ def dump_stream(*objects)
42
+ RapidYAML.dump_stream(*objects)
43
+ end
44
+
45
+ def load_stream(yaml, symbolize_names: false, permitted_classes: [], **_, &block)
46
+ RapidYAML.load_stream(yaml, symbolize_names: symbolize_names, permitted_classes: permitted_classes, &block)
47
+ end
48
+
49
+ def safe_load_stream(yaml, symbolize_names: false, permitted_classes: [], **_, &block)
50
+ RapidYAML.safe_load_stream(yaml, symbolize_names: symbolize_names, permitted_classes: permitted_classes, &block)
51
+ end
52
+
53
+ def load_file(path, symbolize_names: false, permitted_classes: [], **_)
54
+ RapidYAML.load_file(path, symbolize_names: symbolize_names, permitted_classes: permitted_classes)
55
+ end
56
+
57
+ def unsafe_load_file(path, symbolize_names: false, permitted_classes: [], **_)
58
+ RapidYAML.unsafe_load_file(path, symbolize_names: symbolize_names, permitted_classes: permitted_classes)
59
+ end
60
+ end
61
+ end
62
+
63
+ # Copyright (c) 2026 Durable Programming, LLC. All rights reserved.
@@ -0,0 +1,17 @@
1
+ # Core extension loader for rapidyaml
2
+ #
3
+ # This file provides optional monkey-patching for Ruby's standard YAML interface
4
+ # and Object#to_yaml method. When loaded, it replaces YAML module methods and
5
+ # adds to_yaml to all objects, directing them to use RapidYAML instead of Psych.
6
+ #
7
+ # This allows existing code using YAML.load/dump or obj.to_yaml to transparently
8
+ # benefit from rapidyaml's performance without code changes. Load explicitly with:
9
+ # require "rapidyaml/core_ext"
10
+ #
11
+ # Note: This modifies global behavior. Use with caution in libraries or when
12
+ # Psych-specific features (AST access, custom handlers) are needed elsewhere.
13
+
14
+ require_relative 'core_ext/object'
15
+ require_relative 'core_ext/yaml'
16
+
17
+ # Copyright (c) 2026 Durable Programming, LLC. All rights reserved.
@@ -0,0 +1,15 @@
1
+ # Version constant definition for rapidyaml gem
2
+ #
3
+ # This file defines the VERSION constant for the RapidYAML module, which is used
4
+ # for gem versioning, dependency resolution, and runtime version checks. The version
5
+ # follows semantic versioning (SemVer) format and is referenced by the gemspec,
6
+ # bundler, and other parts of the gem infrastructure.
7
+ #
8
+ # The version is kept in a separate file to allow easy programmatic access and
9
+ # updates during the release process without modifying the main module files.
10
+
11
+ module RapidYAML
12
+ VERSION = '0.1.0'
13
+ end
14
+
15
+ # Copyright (c) 2026 Durable Programming, LLC. All rights reserved.
data/lib/rapidyaml.rb ADDED
@@ -0,0 +1,245 @@
1
+ # RapidYAML - Fast YAML parsing and serialization for Ruby
2
+ #
3
+ # This file provides the main Ruby interface for the rapidyaml gem, which wraps
4
+ # the C++ rapidyaml library for high-performance YAML processing. It implements a
5
+ # drop-in replacement API compatible with Psych, including load/dump methods with
6
+ # support for symbolized keys, permitted classes for scalar coercion, and file I/O.
7
+ #
8
+ # The module delegates core parsing and serialization to C extension methods while
9
+ # providing Ruby-side features like scalar coercion (Symbol, Date, Time), key
10
+ # symbolization, and stream processing. All "unsafe" methods are aliased to their
11
+ # safe equivalents since rapidyaml never executes arbitrary Ruby code.
12
+ #
13
+ # Key features:
14
+ # - Psych-compatible API (load, dump, safe_load, etc.)
15
+ # - Scalar type coercion with permitted_classes
16
+ # - Multi-document YAML stream support
17
+ # - File I/O convenience methods
18
+ # - No AST/visitor pattern support (direct object conversion only)
19
+
20
+ require 'psych'
21
+ require 'set'
22
+ require_relative 'rapidyaml/version'
23
+
24
+ begin
25
+ RUBY_VERSION =~ /(\d+\.\d+)/
26
+ require_relative "rapidyaml/#{Regexp.last_match(1)}/rapidyaml"
27
+ rescue LoadError
28
+ require 'rapidyaml/rapidyaml'
29
+ end
30
+
31
+ module RapidYAML
32
+ # Error and SyntaxError are defined in the C extension (Init_rapidyaml).
33
+ # ParseError is kept as an alias for backward compatibility.
34
+ ParseError = SyntaxError
35
+
36
+ # Regex patterns for scalar coercion during load.
37
+ # Only applied when the corresponding class is in permitted_classes.
38
+ DATE_RE = /\A(\d{4})-(\d{2})-(\d{2})\z/
39
+ DATETIME_RE = /\A\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?: ?(?:Z|[+-]\d{2}:?\d{2}))?\z/
40
+
41
+ module_function
42
+
43
+ # Parses a YAML string and returns the corresponding Ruby object.
44
+ #
45
+ # @param yaml [String] YAML-formatted string
46
+ # @param symbolize_names [Boolean] if true, hash keys are returned as symbols
47
+ # @param permitted_classes [Array<Class>] classes allowed for type coercion
48
+ # (supports Symbol, Date, Time)
49
+ # @return [Object] parsed Ruby object
50
+ # @raise [RapidYAML::SyntaxError] if the YAML is invalid
51
+ def load(yaml, symbolize_names: false, permitted_classes: [])
52
+ result = Ext.parse(yaml)
53
+ result = coerce_scalars(result, permitted_classes) unless permitted_classes.empty?
54
+ symbolize_names ? deep_symbolize_keys(result) : result
55
+ end
56
+
57
+ # Alias matching Psych.safe_load; rapidyaml does not execute arbitrary code,
58
+ # so this is equivalent to load for all practical purposes.
59
+ #
60
+ # @param yaml [String] YAML-formatted string
61
+ # @param symbolize_names [Boolean] if true, hash keys are returned as symbols
62
+ # @param permitted_classes [Array<Class>] classes allowed for type coercion
63
+ # @return [Object] parsed Ruby object
64
+ # @raise [RapidYAML::SyntaxError] if the YAML is invalid
65
+ def safe_load(yaml, symbolize_names: false, permitted_classes: [])
66
+ load(yaml, symbolize_names: symbolize_names, permitted_classes: permitted_classes)
67
+ end
68
+
69
+ # Serializes a Ruby object to a YAML string.
70
+ #
71
+ # @param obj [Object] Ruby object to serialize
72
+ # @return [String] YAML representation
73
+ # @raise [RapidYAML::Error] if the object cannot be serialized
74
+ def dump(obj)
75
+ Ext.emit(obj)
76
+ end
77
+
78
+ # Serializes multiple Ruby objects into a multi-document YAML stream.
79
+ #
80
+ # @param objects [Array<Object>] Ruby objects to serialize
81
+ # @return [String] YAML stream with one document per object
82
+ # @raise [RapidYAML::Error] if any object cannot be serialized
83
+ def dump_stream(*objects)
84
+ objects.map do |obj|
85
+ s = dump(obj)
86
+ obj.is_a?(Hash) || obj.is_a?(Array) ? "---\n#{s}" : "--- #{s}"
87
+ end.join
88
+ end
89
+
90
+ # Equivalent to dump; rapidyaml does not serialize arbitrary Ruby objects,
91
+ # so there is no unsafe surface to restrict.
92
+ #
93
+ # @param obj [Object] Ruby object to serialize
94
+ # @return [String] YAML representation
95
+ def safe_dump(obj)
96
+ dump(obj)
97
+ end
98
+
99
+ # Returns the version string of the bundled rapidyaml C++ library.
100
+ # Psych exposes libyaml_version; this is the equivalent for rapidyaml.
101
+ #
102
+ # @return [String] rapidyaml version, e.g. "0.13.0"
103
+ def libyaml_version
104
+ Ext.ryml_version
105
+ end
106
+
107
+ # Parses all YAML documents in a string and yields each as a Ruby object.
108
+ # If no block given, returns an array of all documents.
109
+ #
110
+ # @param yaml [String] YAML-formatted string (may contain multiple documents)
111
+ # @param symbolize_names [Boolean] if true, hash keys are returned as symbols
112
+ # @param permitted_classes [Array<Class>] classes allowed for type coercion
113
+ # @yield [Object] each parsed document
114
+ # @return [Array, nil] array of documents if no block given
115
+ def load_stream(yaml, symbolize_names: false, permitted_classes: [], &block)
116
+ docs = Ext.parse_stream(yaml)
117
+ docs = docs.map { |d| coerce_scalars(d, permitted_classes) } unless permitted_classes.empty?
118
+ docs = docs.map { |d| deep_symbolize_keys(d) } if symbolize_names
119
+ if block
120
+ docs.each(&block)
121
+ nil
122
+ else
123
+ docs
124
+ end
125
+ end
126
+
127
+ # @see load_stream
128
+ def safe_load_stream(yaml, symbolize_names: false, permitted_classes: [], &block)
129
+ load_stream(yaml, symbolize_names: symbolize_names,
130
+ permitted_classes: permitted_classes, &block)
131
+ end
132
+
133
+ # Alias matching Psych.unsafe_load; rapidyaml never executes arbitrary Ruby
134
+ # object tags, so this is equivalent to load.
135
+ #
136
+ # @param yaml [String] YAML-formatted string
137
+ # @param symbolize_names [Boolean] if true, hash keys are returned as symbols
138
+ # @param permitted_classes [Array<Class>] classes allowed for type coercion
139
+ # @return [Object] parsed Ruby object
140
+ def unsafe_load(yaml, symbolize_names: false, permitted_classes: [])
141
+ load(yaml, symbolize_names: symbolize_names, permitted_classes: permitted_classes)
142
+ end
143
+
144
+ # Alias matching Psych.unsafe_load_file; rapidyaml never executes arbitrary
145
+ # Ruby object tags, so this is equivalent to load_file.
146
+ #
147
+ # @param path [String] path to the YAML file
148
+ # @param symbolize_names [Boolean] if true, hash keys are returned as symbols
149
+ # @param permitted_classes [Array<Class>] classes allowed for type coercion
150
+ # @return [Object] parsed Ruby object
151
+ def unsafe_load_file(path, symbolize_names: false, permitted_classes: [])
152
+ load_file(path, symbolize_names: symbolize_names, permitted_classes: permitted_classes)
153
+ end
154
+
155
+ # Parses YAML from a file and returns the corresponding Ruby object.
156
+ #
157
+ # @param path [String] path to the YAML file
158
+ # @param symbolize_names [Boolean] if true, hash keys are returned as symbols
159
+ # @param permitted_classes [Array<Class>] classes allowed for type coercion
160
+ # @return [Object] parsed Ruby object
161
+ # @raise [RapidYAML::SyntaxError] if the YAML is invalid
162
+ # @raise [Errno::ENOENT] if the file does not exist
163
+ def load_file(path, symbolize_names: false, permitted_classes: [])
164
+ load(File.read(path), symbolize_names: symbolize_names,
165
+ permitted_classes: permitted_classes)
166
+ end
167
+
168
+ # Serializes a Ruby object to a YAML file.
169
+ #
170
+ # @param obj [Object] Ruby object to serialize
171
+ # @param path [String] destination file path
172
+ # @return [void]
173
+ # @raise [RapidYAML::Error] if the object cannot be serialized
174
+ def dump_file(obj, path)
175
+ File.write(path, dump(obj))
176
+ end
177
+
178
+ # @api private
179
+ def coerce_scalars(obj, permitted_classes)
180
+ set = permitted_classes.to_set
181
+ permit_symbol = set.include?(Symbol)
182
+ permit_date = set.include?(Date)
183
+ permit_time = set.include?(Time)
184
+ coerce_scalars_inner(obj, permit_symbol, permit_date, permit_time)
185
+ end
186
+ private_class_method :coerce_scalars
187
+
188
+ # @api private
189
+ def coerce_scalars_inner(obj, permit_symbol, permit_date, permit_time)
190
+ case obj
191
+ when Hash
192
+ obj.transform_keys { |k| coerce_scalars_inner(k, permit_symbol, permit_date, permit_time) }
193
+ .transform_values { |v| coerce_scalars_inner(v, permit_symbol, permit_date, permit_time) }
194
+ when Array
195
+ obj.map { |v| coerce_scalars_inner(v, permit_symbol, permit_date, permit_time) }
196
+ when String
197
+ coerce_string(obj, permit_symbol, permit_date, permit_time)
198
+ else
199
+ obj
200
+ end
201
+ end
202
+ private_class_method :coerce_scalars_inner
203
+
204
+ # @api private
205
+ def coerce_string(str, permit_symbol, permit_date, permit_time)
206
+ if permit_symbol && str.start_with?(':')
207
+ name = str[1..]
208
+ return name.empty? ? :"" : name.to_sym
209
+ end
210
+ if permit_time && str =~ DATETIME_RE && str.include?(':')
211
+ begin
212
+ require 'time'
213
+ t = Time.parse(str)
214
+ return t
215
+ rescue ArgumentError
216
+ # fall through
217
+ end
218
+ end
219
+ if permit_date && str =~ DATE_RE
220
+ begin
221
+ require 'date'
222
+ return Date.new(::Regexp.last_match(1).to_i, ::Regexp.last_match(2).to_i, ::Regexp.last_match(3).to_i)
223
+ rescue ArgumentError
224
+ # fall through
225
+ end
226
+ end
227
+ str
228
+ end
229
+ private_class_method :coerce_string
230
+
231
+ # @api private
232
+ def deep_symbolize_keys(obj)
233
+ case obj
234
+ when Hash
235
+ obj.transform_keys(&:to_sym).transform_values { |v| deep_symbolize_keys(v) }
236
+ when Array
237
+ obj.map { |v| deep_symbolize_keys(v) }
238
+ else
239
+ obj
240
+ end
241
+ end
242
+ private_class_method :deep_symbolize_keys
243
+ end
244
+
245
+ # Copyright (c) 2026 Durable Programming, LLC. All rights reserved.
data/rapidyaml.gemspec ADDED
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/rapidyaml/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'rapidyaml'
7
+ spec.version = RapidYAML::VERSION
8
+ spec.authors = ['Durable Programming LLC']
9
+ spec.email = ['commercial@durableprogramming.com']
10
+ spec.summary = 'Fast YAML parsing and emission via rapidyaml — drop-in Psych replacement'
11
+ spec.description = 'Ruby bindings to rapidyaml (ryml), a C++ YAML library. ' \
12
+ 'Exposes a Psych-compatible API so it can be used as a drop-in replacement.'
13
+ spec.homepage = 'https://github.com/durableprogramming/rapidyaml-rb'
14
+ spec.license = 'MIT'
15
+ spec.required_ruby_version = '>= 3.1.0'
16
+
17
+ spec.metadata = {
18
+ 'homepage_uri' => spec.homepage,
19
+ 'source_code_uri' => spec.homepage,
20
+ 'changelog_uri' => "#{spec.homepage}/blob/main/CHANGELOG.md",
21
+ 'rubygems_mfa_required' => 'true'
22
+ }
23
+
24
+ spec.files = Dir[
25
+ 'lib/**/*',
26
+ 'ext/**/*',
27
+ 'LICENSE',
28
+ 'rapidyaml.gemspec'
29
+ ].reject { |f| File.directory?(f) }
30
+
31
+ spec.extensions = ['ext/rapidyaml/extconf.rb']
32
+
33
+ spec.add_development_dependency 'minitest', '~> 5.0'
34
+ spec.add_development_dependency 'rake', '~> 13.0'
35
+ spec.add_development_dependency 'rake-compiler', '~> 1.2'
36
+ spec.add_development_dependency 'rake-compiler-dock', '~> 1.4'
37
+ spec.add_development_dependency 'rice', '~> 4.0'
38
+ spec.add_development_dependency 'rubocop', '> 1.86.0'
39
+ spec.add_development_dependency 'rubocop-minitest', '> 0.39.0'
40
+ end
metadata ADDED
@@ -0,0 +1,162 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rapidyaml
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: aarch64-linux
6
+ authors:
7
+ - Durable Programming LLC
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-01 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: minitest
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '5.0'
19
+ type: :development
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '5.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: rake
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '13.0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '13.0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: rake-compiler
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.2'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.2'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rake-compiler-dock
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.4'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.4'
68
+ - !ruby/object:Gem::Dependency
69
+ name: rice
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '4.0'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '4.0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rubocop
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">"
87
+ - !ruby/object:Gem::Version
88
+ version: 1.86.0
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">"
94
+ - !ruby/object:Gem::Version
95
+ version: 1.86.0
96
+ - !ruby/object:Gem::Dependency
97
+ name: rubocop-minitest
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">"
101
+ - !ruby/object:Gem::Version
102
+ version: 0.39.0
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">"
108
+ - !ruby/object:Gem::Version
109
+ version: 0.39.0
110
+ description: Ruby bindings to rapidyaml (ryml), a C++ YAML library. Exposes a Psych-compatible
111
+ API so it can be used as a drop-in replacement.
112
+ email:
113
+ - commercial@durableprogramming.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - LICENSE
119
+ - ext/rapidyaml/extconf.rb
120
+ - ext/rapidyaml/rapidyaml.cpp
121
+ - ext/rapidyaml/ryml_all.hpp
122
+ - lib/rapidyaml.rb
123
+ - lib/rapidyaml/3.0/rapidyaml.so
124
+ - lib/rapidyaml/3.1/rapidyaml.so
125
+ - lib/rapidyaml/3.2/rapidyaml.so
126
+ - lib/rapidyaml/3.3/rapidyaml.so
127
+ - lib/rapidyaml/3.4/rapidyaml.so
128
+ - lib/rapidyaml/4.0/rapidyaml.so
129
+ - lib/rapidyaml/core_ext.rb
130
+ - lib/rapidyaml/core_ext/object.rb
131
+ - lib/rapidyaml/core_ext/yaml.rb
132
+ - lib/rapidyaml/version.rb
133
+ - rapidyaml.gemspec
134
+ homepage: https://github.com/durableprogramming/rapidyaml-rb
135
+ licenses:
136
+ - MIT
137
+ metadata:
138
+ homepage_uri: https://github.com/durableprogramming/rapidyaml-rb
139
+ source_code_uri: https://github.com/durableprogramming/rapidyaml-rb
140
+ changelog_uri: https://github.com/durableprogramming/rapidyaml-rb/blob/main/CHANGELOG.md
141
+ rubygems_mfa_required: 'true'
142
+ rdoc_options: []
143
+ require_paths:
144
+ - lib
145
+ required_ruby_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '3.0'
150
+ - - "<"
151
+ - !ruby/object:Gem::Version
152
+ version: 4.1.dev
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ requirements: []
159
+ rubygems_version: 4.0.6
160
+ specification_version: 4
161
+ summary: Fast YAML parsing and emission via rapidyaml — drop-in Psych replacement
162
+ test_files: []