Skip to content

Commit 843195b

Browse files
authored
Merge pull request #641 from byroot/reduce-ci
Reduce ci
2 parents 937c8d2 + 2c43b7e commit 843195b

File tree

6 files changed

+58
-72
lines changed

6 files changed

+58
-72
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
uses: ruby/actions/.github/workflows/ruby_versions.yml@master
1111
with:
1212
engine: cruby-jruby
13-
min_version: 2.3
13+
min_version: 2.7
1414

1515
host:
1616
needs: ruby-versions
@@ -20,23 +20,17 @@ jobs:
2020
fail-fast: false
2121
matrix:
2222
os:
23-
- ubuntu-20.04
2423
- ubuntu-22.04
25-
- macos-12
2624
- macos-13
2725
- macos-14
2826
- windows-latest
2927
ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
3028
include:
3129
- { os: windows-latest , ruby: mswin } # ruby/ruby windows CI
32-
- { os: ubuntu-latest , ruby: jruby-9.3 } # Ruby 2.7
3330
- { os: ubuntu-latest , ruby: jruby-9.4 } # Ruby 3.1
3431
- { os: macos-latest , ruby: truffleruby-head }
3532
- { os: ubuntu-latest , ruby: truffleruby-head }
3633
exclude:
37-
- { os: macos-14, ruby: 2.3 }
38-
- { os: macos-14, ruby: 2.4 }
39-
- { os: macos-14, ruby: 2.5 }
4034
- { os: windows-latest, ruby: jruby }
4135
- { os: windows-latest, ruby: jruby-head }
4236

@@ -49,8 +43,6 @@ jobs:
4943
ruby-version: ${{ matrix.ruby }}
5044
apt-get: ragel
5145
brew: ragel
52-
# only needed for Ruby 2.3
53-
mingw: ragel
5446

5547
- run: |
5648
bundle config --without benchmark

CHANGES.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Changes
22

3+
* Bump required_ruby_version to 2.7.
4+
35
### 2024-10-24 (2.7.3)
46

57
* Numerous performance optimizations in `JSON.generate` and `JSON.dump` (up to 2 times faster).

json.gemspec

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
version = File.foreach(File.join(__dir__, "lib/json/version.rb")) do |line|
24
/^\s*VERSION\s*=\s*'(.*)'/ =~ line and break $1
35
end rescue nil
@@ -19,7 +21,7 @@ spec = Gem::Specification.new do |s|
1921
'wiki_uri' => 'https://github.com/ruby/json/wiki'
2022
}
2123

22-
s.required_ruby_version = Gem::Requirement.new(">= 2.3")
24+
s.required_ruby_version = Gem::Requirement.new(">= 2.7")
2325

2426
if java_ext
2527
s.description = "A JSON implementation as a JRuby extension."

json_pure.gemspec

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,52 @@
1+
# frozen_string_literal: true
2+
13
version = File.foreach(File.join(__dir__, "lib/json/version.rb")) do |line|
24
/^\s*VERSION\s*=\s*'(.*)'/ =~ line and break $1
35
end rescue nil
46

57
Gem::Specification.new do |s|
6-
s.name = "json_pure".freeze
8+
s.name = "json_pure"
79
s.version = version
810

9-
s.summary = "JSON Implementation for Ruby".freeze
10-
s.description = "This is a JSON implementation in pure Ruby.".freeze
11-
s.licenses = ["Ruby".freeze]
12-
s.authors = ["Florian Frank".freeze]
13-
s.email = "[email protected]".freeze
11+
s.summary = "JSON Implementation for Ruby"
12+
s.description = "This is a JSON implementation in pure Ruby."
13+
s.licenses = ["Ruby"]
14+
s.authors = ["Florian Frank"]
15+
s.email = "[email protected]"
1416

15-
s.extra_rdoc_files = ["README.md".freeze]
16-
s.rdoc_options = ["--title".freeze, "JSON implementation for ruby".freeze, "--main".freeze, "README.md".freeze]
17+
s.extra_rdoc_files = ["README.md"]
18+
s.rdoc_options = ["--title", "JSON implementation for ruby", "--main", "README.md"]
1719
s.files = [
18-
"CHANGES.md".freeze,
19-
"COPYING".freeze,
20-
"BSDL".freeze,
21-
"LEGAL".freeze,
22-
"README.md".freeze,
23-
"json_pure.gemspec".freeze,
24-
"lib/json.rb".freeze,
25-
"lib/json/add/bigdecimal.rb".freeze,
26-
"lib/json/add/complex.rb".freeze,
27-
"lib/json/add/core.rb".freeze,
28-
"lib/json/add/date.rb".freeze,
29-
"lib/json/add/date_time.rb".freeze,
30-
"lib/json/add/exception.rb".freeze,
31-
"lib/json/add/ostruct.rb".freeze,
32-
"lib/json/add/range.rb".freeze,
33-
"lib/json/add/rational.rb".freeze,
34-
"lib/json/add/regexp.rb".freeze,
35-
"lib/json/add/set.rb".freeze,
36-
"lib/json/add/struct.rb".freeze,
37-
"lib/json/add/symbol.rb".freeze,
38-
"lib/json/add/time.rb".freeze,
39-
"lib/json/common.rb".freeze,
40-
"lib/json/ext.rb".freeze,
41-
"lib/json/generic_object.rb".freeze,
42-
"lib/json/pure.rb".freeze,
43-
"lib/json/pure/generator.rb".freeze,
44-
"lib/json/pure/parser.rb".freeze,
45-
"lib/json/version.rb".freeze,
20+
"CHANGES.md",
21+
"COPYING",
22+
"BSDL",
23+
"LEGAL",
24+
"README.md",
25+
"json_pure.gemspec",
26+
"lib/json.rb",
27+
"lib/json/add/bigdecimal.rb",
28+
"lib/json/add/complex.rb",
29+
"lib/json/add/core.rb",
30+
"lib/json/add/date.rb",
31+
"lib/json/add/date_time.rb",
32+
"lib/json/add/exception.rb",
33+
"lib/json/add/ostruct.rb",
34+
"lib/json/add/range.rb",
35+
"lib/json/add/rational.rb",
36+
"lib/json/add/regexp.rb",
37+
"lib/json/add/set.rb",
38+
"lib/json/add/struct.rb",
39+
"lib/json/add/symbol.rb",
40+
"lib/json/add/time.rb",
41+
"lib/json/common.rb",
42+
"lib/json/ext.rb",
43+
"lib/json/generic_object.rb",
44+
"lib/json/pure.rb",
45+
"lib/json/pure/generator.rb",
46+
"lib/json/pure/parser.rb",
47+
"lib/json/version.rb",
4648
]
47-
s.homepage = "https://ruby.github.io/json".freeze
49+
s.homepage = "https://ruby.github.io/json"
4850
s.metadata = {
4951
'bug_tracker_uri' => 'https://github.com/ruby/json/issues',
5052
'changelog_uri' => 'https://github.com/ruby/json/blob/master/CHANGES.md',
@@ -54,5 +56,5 @@ Gem::Specification.new do |s|
5456
'wiki_uri' => 'https://github.com/ruby/json/wiki'
5557
}
5658

57-
s.required_ruby_version = Gem::Requirement.new(">= 2.3".freeze)
59+
s.required_ruby_version = Gem::Requirement.new(">= 2.7")
5860
end

lib/json/pure/generator.rb

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -333,24 +333,17 @@ def generate(obj)
333333
end
334334

335335
# Assumes !@ascii_only, !@script_safe
336-
if Regexp.method_defined?(:match?)
337-
private def fast_serialize_string(string, buf) # :nodoc:
338-
buf << '"'
339-
string = string.encode(::Encoding::UTF_8) unless string.encoding == ::Encoding::UTF_8
340-
raise GeneratorError, "source sequence is illegal/malformed utf-8" unless string.valid_encoding?
341-
342-
if /["\\\x0-\x1f]/n.match?(string)
343-
buf << string.gsub(/["\\\x0-\x1f]/n, MAP)
344-
else
345-
buf << string
346-
end
347-
buf << '"'
348-
end
349-
else
350-
# Ruby 2.3 compatibility
351-
private def fast_serialize_string(string, buf) # :nodoc:
352-
buf << string.to_json(self)
336+
private def fast_serialize_string(string, buf) # :nodoc:
337+
buf << '"'
338+
string = string.encode(::Encoding::UTF_8) unless string.encoding == ::Encoding::UTF_8
339+
raise GeneratorError, "source sequence is illegal/malformed utf-8" unless string.valid_encoding?
340+
341+
if /["\\\x0-\x1f]/n.match?(string)
342+
buf << string.gsub(/["\\\x0-\x1f]/n, MAP)
343+
else
344+
buf << string
353345
end
346+
buf << '"'
354347
end
355348

356349
# Return the value returned by method +name+.

lib/json/pure/parser.rb

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,10 @@ def convert_encoding(source)
161161
?u => nil,
162162
})
163163

164-
STR_UMINUS = ''.respond_to?(:-@)
165164
def parse_string
166165
if scan(STRING)
167166
return '' if self[1].empty?
168-
string = self[1].gsub(%r((?:\\[\\bfnrt"/]|(?:\\u(?:[A-Fa-f\d]{4}))+|\\[\x20-\xff]))n) do |c|
167+
string = self[1].gsub(%r{(?:\\[\\bfnrt"/]|(?:\\u(?:[A-Fa-f\d]{4}))+|\\[\x20-\xff])}n) do |c|
169168
if u = UNESCAPE_MAP[$&[1]]
170169
u
171170
else # \uXXXX
@@ -181,11 +180,7 @@ def parse_string
181180
string.force_encoding(::Encoding::UTF_8)
182181

183182
if @freeze
184-
if STR_UMINUS
185-
string = -string
186-
else
187-
string.freeze
188-
end
183+
string = -string
189184
end
190185

191186
if @create_additions and @match_string

0 commit comments

Comments
 (0)