Skip to content

chore(deps): bump the ruby-dependencies group across 1 directory with 10 updates - #91

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/bundler/ruby-dependencies-580493cf98
Open

chore(deps): bump the ruby-dependencies group across 1 directory with 10 updates#91
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/bundler/ruby-dependencies-580493cf98

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 7, 2026

Copy link
Copy Markdown
Contributor

Bumps the ruby-dependencies group with 10 updates in the / directory:

Package From To
rbs 4.0.3 4.2.0
rubocop 1.88.0 1.90.0
rubocop-performance 1.26.1 1.27.0
simplecov 0.22.0 1.1.1
steep 2.0.0 2.1.0
yard 0.9.44 0.9.45
async 2.39.0 2.45.1
async-http 0.95.1 0.103.0
opentelemetry-api 1.10.0 1.11.0
sqlite3 2.9.5 2.9.6

Updates rbs from 4.0.3 to 4.2.0

Release notes

Sourced from rbs's releases.

4.2.0

Release note

RBS 4.2 accepts non-ASCII characters in identifiers. Method names, instance variable names and parameter names can be written in any script, and other names may contain non-ASCII characters as long as they start with an ASCII letter, which is what tells a constant from a method name.

class Greeter
  @挨拶: String
def こんにちは: () -> String
end

The parser and the AST support Ruby-style ... forwarding parameters in method types, but the layers built on top of the parser do not yet. The syntax is disabled by default in 4.2 and is not enabled by the public RBS::Parser API, so it cannot be used in regular RBS signatures yet.

Ruby 3.2 reached EOL on 2026-04-01, and this release requires Ruby 3.3 or later. Applications on 3.2 stay on the 4.1 line.

Signature updates

