json 2.7.3.rc1-java → 2.7.4-java

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b87f414d45847aa0cd9ee355316f1cb5797cbbffee43a09bbf0dc5ac297a5fd5
4
- data.tar.gz: 3ace1c569f649ce11e07c837664844ba5110c35c75698ca5f0160ae5b21784ed
3
+ metadata.gz: f61f1f7cf84e855d4f7a7b56d7a1ec807bf1f6f0ba418984b94191bbd15a8db1
4
+ data.tar.gz: b81dba38d7eb8dc893cb8107dcc42e829b9b21d0595bdd660f3203db607522cd
5
5
  SHA512:
6
- metadata.gz: 8f7f97e9ca79cfd0bc8396f13b67e85e6af439697227c52a2ca96dbd4a2b6c2511385a7c0ebf4cb821207b6abb9a9ddd0a810d06c5465b14f19c7262fc28025c
7
- data.tar.gz: 2d87eec49d0157c1e6c3d7093340534c51dc068baac746988264dca9cd674f6e01baf950985eaa527c73670565beb77ed929f08194a2876a150bfdc7264ccdcf
6
+ metadata.gz: 97ef406dd7d1506134ee9d87d7eec34cbf5377d2485ffb975d3262731bb65ea3370098cd395df07bd1ce96a0adad7b79f312666142f9216b5c31899df640768c
7
+ data.tar.gz: aa59a3978e28cda2f8a62b7b51dc3a8dbb39b4dc68a32789f457824e3fb749326635536ff2dcb30b8a70b6591d08bfb041d2ca4e93446e3e4e77a2a441ee0783
data/CHANGES.md CHANGED
@@ -1,6 +1,15 @@
1
1
  # Changes
2
2
 
3
- * Numerous performance optimizations in `JSON.generate` and `JSON.dump`.
3
+ ### 2024-10-25 (2.7.4)
4
+
5
+ * Workaround a bug in 3.4.8 and older https://github.com/rubygems/rubygems/pull/6490.
6
+ This bug would cause some gems with native extension to fail during compilation.
7
+ * Workaround different versions of `json` and `json_pure` being loaded (not officially supported).
8
+ * Make `json_pure` Ractor compatible.
9
+
10
+ ### 2024-10-24 (2.7.3)
11
+
12
+ * Numerous performance optimizations in `JSON.generate` and `JSON.dump` (up to 2 times faster).
4
13
  * Limit the size of ParserError exception messages, only include up to 32 bytes of the unparseable source.
5
14
  * Fix json-pure's `Object#to_json` to accept non state arguments
6
15
  * Fix multiline comment support in `json-pure`.
data/lib/json/ext.rb CHANGED
@@ -15,9 +15,6 @@ module JSON
15
15
  else
16
16
  require 'json/ext/parser'
17
17
  require 'json/ext/generator'
18
- unless RUBY_ENGINE == 'jruby'
19
- require 'json/ext/generator/state'
20
- end
21
18
  $DEBUG and warn "Using Ext extension for JSON."
22
19
  JSON.parser = Parser
23
20
  JSON.generator = Generator
@@ -50,8 +50,7 @@ module JSON
50
50
  # Convert a UTF8 encoded Ruby string _string_ to a JSON string, encoded with
51
51
  # UTF16 big endian characters as \u????, and return it.
52
52
  def utf8_to_json(string, script_safe = false) # :nodoc:
53
- string = string.dup
54
- string.force_encoding(::Encoding::ASCII_8BIT)
53
+ string = string.b
55
54
  if script_safe
56
55
  string.gsub!(SCRIPT_SAFE_ESCAPE_PATTERN) { SCRIPT_SAFE_MAP[$&] || $& }
57
56
  else
@@ -62,8 +61,7 @@ module JSON
62
61
  end
63
62
 
64
63
  def utf8_to_json_ascii(string, script_safe = false) # :nodoc:
65
- string = string.dup
66
- string.force_encoding(::Encoding::ASCII_8BIT)
64
+ string = string.b
67
65
  map = script_safe ? SCRIPT_SAFE_MAP : MAP
68
66
  string.gsub!(/[\/"\\\x0-\x1f]/n) { map[$&] || $& }
69
67
  string.gsub!(/(
@@ -409,16 +407,14 @@ module JSON
409
407
 
410
408
  def json_transform(state)
411
409
  delim = ",#{state.object_nl}"
412
- result = "{#{state.object_nl}"
413
- result = result.dup if result.frozen? # RUBY_VERSION < 3.0
410
+ result = +"{#{state.object_nl}"
414
411
  depth = state.depth += 1
415
412
  first = true
416
413
  indent = !state.object_nl.empty?
417
414
  each { |key, value|
418
415
  result << delim unless first
419
416
  result << state.indent * depth if indent
420
- result = "#{result}#{key.to_s.to_json(state)}#{state.space_before}:#{state.space}"
421
- result = result.dup if result.frozen? # RUBY_VERSION < 3.0
417
+ result = +"#{result}#{key.to_s.to_json(state)}#{state.space_before}:#{state.space}"
422
418
  if state.strict? && !(false == value || true == value || nil == value || String === value || Array === value || Hash === value || Integer === value || Float === value)
423
419
  raise GeneratorError, "#{value.class} not allowed in JSON"
424
420
  elsif value.respond_to?(:to_json)
@@ -148,25 +148,25 @@ module JSON
148
148
  end
149
149
 
150
150
  # Unescape characters in strings.
151
- UNESCAPE_MAP = Hash.new { |h, k| h[k] = k.chr }
152
- UNESCAPE_MAP.update({
153
- ?" => '"',
154
- ?\\ => '\\',
155
- ?/ => '/',
156
- ?b => "\b",
157
- ?f => "\f",
158
- ?n => "\n",
159
- ?r => "\r",
160
- ?t => "\t",
161
- ?u => nil,
162
- })
151
+ UNESCAPE_MAP = {
152
+ '"' => '"',
153
+ '\\' => '\\',
154
+ '/' => '/',
155
+ 'b' => "\b",
156
+ 'f' => "\f",
157
+ 'n' => "\n",
158
+ 'r' => "\r",
159
+ 't' => "\t",
160
+ 'u' => nil,
161
+ }.freeze
163
162
 
164
163
  STR_UMINUS = ''.respond_to?(:-@)
165
164
  def parse_string
166
165
  if scan(STRING)
167
166
  return '' if self[1].empty?
168
- string = self[1].gsub(%r((?:\\[\\bfnrt"/]|(?:\\u(?:[A-Fa-f\d]{4}))+|\\[\x20-\xff]))n) do |c|
169
- if u = UNESCAPE_MAP[$&[1]]
167
+ string = self[1].gsub(%r{(?:\\[\\bfnrt"/]|(?:\\u(?:[A-Fa-f\d]{4}))+|\\[\x20-\xff])}n) do |c|
168
+ k = $&[1]
169
+ if u = UNESCAPE_MAP.fetch(k) { k.chr }
170
170
  u
171
171
  else # \uXXXX
172
172
  bytes = ''.b
data/lib/json/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JSON
4
- VERSION = '2.7.3.rc1'
4
+ VERSION = '2.7.4'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.3.rc1
4
+ version: 2.7.4
5
5
  platform: java
6
6
  authors:
7
7
  - Daniel Luz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-23 00:00:00.000000000 Z
11
+ date: 2024-10-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A JSON implementation as a JRuby extension.
14
14
  email: dev+ruby@mernen.com
@@ -71,9 +71,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
71
  version: '2.3'
72
72
  required_rubygems_version: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">"
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 1.3.1
76
+ version: '0'
77
77
  requirements: []
78
78
  rubygems_version: 3.3.26
79
79
  signing_key: