oj_windows 3.16.15

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 (102) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +44 -0
  3. data/LICENSE +21 -0
  4. data/README.md +164 -0
  5. data/ext/oj_windows/buf.h +85 -0
  6. data/ext/oj_windows/cache.c +339 -0
  7. data/ext/oj_windows/cache.h +22 -0
  8. data/ext/oj_windows/cache8.c +105 -0
  9. data/ext/oj_windows/cache8.h +21 -0
  10. data/ext/oj_windows/circarray.c +64 -0
  11. data/ext/oj_windows/circarray.h +22 -0
  12. data/ext/oj_windows/code.c +214 -0
  13. data/ext/oj_windows/code.h +40 -0
  14. data/ext/oj_windows/compat.c +239 -0
  15. data/ext/oj_windows/custom.c +1074 -0
  16. data/ext/oj_windows/debug.c +126 -0
  17. data/ext/oj_windows/dump.c +1556 -0
  18. data/ext/oj_windows/dump.h +110 -0
  19. data/ext/oj_windows/dump_compat.c +901 -0
  20. data/ext/oj_windows/dump_leaf.c +162 -0
  21. data/ext/oj_windows/dump_object.c +710 -0
  22. data/ext/oj_windows/dump_strict.c +405 -0
  23. data/ext/oj_windows/encode.h +16 -0
  24. data/ext/oj_windows/err.c +57 -0
  25. data/ext/oj_windows/err.h +67 -0
  26. data/ext/oj_windows/extconf.rb +77 -0
  27. data/ext/oj_windows/fast.c +1710 -0
  28. data/ext/oj_windows/intern.c +325 -0
  29. data/ext/oj_windows/intern.h +22 -0
  30. data/ext/oj_windows/mem.c +320 -0
  31. data/ext/oj_windows/mem.h +53 -0
  32. data/ext/oj_windows/mimic_json.c +919 -0
  33. data/ext/oj_windows/object.c +726 -0
  34. data/ext/oj_windows/odd.c +245 -0
  35. data/ext/oj_windows/odd.h +43 -0
  36. data/ext/oj_windows/oj.c +2097 -0
  37. data/ext/oj_windows/oj.h +420 -0
  38. data/ext/oj_windows/parse.c +1317 -0
  39. data/ext/oj_windows/parse.h +113 -0
  40. data/ext/oj_windows/parser.c +1600 -0
  41. data/ext/oj_windows/parser.h +103 -0
  42. data/ext/oj_windows/rails.c +1484 -0
  43. data/ext/oj_windows/rails.h +18 -0
  44. data/ext/oj_windows/reader.c +222 -0
  45. data/ext/oj_windows/reader.h +137 -0
  46. data/ext/oj_windows/resolve.c +80 -0
  47. data/ext/oj_windows/resolve.h +12 -0
  48. data/ext/oj_windows/rxclass.c +144 -0
  49. data/ext/oj_windows/rxclass.h +26 -0
  50. data/ext/oj_windows/saj.c +675 -0
  51. data/ext/oj_windows/saj2.c +584 -0
  52. data/ext/oj_windows/saj2.h +23 -0
  53. data/ext/oj_windows/scp.c +187 -0
  54. data/ext/oj_windows/simd.h +47 -0
  55. data/ext/oj_windows/sparse.c +946 -0
  56. data/ext/oj_windows/stream_writer.c +329 -0
  57. data/ext/oj_windows/strict.c +189 -0
  58. data/ext/oj_windows/string_writer.c +517 -0
  59. data/ext/oj_windows/trace.c +72 -0
  60. data/ext/oj_windows/trace.h +55 -0
  61. data/ext/oj_windows/usual.c +1218 -0
  62. data/ext/oj_windows/usual.h +69 -0
  63. data/ext/oj_windows/util.c +136 -0
  64. data/ext/oj_windows/util.h +20 -0
  65. data/ext/oj_windows/val_stack.c +101 -0
  66. data/ext/oj_windows/val_stack.h +151 -0
  67. data/ext/oj_windows/validate.c +46 -0
  68. data/ext/oj_windows/wab.c +584 -0
  69. data/lib/oj/active_support_helper.rb +39 -0
  70. data/lib/oj/bag.rb +95 -0
  71. data/lib/oj/easy_hash.rb +52 -0
  72. data/lib/oj/error.rb +21 -0
  73. data/lib/oj/json.rb +188 -0
  74. data/lib/oj/mimic.rb +301 -0
  75. data/lib/oj/saj.rb +80 -0
  76. data/lib/oj/schandler.rb +143 -0
  77. data/lib/oj/state.rb +135 -0
  78. data/lib/oj/version.rb +4 -0
  79. data/lib/oj_windows/active_support_helper.rb +39 -0
  80. data/lib/oj_windows/bag.rb +95 -0
  81. data/lib/oj_windows/easy_hash.rb +52 -0
  82. data/lib/oj_windows/error.rb +21 -0
  83. data/lib/oj_windows/json.rb +188 -0
  84. data/lib/oj_windows/mimic.rb +301 -0
  85. data/lib/oj_windows/saj.rb +80 -0
  86. data/lib/oj_windows/schandler.rb +143 -0
  87. data/lib/oj_windows/state.rb +135 -0
  88. data/lib/oj_windows/version.rb +4 -0
  89. data/lib/oj_windows.rb +15 -0
  90. data/pages/Advanced.md +38 -0
  91. data/pages/Compatibility.md +49 -0
  92. data/pages/Custom.md +37 -0
  93. data/pages/Encoding.md +61 -0
  94. data/pages/InstallOptions.md +20 -0
  95. data/pages/JsonGem.md +60 -0
  96. data/pages/Modes.md +94 -0
  97. data/pages/Options.md +339 -0
  98. data/pages/Parser.md +134 -0
  99. data/pages/Rails.md +85 -0
  100. data/pages/Security.md +43 -0
  101. data/pages/WAB.md +12 -0
  102. metadata +242 -0
data/pages/Parser.md ADDED
@@ -0,0 +1,134 @@
1
+ # Oj::Parser API
2
+
3
+ The `Oj::Parser` API provides high-performance JSON parsing with isolated configuration.
4
+
5
+ ## Overview
6
+
7
+ Unlike `Oj.load()` which uses global default options, `Oj::Parser` allows creating
8
+ separate parser instances, each with its own configuration. This provides:
9
+
10
+ - **No option leakage** between different use cases
11
+ - **Better performance** by avoiding per-call option processing
12
+ - **Cleaner API** with method-based option setting
13
+
14
+ ## Creating Parsers
15
+
16
+ ```ruby
17
+ require 'oj_windows'
18
+
19
+ # Validation parser
20
+ validator = Oj::Parser.new(:validate)
21
+
22
+ # Callback parser (SAJ-style)
23
+ saj_parser = Oj::Parser.new(:saj)
24
+
25
+ # Object builder parser
26
+ usual_parser = Oj::Parser.new(:usual)
27
+ ```
28
+
29
+ ## Parser Types
30
+
31
+ ### :validate
32
+
33
+ Validates JSON without building Ruby objects. Fastest option when you only need
34
+ to check if JSON is well-formed.
35
+
36
+ ```ruby
37
+ parser = Oj::Parser.new(:validate)
38
+ parser.parse('{"valid": true}') # Returns nil, no exception = valid
39
+ ```
40
+
41
+ ### :saj (Callback)
42
+
43
+ Provides callbacks for each JSON element. Compatible with `Oj::Saj` handlers.
44
+
45
+ ```ruby
46
+ class MyHandler < Oj::Saj
47
+ def hash_start(key); end
48
+ def hash_end(key); end
49
+ def array_start(key); end
50
+ def array_end(key); end
51
+ def add_value(value, key); end
52
+ end
53
+
54
+ parser = Oj::Parser.new(:saj)
55
+ parser.handler = MyHandler.new
56
+ parser.parse(json_string)
57
+ ```
58
+
59
+ ### :usual
60
+
61
+ Builds Ruby objects from JSON. The most common parser type.
62
+
63
+ ```ruby
64
+ parser = Oj::Parser.new(:usual)
65
+ parser.symbol_keys = true
66
+ parser.cache_keys = true
67
+
68
+ data = parser.parse('{"name": "test"}')
69
+ # => {:name => "test"}
70
+ ```
71
+
72
+ ## Configuration Options
73
+
74
+ Set options as methods on the parser instance:
75
+
76
+ ```ruby
77
+ parser = Oj::Parser.new(:usual)
78
+ parser.symbol_keys = true # Use Symbol keys instead of String
79
+ parser.cache_keys = true # Cache frequently used keys
80
+ parser.cache_strings = 6 # Cache strings up to length 6
81
+ parser.create_id = '^o' # Object creation identifier
82
+ ```
83
+
84
+ ## Performance
85
+
86
+ Benchmarks on Windows with Ruby 3.4.8 MSVC (50,000 iterations):
87
+
88
+ ### Validation
89
+ ```
90
+ System time (secs) rate (ops/sec)
91
+ ------------------- ----------- --------------
92
+ Oj::Saj.none 0.087 575904.833
93
+ Oj::Parser.validate 0.093 535818.388
94
+ ```
95
+
96
+ ### Callback (SAJ)
97
+ ```
98
+ System time (secs) rate (ops/sec)
99
+ -------------- ----------- --------------
100
+ Oj::Parser.saj 0.623 80316.627
101
+ Oj::Saj.all 0.893 55984.415
102
+ ```
103
+
104
+ `Oj::Parser.new(:saj)` is **1.43x** faster than `Oj.saj_parse`.
105
+
106
+ ### Parse to Primitives
107
+ ```
108
+ System time (secs) rate (ops/sec)
109
+ ---------------- ----------- --------------
110
+ Oj::Parser.usual 0.329 152133.829
111
+ JSON::Ext 0.337 148264.387
112
+ Oj::strict_load 0.528 94769.267
113
+ ```
114
+
115
+ `Oj::Parser.new(:usual)` is **1.03x** faster than JSON::Ext.
116
+
117
+ ### Object Parsing
118
+ ```
119
+ System time (secs) rate (ops/sec)
120
+ ---------------- ----------- --------------
121
+ Oj::Parser.usual 0.054 921939.392
122
+ JSON::Ext 0.076 656601.405
123
+ Oj::compat_load 0.142 352839.974
124
+ ```
125
+
126
+ `Oj::Parser.new(:usual)` is **1.40x** faster than JSON::Ext and
127
+ **2.61x** faster than `Oj.compat_load`.
128
+
129
+ ## Summary
130
+
131
+ On Windows MSVC Ruby 3.4.8, `Oj::Parser` provides:
132
+ - Up to **2.6x faster** parsing than legacy Oj methods
133
+ - Isolated configuration per parser instance
134
+ - Better memory efficiency through caching
data/pages/Rails.md ADDED
@@ -0,0 +1,85 @@
1
+ # Rails Integration
2
+
3
+ `oj_windows` provides seamless integration with Rails and ActiveSupport on Windows MSVC Ruby.
4
+
5
+ ## Quick Start
6
+
7
+ Add this to a Rails initializer to replace Rails' JSON handling with `oj_windows`:
8
+
9
+ ```ruby
10
+ require 'oj_windows'
11
+
12
+ Oj.optimize_rails()
13
+ ```
14
+
15
+ This single call:
16
+ - Sets `oj_windows` as the JSON encoder
17
+ - Sets `oj_windows` as the JSON decoder
18
+ - Optimizes common Rails types
19
+ - Mimics the JSON gem interface
20
+
21
+ ## Manual Setup
22
+
23
+ For more control, configure each component separately:
24
+
25
+ ```ruby
26
+ require 'oj_windows'
27
+
28
+ Oj::Rails.set_encoder() # Use Oj for encoding
29
+ Oj::Rails.set_decoder() # Use Oj for decoding
30
+ Oj::Rails.optimize() # Optimize common types
31
+ Oj::Rails.mimic_JSON() # Mimic JSON gem interface
32
+ ```
33
+
34
+ ## Optimized Types
35
+
36
+ When `Oj::Rails.optimize()` is called, these types use fast native encoding:
37
+
38
+ | Type | Description |
39
+ |------|-------------|
40
+ | Array | Ruby arrays |
41
+ | BigDecimal | Arbitrary precision decimals |
42
+ | Float | Floating point numbers |
43
+ | Hash | Ruby hashes |
44
+ | Range | Range objects |
45
+ | Regexp | Regular expressions |
46
+ | Time | Time objects |
47
+ | ActiveSupport::TimeWithZone | Rails time zones |
48
+ | ActionController::Parameters | Controller params |
49
+ | ActiveRecord::Base subclasses | Model instances |
50
+
51
+ ## ActiveSupport Globals
52
+
53
+ `oj_windows` honors these ActiveSupport encoding globals:
54
+
55
+ ```ruby
56
+ ActiveSupport::JSON::Encoding.use_standard_json_time_format
57
+ ActiveSupport::JSON::Encoding.escape_html_entities_in_json
58
+ ActiveSupport::JSON::Encoding.time_precision
59
+ ActiveSupport::JSON::Encoding.json_encoder
60
+ ```
61
+
62
+ ## Verifying Oj is Active
63
+
64
+ To confirm `oj_windows` is handling JSON encoding, enable tracing:
65
+
66
+ ```ruby
67
+ require 'oj_windows'
68
+
69
+ Oj.default_options = { trace: true }
70
+ Oj.optimize_rails()
71
+
72
+ Time.now.to_json # Will output trace information
73
+ ```
74
+
75
+ ## Notes
76
+
77
+ 1. **Float Precision**: Optimized floats use 16 significant digits (Ruby's json gem may use 16 or 17 depending on value)
78
+
79
+ 2. **Hash Key Collisions**: Optimized hashes don't check for duplicate keys after `to_s()` conversion
80
+
81
+ 3. **Rails Mode**: Calling `Oj.optimize_rails()` doesn't change the default Oj mode. To also use Rails mode for direct Oj calls:
82
+
83
+ ```ruby
84
+ Oj.default_options = { mode: :rails }
85
+ ```
data/pages/Security.md ADDED
@@ -0,0 +1,43 @@
1
+ # Security Considerations
2
+
3
+ When parsing JSON from untrusted sources, certain `oj_windows` options should be used with caution.
4
+
5
+ ## Potential Vulnerabilities
6
+
7
+ ### Symbol Keys
8
+ The `:symbol_keys` option converts JSON keys to Ruby Symbols. In Ruby versions before 2.2, Symbols are not garbage collected, which could lead to memory exhaustion from malicious input.
9
+
10
+ ### Auto-Define Classes
11
+ The `:auto_define` option automatically creates Ruby classes from JSON. While useful during development, this can exhaust memory if an attacker sends JSON with many unique class names.
12
+
13
+ ## Safe Parsing
14
+
15
+ For untrusted input, use `Oj.safe_load()` which applies the strictest, safest options:
16
+
17
+ ```ruby
18
+ require 'oj_windows'
19
+
20
+ # Safe parsing of untrusted JSON
21
+ data = Oj.safe_load(untrusted_json_string)
22
+ ```
23
+
24
+ ## Best Practices
25
+
26
+ 1. **Use `safe_load()` for untrusted input** - applies safest defaults
27
+ 2. **Avoid `:symbol_keys` with untrusted data** - prevents Symbol table exhaustion
28
+ 3. **Disable `:auto_define` in production** - prevents arbitrary class creation
29
+ 4. **Validate parsed data** - always validate structure and types after parsing
30
+ 5. **Set `:max_nesting`** - limit depth to prevent stack overflow attacks
31
+
32
+ ## Object Mode Considerations
33
+
34
+ In `:object` mode, `oj_windows` can deserialize Ruby objects from JSON. While no methods are called during deserialization, you should always validate the resulting objects before using them.
35
+
36
+ ```ruby
37
+ # Safe: strict mode only creates native JSON types
38
+ data = Oj.strict_load(json_string)
39
+
40
+ # Caution: object mode creates Ruby objects
41
+ obj = Oj.object_load(json_string)
42
+ # Validate obj before using
43
+ ```
data/pages/WAB.md ADDED
@@ -0,0 +1,12 @@
1
+ # WAB mode
2
+
3
+ The `:wab` mode ignores all options except the indent option. Performance of
4
+ this mode is slightly faster than the :strict and :null modes. It is designed for Web Application Builder (WAB) style data exchange.
5
+
6
+ Options other than the indentation are not supported since the encoding and
7
+ formats are defined by the API that is used to encode data being passed from
8
+ one component in a WAB system and allowing an option that would break the
9
+ data exchange is best not supported.
10
+
11
+ The mode encodes like the strict mode except the URI, Time, WAB::UUID, and
12
+ BigDecimal are supported.
metadata ADDED
@@ -0,0 +1,242 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: oj_windows
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.16.15
5
+ platform: ruby
6
+ authors:
7
+ - tigel
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: bigdecimal
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '3.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '3.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: ostruct
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0.2'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0.2'
40
+ - !ruby/object:Gem::Dependency
41
+ name: minitest
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '5'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '5'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rake-compiler
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0.9'
61
+ - - "<"
62
+ - !ruby/object:Gem::Version
63
+ version: '2.0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0.9'
71
+ - - "<"
72
+ - !ruby/object:Gem::Version
73
+ version: '2.0'
74
+ - !ruby/object:Gem::Dependency
75
+ name: test-unit
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '3.0'
81
+ type: :development
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '3.0'
88
+ description: oj_windows is a Windows-exclusive fork of the Oj gem, optimized for Ruby
89
+ compiled with MSVC (Visual Studio). Provides fast JSON parsing/serialization with
90
+ full Rails and JSON gem compatibility. Requires Ruby 3.4+ built with MSVC toolchain.
91
+ email: tigel-agm@tigel.com
92
+ executables: []
93
+ extensions:
94
+ - ext/oj_windows/extconf.rb
95
+ extra_rdoc_files:
96
+ - CHANGELOG.md
97
+ - LICENSE
98
+ - README.md
99
+ - pages/Advanced.md
100
+ - pages/Compatibility.md
101
+ - pages/Custom.md
102
+ - pages/Encoding.md
103
+ - pages/InstallOptions.md
104
+ - pages/JsonGem.md
105
+ - pages/Modes.md
106
+ - pages/Options.md
107
+ - pages/Parser.md
108
+ - pages/Rails.md
109
+ - pages/Security.md
110
+ - pages/WAB.md
111
+ files:
112
+ - CHANGELOG.md
113
+ - LICENSE
114
+ - README.md
115
+ - ext/oj_windows/buf.h
116
+ - ext/oj_windows/cache.c
117
+ - ext/oj_windows/cache.h
118
+ - ext/oj_windows/cache8.c
119
+ - ext/oj_windows/cache8.h
120
+ - ext/oj_windows/circarray.c
121
+ - ext/oj_windows/circarray.h
122
+ - ext/oj_windows/code.c
123
+ - ext/oj_windows/code.h
124
+ - ext/oj_windows/compat.c
125
+ - ext/oj_windows/custom.c
126
+ - ext/oj_windows/debug.c
127
+ - ext/oj_windows/dump.c
128
+ - ext/oj_windows/dump.h
129
+ - ext/oj_windows/dump_compat.c
130
+ - ext/oj_windows/dump_leaf.c
131
+ - ext/oj_windows/dump_object.c
132
+ - ext/oj_windows/dump_strict.c
133
+ - ext/oj_windows/encode.h
134
+ - ext/oj_windows/err.c
135
+ - ext/oj_windows/err.h
136
+ - ext/oj_windows/extconf.rb
137
+ - ext/oj_windows/fast.c
138
+ - ext/oj_windows/intern.c
139
+ - ext/oj_windows/intern.h
140
+ - ext/oj_windows/mem.c
141
+ - ext/oj_windows/mem.h
142
+ - ext/oj_windows/mimic_json.c
143
+ - ext/oj_windows/object.c
144
+ - ext/oj_windows/odd.c
145
+ - ext/oj_windows/odd.h
146
+ - ext/oj_windows/oj.c
147
+ - ext/oj_windows/oj.h
148
+ - ext/oj_windows/parse.c
149
+ - ext/oj_windows/parse.h
150
+ - ext/oj_windows/parser.c
151
+ - ext/oj_windows/parser.h
152
+ - ext/oj_windows/rails.c
153
+ - ext/oj_windows/rails.h
154
+ - ext/oj_windows/reader.c
155
+ - ext/oj_windows/reader.h
156
+ - ext/oj_windows/resolve.c
157
+ - ext/oj_windows/resolve.h
158
+ - ext/oj_windows/rxclass.c
159
+ - ext/oj_windows/rxclass.h
160
+ - ext/oj_windows/saj.c
161
+ - ext/oj_windows/saj2.c
162
+ - ext/oj_windows/saj2.h
163
+ - ext/oj_windows/scp.c
164
+ - ext/oj_windows/simd.h
165
+ - ext/oj_windows/sparse.c
166
+ - ext/oj_windows/stream_writer.c
167
+ - ext/oj_windows/strict.c
168
+ - ext/oj_windows/string_writer.c
169
+ - ext/oj_windows/trace.c
170
+ - ext/oj_windows/trace.h
171
+ - ext/oj_windows/usual.c
172
+ - ext/oj_windows/usual.h
173
+ - ext/oj_windows/util.c
174
+ - ext/oj_windows/util.h
175
+ - ext/oj_windows/val_stack.c
176
+ - ext/oj_windows/val_stack.h
177
+ - ext/oj_windows/validate.c
178
+ - ext/oj_windows/wab.c
179
+ - lib/oj/active_support_helper.rb
180
+ - lib/oj/bag.rb
181
+ - lib/oj/easy_hash.rb
182
+ - lib/oj/error.rb
183
+ - lib/oj/json.rb
184
+ - lib/oj/mimic.rb
185
+ - lib/oj/saj.rb
186
+ - lib/oj/schandler.rb
187
+ - lib/oj/state.rb
188
+ - lib/oj/version.rb
189
+ - lib/oj_windows.rb
190
+ - lib/oj_windows/active_support_helper.rb
191
+ - lib/oj_windows/bag.rb
192
+ - lib/oj_windows/easy_hash.rb
193
+ - lib/oj_windows/error.rb
194
+ - lib/oj_windows/json.rb
195
+ - lib/oj_windows/mimic.rb
196
+ - lib/oj_windows/saj.rb
197
+ - lib/oj_windows/schandler.rb
198
+ - lib/oj_windows/state.rb
199
+ - lib/oj_windows/version.rb
200
+ - pages/Advanced.md
201
+ - pages/Compatibility.md
202
+ - pages/Custom.md
203
+ - pages/Encoding.md
204
+ - pages/InstallOptions.md
205
+ - pages/JsonGem.md
206
+ - pages/Modes.md
207
+ - pages/Options.md
208
+ - pages/Parser.md
209
+ - pages/Rails.md
210
+ - pages/Security.md
211
+ - pages/WAB.md
212
+ homepage: https://github.com/tigel-agm/oj_windows
213
+ licenses:
214
+ - MIT
215
+ metadata:
216
+ bug_tracker_uri: https://github.com/tigel-agm/oj_windows/issues
217
+ changelog_uri: https://github.com/tigel-agm/oj_windows/blob/main/CHANGELOG.md
218
+ documentation_uri: https://github.com/tigel-agm/oj_windows/blob/main/README.md
219
+ source_code_uri: https://github.com/tigel-agm/oj_windows
220
+ rubygems_mfa_required: 'true'
221
+ rdoc_options:
222
+ - "--title"
223
+ - oj_windows
224
+ - "--main"
225
+ - README.md
226
+ require_paths:
227
+ - lib
228
+ required_ruby_version: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - ">="
231
+ - !ruby/object:Gem::Version
232
+ version: '3.4'
233
+ required_rubygems_version: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ requirements: []
239
+ rubygems_version: 3.6.9
240
+ specification_version: 4
241
+ summary: High-performance JSON parser for Windows MSVC Ruby
242
+ test_files: []