Updated classes/modules/methods: ERB, ERB::DefMethod, IO, Monitor, MonitorMixin::ConditionVariable, Singleton, StringIO, Zlib::GzipFile, Zlib::GzipWriter

  • Replace deterministic untyped return types with concrete types (#2966)
  • Declare Singleton::SingletonInstanceMethods (#3037)

Language updates

  • Gate forwarding parameter syntax behind parser option (#3087)
  • Support non-ASCII identifiers (#3082)
  • Support forwarding parameters in method types (#3042)

Library changes

  • Drop runtime support for Ruby 3.2 (#3095)
  • Stop the lexer reading past the end of a byte_range (#3040)
  • Exclude CR from comment tokens to fix an off-by-one Location#end_line on CRLF files (#3069)
  • Handle the NULL parser in the WebAssembly shim (#3085)
  • Reject a byte position the lexer cannot start on (#3083)
  • Don't use Clang nullability qualifiers in strict ISO C mode (#3074)
  • Avoid eagerly inspecting call traces in type assertions (#3073)
  • Fix TypeParam.rename to substitute variables in bounds and default types (#3068)
  • Extract per-declaration type param alignment into entry-level align_params (#3070)
  • Align type params across declarations in module-self types and superclass validation (#3067)
  • Build the wasm module with -DNDEBUG (#3066)
  • Rename NODISCARD macro to RBS_NODISCARD (#3065)

Miscellaneous

  • Omit forwarding parameter tests on JRuby (#3092)
  • Skip JSON 2-only tests with JSON 3 (#3084)
  • Pin GitHub Actions to commit hashes (#3020)

... (truncated)

Changelog

Sourced from rbs's changelog.

4.2.0 (2026-08-23)

RBS 4.2 accepts non-ASCII characters in identifiers. Method names, instance variable names and parameter names can be written in any script, and other names may contain non-ASCII characters as long as they start with an ASCII letter, which is what tells a constant from a method name.

class Greeter
  @挨拶: String
def こんにちは: () -> String
end

The parser and the AST support Ruby-style ... forwarding parameters in method types, but the layers built on top of the parser do not yet. The syntax is disabled by default in 4.2 and is not enabled by the public RBS::Parser API, so it cannot be used in regular RBS signatures yet.

Ruby 3.2 reached EOL on 2026-04-01, and this release requires Ruby 3.3 or later. Applications on 3.2 stay on the 4.1 line.

Signature updates

Updated classes/modules/methods: ERB, ERB::DefMethod, IO, Monitor, MonitorMixin::ConditionVariable, Singleton, StringIO, Zlib::GzipFile, Zlib::GzipWriter

  • Replace deterministic untyped return types with concrete types (#2966)
  • Declare Singleton::SingletonInstanceMethods (#3037)

Language updates

  • Gate forwarding parameter syntax behind parser option (#3087)
  • Support non-ASCII identifiers (#3082)
  • Support forwarding parameters in method types (#3042)

Library changes

  • Drop runtime support for Ruby 3.2 (#3095)
  • Stop the lexer reading past the end of a byte_range (#3040)
  • Exclude CR from comment tokens to fix an off-by-one Location#end_line on CRLF files (#3069)
  • Handle the NULL parser in the WebAssembly shim (#3085)
  • Reject a byte position the lexer cannot start on (#3083)
  • Don't use Clang nullability qualifiers in strict ISO C mode (#3074)
  • Avoid eagerly inspecting call traces in type assertions (#3073)
  • Fix TypeParam.rename to substitute variables in bounds and default types (#3068)
  • Extract per-declaration type param alignment into entry-level align_params (#3070)
  • Align type params across declarations in module-self types and superclass validation (#3067)
  • Build the wasm module with -DNDEBUG (#3066)
  • Rename NODISCARD macro to RBS_NODISCARD (#3065)

Miscellaneous

  • Omit forwarding parameter tests on JRuby (#3092)
  • Skip JSON 2-only tests with JSON 3 (#3084)
  • Pin GitHub Actions to commit hashes (#3020)

... (truncated)

Commits
  • 8aee3b6 Merge pull request #3096 from ruby/claude/4-2-release-tasks-h6thzx
  • 6f97c87 Version 4.2.0
  • 03d4281 Merge pull request #2966 from zonuexe/fix/concrete-untyped-returns
  • bdecacf Make putc signatures type-preserving overloads
  • 69539d6 Replace deterministic untyped return types with concrete types
  • c9957e4 Merge pull request #3037 from infiton/rxc/declare-singleton-instance-methods
  • 1f40487 Merge pull request #3095 from ruby/claude/4-2-release-tasks-h6thzx
  • e721ad1 Drop runtime support for Ruby 3.2
  • 584b4cf Merge pull request #3092 from ruby/claude/rbs-ci-failure-sinnfd
  • e709673 Merge pull request #3090 from ruby/claude/release-4-2-0-pre-1-vyzb7g
  • Additional commits viewable in compare view

Updates rubocop from 1.88.0 to 1.90.0

Release notes

Sourced from rubocop's releases.

RuboCop v1.90.0

New features

  • #15073: Add AllowTrailingComment option to Style/DisableCopsWithinSourceCodeDirective. ([@​bbatsov][])
  • #9505: Add disable-next directives scoped to the following statement. ([@​bbatsov][])
  • #15550: Add --display-suppressed option to also report offenses suppressed by directive comments, including their -- justification in the JSON formatter. ([@​bbatsov][])
  • #15523: Add new Lint/ArgumentMismatch cop. ([@​bbatsov][])
  • #15594: Add new Lint/SuperArgumentMismatch cop. ([@​bbatsov][])
  • #15581: Add new Style/TimeNow cop. ([@​Starlexxx][])
  • #15111: Add NumberOfEmptyLines option to Layout/EmptyLineAfterMagicComment to configure the minimum number of empty lines required after magic comments. ([@​alejofraga][])
  • #13037: Add --report-unused-todo-entries to catch rotting todo files. ([@​bbatsov][])
  • #15559: Add new Style/DirectiveScope cop to flag disable/enable pairs and disable-only push/pop scopes that wrap a single statement and can use disable-next instead. ([@​bbatsov][])
  • #15547: Make Lint/RedundantCopEnableDirective flag # rubocop:pop directives without a matching # rubocop:push. ([@​bbatsov][])

Bug fixes

  • #15584: Fix a crash in Lint/NameTypo and Lint/UnusedPrivateMethod on string literals with invalid encoding. ([@​bbatsov][])
  • #15541: Fix a false negative for Lint/OutOfRangeRegexpRef when a preceding element access with a non-string literal argument (e.g. hash[:key]) discarded the tracked capture count. ([@​koic][])
  • #7958: Add todo comments for skipped unsafe corrections with --disable-uncorrectable. ([@​bbatsov][])
  • #15569: Fix an error for the built-in language server when a workspace/executeCommand request has no document URI in its arguments. ([@​koic][])
  • #15410: Fix an incorrect autocorrect for Naming/BinaryOperatorParameterName. ([@​bbatsov][])
  • #15576: Fix an incorrect autocorrect for Style/Sample when shuffle is given a random: argument; the offense is still reported but no longer autocorrected, since shuffle and sample consume a seeded generator differently and would select different elements. ([@​koic][])
  • #15590: Fix an infinite loop error for Layout/FirstArgumentIndentation when EnforcedStyle: with_fixed_indentation is specified for Layout/ArgumentAlignment and Layout/FirstMethodArgumentLineBreak is enabled with AllowMultilineFinalElement: true. ([@​Starlexxx][])
  • #15588: Fix RuboCop::Cop::IgnoredMethods and RuboCop::Cop::IgnoredPattern being unreachable after require 'rubocop'. ([@​SeanLF][])
  • #8349: Don't autocorrect away directives for unknown cops. ([@​bbatsov][])
  • #7894: Don't flag disables of pending cops as redundant. ([@​bbatsov][])
  • #9963: Fix false negatives for Layout/ExtraSpacing. ([@​Starlexxx][])
  • #15525: Fix false negatives in Layout/LineLength when a constant path like Http::UploadedFile matches URISchemes case-insensitively. ([@​koic][])
  • #13941: Fix false positives for Lint/UselessConstantScoping when assigning with Class.new, Module.new, Struct.new, or Data.define after private. ([@​pdobb][])
  • #15526: Fix false positives in Layout/MultilineMethodCallIndentation when a line has multiple single-line blocks before a multiline block. ([@​koic][])
  • #15538: Fix false positives in Lint/ConstantReassignment when a constant is assigned in compact-style namespaces (e.g. module A::B). ([@​alex-tan][])
  • #15517: Fix false positives in Lint/RedundantSafeNavigation when InferNonNilReceiver is enabled and the receiver name is rebound by a nested block (it or a shadowed block parameter). ([@​koic][])
  • #15572: Fix RuboCop::Cop::Registry#freeze to freeze its internal collections, so that registering a lazily loaded cop after the freeze fails fast at the registration site instead of corrupting the registry. ([@​koic][])
  • #15585: Make Lint/DuplicateMethods honor silence_redefinition_of_method and redefine_method as intentional redefinitions. ([@​bbatsov][])
  • #15558: Fix --display-suppressed reporting a nil justification when the offense is loaded from the result cache. ([@​corsonknowles][])
  • #10449: Fix Layout/ClassStructure autocorrection producing a wrong order when an element cannot be moved, and make offenses report the category that actually blocks the expected order. ([@​koic][])
  • #15568: Fix Lint/NameTypo registering false positives for names provided by a gem whose namespace the project reopens, and for constants read from a namespace with an unresolved ancestor. ([@​HoneyryderChuck][])
  • #15556: Fix Lint/UnusedPrivateMethod retaining every past project_index object it has seen (and the index graph reachable from each), rather than only the most recent one. This caused unbounded memory growth in long-lived processes such as rubocop --server. ([@​bquorning][])
  • #10046: Fix Lint/UselessMethodDefinition false positive for methods with **kwargs. ([@​bbatsov][])
  • #15589: Fix --lsp and --mcp being silently ignored when the RuboCop server is running: they now start the protocol server in the current process instead of being forwarded to the server as a lint request. ([@​koic][])
  • #11148: Merge department and cop-level Exclude settings. ([@​bbatsov][])
  • #15531: Fix a regression in RuboCop 1.89 where the modifier cops could produce lines longer than Layout/LineLength Max when exemptions like AllowedPatterns matched the result. ([@​bbatsov][])
  • #15574: Fix an incorrect warning such as AllCops does not support TargetRailsVersion parameter when a plugin declares a custom AllCops key with a nil value and another plugin is loaded after it. ([@​koic][])
  • #9543: Preserve escape notation in Style/StringConcatenation autocorrect. ([@​bbatsov][])
  • #11119: Preserve persistent cop instances across files. ([@​Eljees][])
  • #13022: Fix rubocop . (and other relative directory arguments) needlessly traversing directories excluded by the configuration, which made it much slower than rubocop in projects with large ignored trees. ([@​bbatsov][])
  • #15561: Fix Lint/RedundantCopDisableDirective and Lint/RedundantCopEnableDirective leaving a directive's -- reason behind when removing the directive. ([@​corsonknowles][])
  • #15593: Fix false positives for Lint/UnusedPrivateMethod for private definitions of Ruby runtime hooks like inherited and const_missing. ([@​bbatsov][])
  • #15547: Make Lint/MissingCopEnableDirective suggest # rubocop:pop instead of # rubocop:enable for an unclosed # rubocop:push. ([@​bbatsov][])
  • #14379: Suppress multi-line offenses with a directive on any of their lines. ([@​bbatsov][])

... (truncated)

Changelog

Sourced from rubocop's changelog.

1.90.0 (2026-08-24)

New features

  • #15073: Add AllowTrailingComment option to Style/DisableCopsWithinSourceCodeDirective. ([@​bbatsov][])
  • #9505: Add disable-next directives scoped to the following statement. ([@​bbatsov][])
  • #15550: Add --display-suppressed option to also report offenses suppressed by directive comments, including their -- justification in the JSON formatter. ([@​bbatsov][])
  • #15523: Add new Lint/ArgumentMismatch cop. ([@​bbatsov][])
  • #15594: Add new Lint/SuperArgumentMismatch cop. ([@​bbatsov][])
  • #15581: Add new Style/TimeNow cop. ([@​Starlexxx][])
  • #15111: Add NumberOfEmptyLines option to Layout/EmptyLineAfterMagicComment to configure the minimum number of empty lines required after magic comments. ([@​alejofraga][])
  • #13037: Add --report-unused-todo-entries to catch rotting todo files. ([@​bbatsov][])
  • #15559: Add new Style/DirectiveScope cop to flag disable/enable pairs and disable-only push/pop scopes that wrap a single statement and can use disable-next instead. ([@​bbatsov][])
  • #15547: Make Lint/RedundantCopEnableDirective flag # rubocop:pop directives without a matching # rubocop:push. ([@​bbatsov][])

Bug fixes

  • #15584: Fix a crash in Lint/NameTypo and Lint/UnusedPrivateMethod on string literals with invalid encoding. ([@​bbatsov][])
  • #15541: Fix a false negative for Lint/OutOfRangeRegexpRef when a preceding element access with a non-string literal argument (e.g. hash[:key]) discarded the tracked capture count. ([@​koic][])
  • #7958: Add todo comments for skipped unsafe corrections with --disable-uncorrectable. ([@​bbatsov][])
  • #15569: Fix an error for the built-in language server when a workspace/executeCommand request has no document URI in its arguments. ([@​koic][])
  • #15410: Fix an incorrect autocorrect for Naming/BinaryOperatorParameterName. ([@​bbatsov][])
  • #15576: Fix an incorrect autocorrect for Style/Sample when shuffle is given a random: argument; the offense is still reported but no longer autocorrected, since shuffle and sample consume a seeded generator differently and would select different elements. ([@​koic][])
  • #15590: Fix an infinite loop error for Layout/FirstArgumentIndentation when EnforcedStyle: with_fixed_indentation is specified for Layout/ArgumentAlignment and Layout/FirstMethodArgumentLineBreak is enabled with AllowMultilineFinalElement: true. ([@​Starlexxx][])
  • #15588: Fix RuboCop::Cop::IgnoredMethods and RuboCop::Cop::IgnoredPattern being unreachable after require 'rubocop'. ([@​SeanLF][])
  • #8349: Don't autocorrect away directives for unknown cops. ([@​bbatsov][])
  • #7894: Don't flag disables of pending cops as redundant. ([@​bbatsov][])
  • #9963: Fix false negatives for Layout/ExtraSpacing. ([@​Starlexxx][])
  • #15525: Fix false negatives in Layout/LineLength when a constant path like Http::UploadedFile matches URISchemes case-insensitively. ([@​koic][])
  • #13941: Fix false positives for Lint/UselessConstantScoping when assigning with Class.new, Module.new, Struct.new, or Data.define after private. ([@​pdobb][])
  • #15526: Fix false positives in Layout/MultilineMethodCallIndentation when a line has multiple single-line blocks before a multiline block. ([@​koic][])
  • #15538: Fix false positives in Lint/ConstantReassignment when a constant is assigned in compact-style namespaces (e.g. module A::B). ([@​alex-tan][])
  • #15517: Fix false positives in Lint/RedundantSafeNavigation when InferNonNilReceiver is enabled and the receiver name is rebound by a nested block (it or a shadowed block parameter). ([@​koic][])
  • #15572: Fix RuboCop::Cop::Registry#freeze to freeze its internal collections, so that registering a lazily loaded cop after the freeze fails fast at the registration site instead of corrupting the registry. ([@​koic][])
  • #15585: Make Lint/DuplicateMethods honor silence_redefinition_of_method and redefine_method as intentional redefinitions. ([@​bbatsov][])
  • #15558: Fix --display-suppressed reporting a nil justification when the offense is loaded from the result cache. ([@​corsonknowles][])
  • #10449: Fix Layout/ClassStructure autocorrection producing a wrong order when an element cannot be moved, and make offenses report the category that actually blocks the expected order. ([@​koic][])
  • #15568: Fix Lint/NameTypo registering false positives for names provided by a gem whose namespace the project reopens, and for constants read from a namespace with an unresolved ancestor. ([@​HoneyryderChuck][])
  • #15556: Fix Lint/UnusedPrivateMethod retaining every past project_index object it has seen (and the index graph reachable from each), rather than only the most recent one. This caused unbounded memory growth in long-lived processes such as rubocop --server. ([@​bquorning][])
  • #10046: Fix Lint/UselessMethodDefinition false positive for methods with **kwargs. ([@​bbatsov][])
  • #15589: Fix --lsp and --mcp being silently ignored when the RuboCop server is running: they now start the protocol server in the current process instead of being forwarded to the server as a lint request. ([@​koic][])
  • #11148: Merge department and cop-level Exclude settings. ([@​bbatsov][])
  • #15531: Fix a regression in RuboCop 1.89 where the modifier cops could produce lines longer than Layout/LineLength Max when exemptions like AllowedPatterns matched the result. ([@​bbatsov][])
  • #15574: Fix an incorrect warning such as AllCops does not support TargetRailsVersion parameter when a plugin declares a custom AllCops key with a nil value and another plugin is loaded after it. ([@​koic][])
  • #9543: Preserve escape notation in Style/StringConcatenation autocorrect. ([@​bbatsov][])
  • #11119: Preserve persistent cop instances across files. ([@​Eljees][])
  • #13022: Fix rubocop . (and other relative directory arguments) needlessly traversing directories excluded by the configuration, which made it much slower than rubocop in projects with large ignored trees. ([@​bbatsov][])
  • #15561: Fix Lint/RedundantCopDisableDirective and Lint/RedundantCopEnableDirective leaving a directive's -- reason behind when removing the directive. ([@​corsonknowles][])
  • #15593: Fix false positives for Lint/UnusedPrivateMethod for private definitions of Ruby runtime hooks like inherited and const_missing. ([@​bbatsov][])
  • #15547: Make Lint/MissingCopEnableDirective suggest # rubocop:pop instead of # rubocop:enable for an unclosed # rubocop:push. ([@​bbatsov][])

... (truncated)

Commits
  • f1b25e1 Cut 1.90
  • 72895f6 Update Changelog
  • 7042de6 Move op_method? before the shadowing helpers
  • 4b14dd2 Fix an incorrect autocorrect for Naming/BinaryOperatorParameterName
  • 5d221ac [Fix #10046] Fix Lint/UselessMethodDefinition false positive for methods wi...
  • 5070fc3 [Fix #15111] Add NumberOfEmptyLines option to `Layout/EmptyLineAfterMagicCo...
  • 496eb65 [Fix #9543] Preserve escape notation in Style/StringConcatenation autocorrect
  • 75b3622 Remove a directive's -- reason along with the directive
  • 858d8a8 Merge pull request #15596 from koic/add_real_last_column_to_offense
  • 15557b0 Add Offense#real_last_column and use it in JSONFormatter
  • Additional commits viewable in compare view

Updates rubocop-performance from 1.26.1 to 1.27.0

Release notes

Sourced from rubocop-performance's releases.

RuboCop Performance v1.27.0

Bug fixes

  • #532: Fix false negatives for Performance/ChainArrayAllocation when using flat_map, filter_map, and collect_concat. (@​koic)

Changes

  • #530: Speed up loading rubocop-performance by lazily loading only the cops needed for a run. This requires RuboCop 1.89.0+. (@​koic)
Changelog

Sourced from rubocop-performance's changelog.

1.27.0 (2026-08-16)

Bug fixes

  • #532: Fix false negatives for Performance/ChainArrayAllocation when using flat_map, filter_map, and collect_concat. ([@​koic][])

Changes

  • #530: Speed up loading rubocop-performance by lazily loading only the cops needed for a run. This requires RuboCop 1.89.0+. ([@​koic][])
Commits
  • c07064d Cut 1.27.0
  • 0e7abe8 Update Changelog
  • 0d43a61 Suppress RuboCop offenses
  • 72eb77d Merge pull request #533 from koic/fix_chain_array_allocation_false_negatives
  • 9c60244 Merge pull request #528 from koic/fix_regexp_match_offense_message_for_bang_t...
  • c3515cb [Fix #532] Fix false negatives for Performance/ChainArrayAllocation
  • dba3d75 Merge pull request #530 from koic/lazy_load_cops
  • dd5f992 Load cops lazily
  • f1763dd [Fix #510] Clarify Performance/RegexpMatch message for !~
  • 9c969a6 Fix JRuby CI failure caused by rbs native extension build
  • Additional commits viewable in compare view

Updates simplecov from 0.22.0 to 1.1.1

Release notes

Sourced from simplecov's releases.

v1.1.1

What's Changed

Full Changelog: simplecov-ruby/simplecov@v1.1.0...v1.1.1

v1.1.0

What's Changed

New Contributors

Full Changelog: simplecov-ruby/simplecov@v1.0.3...v1.1.0

v1.0.3

What's Changed

New Contributors

Full Changelog: simplecov-ruby/simplecov@v1.0.2...v1.0.3

v1.0.2

What's Changed

Full Changelog: simplecov-ruby/simplecov@v1.0.1...v1.0.2

v1.0.1

What's Changed

... (truncated)

Changelog

Sourced from simplecov's changelog.

1.1.1 (2026-08-12)

Enhancements

  • The HTML report remembers how a file list was sorted. The selected column and direction persist in localStorage across the All Files and group tables, so reloading a report restores the order it was left in. The preference stores semantic column keys rather than numeric positions, so a report whose enabled criteria differ from the report that stored it falls back to the primary coverage sort instead of sorting by whatever column now happens to sit in that position. Equal values break by filename so the restored order matches the clicked order exactly, and the covered and total columns now sort by their numeric value rather than their comma-grouped digits, which used to rank 1,250 below 999.
  • The report's top bar is now a proper tab strip. Every group tab is outlined, so an unselected group reads as a tab rather than as loose text floating above the panel, while the selected one fills with the panel's own colour and drops its bottom border to merge into it. The colorblind and theme toggles stay unfilled, which keeps the filled shapes in the bar meaningful: the selected tab, and a toggle that is switched on. With more groups than fit, the strip scrolls and both ends fade instead of guillotining whichever tab straddles an edge.
  • The source file view was polished to match. The colorblind and theme controls sit at the same viewport coordinates as the index toolbar, with the scrollbar gutter reserved so opening the dialog cannot slide them sideways. Each legend key shares a row with its line, branch, or method summary, and the generated-at footer is repeated at the bottom of the source dialog. On paper the header returns to document flow, where the toggles and close button are hidden and the legend reads better at full width.
  • The source view no longer prints a coverage glyph in a left gutter on every line, and the legend swatches are plain chips of the colours the source view paints rather than a key to a symbol set. The glyphs stated each line's status without relying on colour, but they read as noise down the left edge of every file. Line numbers keep their per-status background, and the Colorblind toggle does the accessibility work on its own by swapping covered and missed for blue versus orange, the pairing red/green vision cannot separate.
  • The packaged gem no longer ships the schemas/ directory, dropping 32 KB unpacked from every install. Nothing read it at runtime: the JSON formatter points consumers at the canonical schema URL on GitHub, and the schema specs read from the repository.

Bugfixes

  • Coverage checks no longer get skipped under runners that close a worker's output streams before its at_exit hooks run. rspec-conductor closes each worker's pipes as soon as the worker has sent its run summary, and emitting SimpleCov's status line probes Color.enabled?, whose IO#tty? call raised IOError on the closed stream. That exception aborted the remaining exit tasks, so the HTML and JSON reports were written but the minimum and maximum coverage checks silently never ran, and neither .last_run.json nor the .report_stamp deferral marker was written. A closed stream now counts as not a tty, and the status line and the violation report are dropped rather than cancelling the checks that follow. rspec-conductor is also named in the parallel adapter documentation and covered end to end now, since it follows the TEST_ENV_NUMBER and PARALLEL_TEST_GROUPS convention the generic adapter already recognizes. See #1156.
  • SimpleCov.collate no longer depends on load order for Coverage.line_stub. SimulateCoverage and ResultAdapter both call it without requiring the coverage library. A normal run loads that library while starting tracking, but a collate-only process never starts tracking, so the constant resolved only by luck through a criterion-support check that happened to run first. Any reordering of that path would have turned into a NameError out of SimpleCov.collate, so each file now requires what it uses.

1.1.0 (2026-08-10)

Breaking Changes

  • simplecov report --json now emits {"total": {...}, "groups": {...}} instead of flattening the overall "All Files" entry and configured groups into one object. The old shape silently overwrote the overall totals when a user group was also named All Files; the text report now labels that user section All Files (group) as well.
  • Ungrouped is now reserved for the implicit group of files that match no configured group. Defining an explicit group with that name previously caused SimpleCov to overwrite it during result processing and silently discard its matched files; rename such a group to Other or another distinct label. Group names are also normalized when configured: a Symbol name (group :Models) now means the same group as its String spelling (so group :Ungrouped is rejected like the string form, and a symbol-named group can no longer produce a duplicate JSON key next to a string-named one), and a name that is neither a String nor a Symbol raises SimpleCov::ConfigurationError.
  • The HTML report is now a single self-contained index.html. The viewer's JavaScript and CSS are inlined into the compiled template at build time, and the coverage data is embedded at report time (with < escaped in the payload so embedded source text cannot terminate the surrounding <script> element), so coverage/ contains just index.html and coverage.json. A single file can be mailed, uploaded as a non-zipped GitHub Actions run artifact (actions/upload-artifact with archive: false, viewable directly from the run page), or copied anywhere without sibling files, and the report can no longer be read mid-write in a torn state where index.html, coverage_data.js, and application.js come from different runs — the whole report updates in one atomic rename. The sibling files the formatter previously wrote (coverage_data.js, application.js, application.css, and the three favicon PNGs) are gone; anything scripted against that layout should read coverage.json (the sanctioned data artifact, unchanged) instead of coverage_data.js. Formatting also deletes those six names from the output directory when an earlier version left them there, so an upgraded project's coverage/ doesn't keep a stale coverage_data.js around for simplecov serve to serve. This restores single-file reports to the 1.0 line — the pre-1.0 simplecov-html formatter offered them via the SIMPLECOV_INLINE_ASSETS environment variable, which the 1.0 client-side rendering rewrite dropped — and makes them the default and only mode, with no environment variable or configuration flag. See #1241.

Enhancements

  • The HTML report gains a colorblind-friendly mode. A Colorblind toggle next to the Dark toggle swaps the covered/missed pairing (and the coverage bands) for blue versus orange, the standard colorblind-safe pairing, in both themes; the choice persists in localStorage and is applied before first paint. Both toggles report state via aria-pressed.
  • simplecov serve now handles each connection on its own thread with a read timeout, so a stalled connection (browsers routinely open speculative sockets that send no bytes) no longer blocks every other request. It also works on JRuby and TruffleRuby, answers malformed request lines with a 400 instead of an empty response, and prints a bracketed URL for IPv6 hosts.
  • The README was trimmed from 1,617 lines to under 180, with the full documentation moved into topic guides under a new docs/ directory (Configuration, Parallelism, Formatters, CLI, Troubleshooting) alongside the changelogs, contributing guide, and code of conduct, with the issue template tucked into .github/. This changelog now lives at docs/Changelog.md and the gem's changelog_uri metadata follows it. Nothing under docs/ ships in the gem, which also stops packaging the old doc/* link lists. The alternate formatters catalog was rebuilt against RubyGems: twenty formatters join the twelve that were listed, organized by output type.
  • .resultset.json is now written as compact JSON instead of pretty-printed. It is a machine-read cache that every parallel worker rewrites wholesale, and pretty printing nearly doubled the bytes written, read back, and parsed on each store-merge round trip — on a 100,000-file project the file shrinks from 89MB to 51MB and serialization halves. Any JSON parser reads the compact form; pipe it through jq if you need to inspect it by eye.
  • The favicon (a solid square in the overall coverage band's colour) is now drawn by the viewer from the report's own palette instead of shipping as fixed PNGs, so it matches the report's green/yellow/red exactly and follows the light/dark theme, including the in-page toggle.
  • SimpleCov.collate takes a new processes: argument that fans the resultset merge out across that many forked worker processes. This addresses the wall clock of a large CI matrix's collate step, where the collating process reads, parses and folds hundreds of resultsets in sequence and nearly all the time goes into that fold: merging 160 resultsets covering 1,836 files on a 14-core machine took 4.53s at the default processes: 1 and 1.35s across 8 workers. The report is identical either way, not merely equivalent — each worker folds a contiguous slice of the file list and the collating process folds the slices back in order, so the resultsets are visited in the same order a single-process merge visits them. The fan-out lives in a new SimpleCov::ParallelResultMerger, whose absorb_results mirrors ResultMerger.absorb_results, splitting that fold across workers and unioning the tracked paths each one saw. processes defaults to the SIMPLECOV_CONCURRENCY environment variable (1 when unset), so one rake task can serve CI runners of different sizes without being edited, and an explicit argument wins over the variable. It never forks at 1, so existing collate calls are unaffected; it is deliberately not clamped to the core count nor gated on a minimum number of resultsets — only the caller knows what a collate job is allowed to use — asking for more processes than there are result files just gives one file per process, and anything below 1 is taken as 1. Merging falls back to the collating process, with the same report and no error, when the runtime cannot fork (JRuby, TruffleRuby, Windows), when there is only one resultset, or when a worker dies. A benchmarks/collate.rb harness (PROCESSES=N) measures the phases against a saved baseline.

Bugfixes

  • Two concurrent runners sharing a command name no longer lose the later writer's coverage for files both carried. A live result serializes its criterion tables under Ruby's Symbol keys while entries parsed back from .resultset.json carry Strings, and the combiners read only Strings, so the merge that exists to prevent an empty parent process from clobbering a subprocess's data (#581) silently contributed nothing from the incoming side. Criterion keys are now stringified at serialization time so the stored and live shapes always match.
  • Merging or collating stored resultsets with method coverage enabled no longer crashes on singleton methods defined on instances. def obj.greet records its receiver as the nested inspect form #<Class:#<Object:0x...>>, and the parser that turns JSON-stringified method keys back into tuples stopped at the first closing angle bracket, raising ArgumentError out of the merge. The quoting now handles nested segments.
  • Description has been truncated

… 10 updates

Bumps the ruby-dependencies group with 10 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [rbs](https://github.com/ruby/rbs) | `4.0.3` | `4.2.0` |
| [rubocop](https://github.com/rubocop/rubocop) | `1.88.0` | `1.90.0` |
| [rubocop-performance](https://github.com/rubocop/rubocop-performance) | `1.26.1` | `1.27.0` |
| [simplecov](https://github.com/simplecov-ruby/simplecov) | `0.22.0` | `1.1.1` |
| [steep](https://github.com/soutaro/steep) | `2.0.0` | `2.1.0` |
| [yard](https://github.com/lsegal/yard) | `0.9.44` | `0.9.45` |
| [async](https://github.com/socketry/async) | `2.39.0` | `2.45.1` |
| [async-http](https://github.com/socketry/async-http) | `0.95.1` | `0.103.0` |
| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-ruby) | `1.10.0` | `1.11.0` |
| [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) | `2.9.5` | `2.9.6` |



Updates `rbs` from 4.0.3 to 4.2.0
- [Release notes](https://github.com/ruby/rbs/releases)
- [Changelog](https://github.com/ruby/rbs/blob/master/CHANGELOG.md)
- [Commits](ruby/rbs@v4.0.3...v4.2.0)

Updates `rubocop` from 1.88.0 to 1.90.0
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](rubocop/rubocop@v1.88.0...v1.90.0)

Updates `rubocop-performance` from 1.26.1 to 1.27.0
- [Release notes](https://github.com/rubocop/rubocop-performance/releases)
- [Changelog](https://github.com/rubocop/rubocop-performance/blob/master/CHANGELOG.md)
- [Commits](rubocop/rubocop-performance@v1.26.1...v1.27.0)

Updates `simplecov` from 0.22.0 to 1.1.1
- [Release notes](https://github.com/simplecov-ruby/simplecov/releases)
- [Changelog](https://github.com/simplecov-ruby/simplecov/blob/main/CHANGELOG.md)
- [Commits](simplecov-ruby/simplecov@v0.22.0...v1.1.1)

Updates `steep` from 2.0.0 to 2.1.0
- [Release notes](https://github.com/soutaro/steep/releases)
- [Changelog](https://github.com/soutaro/steep/blob/master/CHANGELOG.md)
- [Commits](soutaro/steep@v2.0.0...v2.1.0)

Updates `yard` from 0.9.44 to 0.9.45
- [Release notes](https://github.com/lsegal/yard/releases)
- [Changelog](https://github.com/lsegal/yard/blob/main/CHANGELOG.md)
- [Commits](lsegal/yard@v0.9.44...v0.9.45)

Updates `async` from 2.39.0 to 2.45.1
- [Release notes](https://github.com/socketry/async/releases)
- [Changelog](https://github.com/socketry/async/blob/main/releases.md)
- [Commits](socketry/async@v2.39.0...v2.45.1)

Updates `async-http` from 0.95.1 to 0.103.0
- [Release notes](https://github.com/socketry/async-http/releases)
- [Changelog](https://github.com/socketry/async-http/blob/main/releases.md)
- [Commits](socketry/async-http@v0.95.1...v0.103.0)

Updates `opentelemetry-api` from 1.10.0 to 1.11.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-ruby/releases)
- [Commits](open-telemetry/opentelemetry-ruby@opentelemetry-api/v1.10.0...opentelemetry-api/v1.11.0)

Updates `sqlite3` from 2.9.5 to 2.9.6
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/main/CHANGELOG.md)
- [Commits](sparklemotion/sqlite3-ruby@v2.9.5...v2.9.6)

---
updated-dependencies:
- dependency-name: rbs
  dependency-version: 4.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: rubocop
  dependency-version: 1.90.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: rubocop-performance
  dependency-version: 1.27.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: simplecov
  dependency-version: 1.1.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: ruby-dependencies
- dependency-name: steep
  dependency-version: 2.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: yard
  dependency-version: 0.9.45
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: ruby-dependencies
- dependency-name: async
  dependency-version: 2.45.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: async-http
  dependency-version: 0.103.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: opentelemetry-api
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: sqlite3
  dependency-version: 2.9.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: ruby-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github

dependabot Bot commented on behalf of github Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

Labels

The following labels could not be found: dependencies. Please create it before Dependabot can add it to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants