Skip to content

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

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

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

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 17, 2026

Copy link
Copy Markdown
Contributor

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

Package From To
rbs 4.0.3 4.1.3
rubocop 1.88.0 1.89.0
simplecov 0.22.0 1.1.1
yard 0.9.44 0.9.45
async 2.39.0 2.44.1
async-http 0.95.1 0.99.0
opentelemetry-api 1.10.0 1.11.0
sqlite3 2.9.5 2.9.6

Updates rbs from 4.0.3 to 4.1.3

Release notes

Sourced from rbs's releases.

4.1.3

Release note

Miscellaneous

  • Don't use Clang nullability qualifiers in strict ISO C mode (#3074, Backported in #3075)
  • Avoid eagerly inspecting call traces in type assertions (#3073, Backported in #3076)

4.1.2

Release note

Miscellaneous

  • Keep GC disabled during GC_test#test_stress_and_stress= (#3061)
  • Fix GC_test#test_enable leaving GC disabled for the rest of the suite (#3059)

4.1.1

Release note

Library changes

  • Include the trailing ? in a keyword key's symbol location (#3043)
  • Mark type_name as optional on the alias annotations (#3039)

Miscellaneous

  • Fix template drift for ext/rbs_extension/ast_translation.c (#3038)

4.1.1.pre.1

Release note

Library changes

  • Include the trailing ? in a keyword key's symbol location (#3043)
  • Mark type_name as optional on the alias annotations (#3039)

Miscellaneous

  • Fix template drift for ext/rbs_extension/ast_translation.c (#3038)

4.1.0

Release note

RBS 4.1 ships with JRuby support. The RBS parser is written in plain C without depending on the Ruby C API, so it is compiled to WebAssembly and runs on a Wasm runtime, with the parsed AST serialized in a binary format and decoded into RBS objects. The full test suite runs on JRuby in CI.

The inline RBS syntax gets three new features: singleton method definitions (def self.), the module-self constraint, and instance variable annotations in module declarations. Note that RBS inline is still experimental and may change in future releases.

This release also introduces RBS::Rewriter, an API to edit RBS source text while preserving the surrounding content, which rbs annotate is now built on. Parsing performance is improved by interning type names in a shared trie and reducing allocations per node.

RBS::Prototype::Runtime, the RDoc plugin parser, and the top-level float type alias are deprecated in this release.

... (truncated)

Changelog

Sourced from rbs's changelog.

4.1.3 (2026-08-10)

Miscellaneous

  • Don't use Clang nullability qualifiers in strict ISO C mode (#3074, Backported in #3075)
  • Avoid eagerly inspecting call traces in type assertions (#3073, Backported in #3076)

4.1.2 (2026-08-03)

Miscellaneous

  • Keep GC disabled during GC_test#test_stress_and_stress= (#3061)
  • Fix GC_test#test_enable leaving GC disabled for the rest of the suite (#3059)

4.1.1 (2026-07-30)

Library changes

  • Include the trailing ? in a keyword key's symbol location (#3043)
  • Mark type_name as optional on the alias annotations (#3039)

Miscellaneous

  • Fix template drift for ext/rbs_extension/ast_translation.c (#3038)

4.1.0 (2026-07-27)

RBS 4.1 ships with JRuby support. The RBS parser is written in plain C without depending on the Ruby C API, so it is compiled to WebAssembly and runs on a Wasm runtime, with the parsed AST serialized in a binary format and decoded into RBS objects. The full test suite runs on JRuby in CI.

The inline RBS syntax gets three new features: singleton method definitions (def self.), the module-self constraint, and instance variable annotations in module declarations. Note that RBS inline is still experimental and may change in future releases.

This release also introduces RBS::Rewriter, an API to edit RBS source text while preserving the surrounding content, which rbs annotate is now built on. Parsing performance is improved by interning type names in a shared trie and reducing allocations per node.

RBS::Prototype::Runtime, the RDoc plugin parser, and the top-level float type alias are deprecated in this release.

Signature updates

Updated classes/modules/methods: ARGF, Array, CSV, Class, Delegator, Digest, ERB, Enumerable, Enumerator, Enumerator::Product, Etc, File, File::Constants, File::Stat, FileUtils, Float, Gem, Hash, IO, IPAddr, Integer, JSON, Kernel, MatchData, Module, Monitor, Numeric, ObjectSpace::WeakKeyMap, OpenSSL, Pathname, RBS::Ops, Ractor, Range, Resolv, RubyVM::InstructionSequence, Set, Shellwords, String, StringIO, StringScanner, Struct, Tempfile, Thread, Timeout, TSort, URI::Generic, Zlib::GzipReader, Zlib::ZStream

  • Remove stale Float constants and add a constant drift test (#2994)
  • Update RDoc comments with Ruby 4.0.6 (#3035)
  • Add a dependency on tempfile. (#3025)
  • Support %a{implicitly-returns-nil} on MatchData#[] (#2990)
  • Update Array (#2987)
  • Allow nil output buffers for reader methods (#3002)
  • Add stdlib signature tests for #2967 (#2989)
  • Update Integer, phase 1 (#2995)
  • Add RBS::Ops (#2934)
  • Update Module (#2933)
  • Correct core/stdlib signatures to match Ruby 4.0 (#2967)

... (truncated)

Commits
  • 5c7f8a2 Merge pull request #3077 from ruby/claude/release-4-1-3-dh5jwk
  • 8752e61 Version 4.1.3
  • 0b57ea2 Merge pull request #3076 from ruby/claude/rbs-3073-backport-dh5jwk
  • 7920265 Merge pull request #3075 from ruby/claude/rbs-3074-backport-dh5jwk
  • bb496a6 Avoid eager call trace inspection in type assertions
  • 3515bad Don't use Clang nullability qualifiers in strict ISO C mode
  • 2c39462 Merge pull request #3062 from ruby/claude/release-4-1-2-hurcyr
  • d710ede Version 4.1.2
  • c95a7c9 Merge pull request #3061 from ruby/claude/gc-stress-test-performance-424sfy
  • 1630d1f Keep GC disabled during GC_test#test_stress_and_stress=
  • Additional commits viewable in compare view

Updates rubocop from 1.88.0 to 1.89.0

Release notes

Sourced from rubocop's releases.

RuboCop v1.89.0

New features

  • #15492: Add AllCops/ProjectIndexIncludesGems for bundle-wide indexing. ([@​bbatsov][])
  • #15498: Add DelegatingMethods option to Lint/DuplicateMethods to register custom delegate-shaped methods. ([@​bbatsov][])
  • #15042: Add DisallowedCops configuration option to Style/DisableCopsWithinSourceCodeDirective. ([@​hammadxcm][])
  • #15441: Add new AllowYARDCommentBlockSeparator option to Layout/LeadingCommentSpace. ([@​koic][])
  • #15466: Add new Lint/DeprecatedReference cop to detect references to methods and constants documented as @deprecated, powered by the project index. ([@​bbatsov][])
  • #15491: Add new Lint/NameTypo cop. ([@​bbatsov][])
  • #15468: Add new Lint/UnusedPrivateMethod cop for project-wide dead-code detection via the project index (disabled by default). ([@​bbatsov][])
  • #14598: Make Style/DisableCopsWithinSourceCodeDirective impossible to disable via directive comments when explicitly enabled with Enabled: true. ([@​rafaelfranca][])
  • #15511: Support textDocument/codeAction requests in the built-in language server, so LSP clients that request code actions (Eglot, Helix, Flycheck, ...) can apply RuboCop's autocorrects, not only clients that read them off the published diagnostic. ([@​bbatsov][])
  • #8565: Support NewCops in department configuration to enable pending cops per department, including cops added up to a specific version (e.g. Style: NewCops: '1.19'). ([@​koic][])
  • #9373: Support autocorrection for tab indentation in Layout/IndentationWidth and Style/ClassAndModuleChildren. ([@​ioquatix][], [@​koic][])

Bug fixes

  • #15257: Fix a false negative for Lint/ToEnumArguments when explicit extra keyword arguments are passed (e.g. def m(x:); to_enum(:m, x: x, y: 1); end), which raises ArgumentError when the enumerator is used. ([@​RedZapdos123][])
  • #15452: Fix a false positive for Layout/HashAlignment when using EnforcedHashRocketStyle: table and a hash key spans multiple lines. ([@​dduugg][])
  • #12269: Fix a false positive for Lint/UselessAssignment with modifier conditions. ([@​bbatsov][])
  • #13786: Fix a false positive for Lint/Void with setter methods. ([@​bbatsov][])
  • #15507: Fix a false positive for Naming/VariableNumber when using an empty symbol hash key. ([@​koic][])
  • #15284: Fix a false positive for Style/MutableConstant with Data.define. ([@​bbatsov][])
  • #15483: Fix a false positive for Style/MissingRespondToMissing when respond_to_missing? is defined in a reopening of the class and UseProjectIndex is enabled. ([@​bbatsov][])
  • #15500: Fix an error for Lint/LiteralAsCondition when a literal condition has an empty branch. ([@​koic][])
  • #15499: Fix an error for Lint/UselessRuby2Keywords when ruby2_keywords is used with a symbol but no method definition is found. ([@​koic][])
  • #15453: Fix an error for Metrics/MethodLength when a method contains a heredoc and __ENCODING__. ([@​koic][])
  • #15442: Fix an error for Style/ArrayIntersect cop when the block-based check calls member?/include? without an explicit receiver. ([@​dduugg][])
  • #15434: Fix an error for Style/NegativeArrayIndex cop. ([@​viralpraxis][])
  • #15469: Fix an error for Style/RedundantFormat when a format string uses a positional argument number beyond the 64-bit range. ([@​koic][])
  • #15454: Fix an error for Style/RedundantFormat when the argument for a positional variable width is missing. ([@​koic][])
  • #15298: Fix an incorrect autocorrect for Lint/LiteralInInterpolation. ([@​bbatsov][])
  • #15515: Fix an incorrect autocorrect for Style/ArrayIntersect when using safe navigation none? with a block. ([@​koic][])
  • #15364: Fix an incorrect autocorrect for Style/MultipleComparison that dropped an allowed method comparison appearing between the compared values. ([@​bbatsov][])
  • #15367: Fix an incorrect autocorrect for Style/RedundantFileExtensionInRequire that produced invalid Ruby when a backslash preceded the .rb extension. ([@​bbatsov][])
  • #12017: Fix Lint/Void to no longer autocorrect a constant used in a void context, since removing it can change behavior through constant autoloading side effects. ([@​bbatsov][])
  • #14797: Avoid cache writes during server checks. ([@​sjh9714][])
  • #15484: Fix false negatives for Lint/InheritException when Exception is inherited indirectly through a project class (UseProjectIndex). ([@​bbatsov][])
  • #15357: Fix a false negative for Lint/AmbiguousAssignment when using attribute or index assignment. ([@​sngsmz][])
  • #9571: Fix false negatives in Layout/ClassStructure when class body elements are wrapped in begin blocks. ([@​koic][])
  • #9570: Fix false negatives in Layout/ClassStructure when using private_class_method or public_class_method def modifiers. ([@​koic][])
  • #15438: Fix false positives in Style/ArrayIntersect when the receiver of include? in a block is not an array literal. ([@​koic][])
  • #15445: Fix false positives in Style/MultilineIfThen when using the Prism parser engine and an elsif without then follows a branch using then with a body on the same line. ([@​koic][])
  • #15058: Fix false positives in Lint/DuplicateMethods for anonymous classes (Class.new) passed as arguments to the same named-receiver method call (e.g. T.cast). Each Class.new block is an independent class, so methods defined in different blocks should not be treated as duplicates. ([@​rafaelfranca][])
  • #15486: Fix false negatives for Style/RedundantConstantBase inside namespaces when the constant provably resolves identically without :: (UseProjectIndex). ([@​bbatsov][])
  • #15505: Fix incompatible autocorrect between Style/Lambda and Style/SymbolProc producing a syntax error like ->(x)(&:method) when both cops run on lambda { |x| x.method }. ([@​koic][])
  • #15481: Fix cross-file offenses depending on which files are inspected: the project index now always covers the whole project (UseProjectIndex). ([@​bbatsov][])
  • #13794: Fix Layout/LineLength autocorrection for endless methods with block bodies. ([@​hervetatche][])
  • #15462: Fix an error for Lint/ConstantReassignment when a built-in constant name is assigned and UseProjectIndex is enabled. ([@​bbatsov][])
  • #15321: Fix Style/ClassAndModuleChildren ignoring EnforcedStyleForClasses and EnforcedStyleForModules, and skip autocorrection when mixed per-type styles make the result ambiguous. ([@​bbatsov][])

... (truncated)

Changelog

Sourced from rubocop's changelog.

1.89.0 (2026-08-04)

New features

  • #15492: Add AllCops/ProjectIndexIncludesGems for bundle-wide indexing. ([@​bbatsov][])
  • #15498: Add DelegatingMethods option to Lint/DuplicateMethods to register custom delegate-shaped methods. ([@​bbatsov][])
  • #15042: Add DisallowedCops configuration option to Style/DisableCopsWithinSourceCodeDirective. ([@​hammadxcm][])
  • #15441: Add new AllowYARDCommentBlockSeparator option to Layout/LeadingCommentSpace. ([@​koic][])
  • #15466: Add new Lint/DeprecatedReference cop to detect references to methods and constants documented as @deprecated, powered by the project index. ([@​bbatsov][])
  • #15491: Add new Lint/NameTypo cop. ([@​bbatsov][])
  • #15468: Add new Lint/UnusedPrivateMethod cop for project-wide dead-code detection via the project index (disabled by default). ([@​bbatsov][])
  • #14598: Make Style/DisableCopsWithinSourceCodeDirective impossible to disable via directive comments when explicitly enabled with Enabled: true. ([@​rafaelfranca][])
  • #15511: Support textDocument/codeAction requests in the built-in language server, so LSP clients that request code actions (Eglot, Helix, Flycheck, ...) can apply RuboCop's autocorrects, not only clients that read them off the published diagnostic. ([@​bbatsov][])
  • #8565: Support NewCops in department configuration to enable pending cops per department, including cops added up to a specific version (e.g. Style: NewCops: '1.19'). ([@​koic][])
  • #9373: Support autocorrection for tab indentation in Layout/IndentationWidth and Style/ClassAndModuleChildren. ([@​ioquatix][], [@​koic][])

Bug fixes

  • #15257: Fix a false negative for Lint/ToEnumArguments when explicit extra keyword arguments are passed (e.g. def m(x:); to_enum(:m, x: x, y: 1); end), which raises ArgumentError when the enumerator is used. ([@​RedZapdos123][])
  • #15452: Fix a false positive for Layout/HashAlignment when using EnforcedHashRocketStyle: table and a hash key spans multiple lines. ([@​dduugg][])
  • #12269: Fix a false positive for Lint/UselessAssignment with modifier conditions. ([@​bbatsov][])
  • #13786: Fix a false positive for Lint/Void with setter methods. ([@​bbatsov][])
  • #15507: Fix a false positive for Naming/VariableNumber when using an empty symbol hash key. ([@​koic][])
  • #15284: Fix a false positive for Style/MutableConstant with Data.define. ([@​bbatsov][])
  • #15483: Fix a false positive for Style/MissingRespondToMissing when respond_to_missing? is defined in a reopening of the class and UseProjectIndex is enabled. ([@​bbatsov][])
  • #15500: Fix an error for Lint/LiteralAsCondition when a literal condition has an empty branch. ([@​koic][])
  • #15499: Fix an error for Lint/UselessRuby2Keywords when ruby2_keywords is used with a symbol but no method definition is found. ([@​koic][])
  • #15453: Fix an error for Metrics/MethodLength when a method contains a heredoc and __ENCODING__. ([@​koic][])
  • #15442: Fix an error for Style/ArrayIntersect cop when the block-based check calls member?/include? without an explicit receiver. ([@​dduugg][])
  • #15434: Fix an error for Style/NegativeArrayIndex cop. ([@​viralpraxis][])
  • #15469: Fix an error for Style/RedundantFormat when a format string uses a positional argument number beyond the 64-bit range. ([@​koic][])
  • #15454: Fix an error for Style/RedundantFormat when the argument for a positional variable width is missing. ([@​koic][])
  • #15298: Fix an incorrect autocorrect for Lint/LiteralInInterpolation. ([@​bbatsov][])
  • #15515: Fix an incorrect autocorrect for Style/ArrayIntersect when using safe navigation none? with a block. ([@​koic][])
  • #15364: Fix an incorrect autocorrect for Style/MultipleComparison that dropped an allowed method comparison appearing between the compared values. ([@​bbatsov][])
  • #15367: Fix an incorrect autocorrect for Style/RedundantFileExtensionInRequire that produced invalid Ruby when a backslash preceded the .rb extension. ([@​bbatsov][])
  • #12017: Fix Lint/Void to no longer autocorrect a constant used in a void context, since removing it can change behavior through constant autoloading side effects. ([@​bbatsov][])
  • #14797: Avoid cache writes during server checks. ([@​sjh9714][])
  • #15484: Fix false negatives for Lint/InheritException when Exception is inherited indirectly through a project class (UseProjectIndex). ([@​bbatsov][])
  • #15357: Fix a false negative for Lint/AmbiguousAssignment when using attribute or index assignment. ([@​sngsmz][])
  • #9571: Fix false negatives in Layout/ClassStructure when class body elements are wrapped in begin blocks. ([@​koic][])
  • #9570: Fix false negatives in Layout/ClassStructure when using private_class_method or public_class_method def modifiers. ([@​koic][])
  • #15438: Fix false positives in Style/ArrayIntersect when the receiver of include? in a block is not an array literal. ([@​koic][])
  • #15445: Fix false positives in Style/MultilineIfThen when using the Prism parser engine and an elsif without then follows a branch using then with a body on the same line. ([@​koic][])
  • #15058: Fix false positives in Lint/DuplicateMethods for anonymous classes (Class.new) passed as arguments to the same named-receiver method call (e.g. T.cast). Each Class.new block is an independent class, so methods defined in different blocks should not be treated as duplicates. ([@​rafaelfranca][])
  • #15486: Fix false negatives for Style/RedundantConstantBase inside namespaces when the constant provably resolves identically without :: (UseProjectIndex). ([@​bbatsov][])
  • #15505: Fix incompatible autocorrect between Style/Lambda and Style/SymbolProc producing a syntax error like ->(x)(&:method) when both cops run on lambda { |x| x.method }. ([@​koic][])
  • #15481: Fix cross-file offenses depending on which files are inspected: the project index now always covers the whole project (UseProjectIndex). ([@​bbatsov][])
  • #13794: Fix Layout/LineLength autocorrection for endless methods with block bodies. ([@​hervetatche][])
  • #15462: Fix an error for Lint/ConstantReassignment when a built-in constant name is assigned and UseProjectIndex is enabled. ([@​bbatsov][])

... (truncated)

Commits
  • 65854e6 Cut 1.89
  • f5dbd74 Update Changelog
  • 2f96cd7 Add new Lint/NameTypo cop
  • 9a91e2b Promote the resolved-ancestry guard to ProjectIndexHelp
  • e917b65 Merge pull request #15522 from joklek-vinted/fix/mise-toml-with-single-quotes
  • 619e3d2 Fix Ruby version detection from mise.toml with single quotes
  • 7999d1a [Fix #15501] Improve Style/RedundantLineContinuation performance on adjacen...
  • 63d9361 Advertise executeCommandProvider in the language server
  • 893a02f Cache the LSP project index across requests
  • 3b9755f Merge pull request #15516 from koic/fix_a_flaky_line_length_spec_timeout_on_j...
  • 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.
  • That same clobber-prevention backstop now stands down for failed child runs too. It keyed its freshness check on .last_run.json, which only fully successful runs write, so a Rakefile parent overwrote the child's report exactly when the child's tests or coverage checks had failed and the report mattered most. Formatting now touches a coverage/.report_stamp marker no matter how the run ends, and the backstop accepts either file as evidence of a fresher report.
  • A # simplecov:disable line block around a method no longer silently removes that method from method-coverage totals. The method skip fell back to asking whether all of the method's lines were skipped, so the line-only directive (the README's own example) leaked into the method criterion. Deprecated # :nocov: chunks still exclude methods, now routed explicitly like every other criterion.
  • A directive reason that merely starts with a category name no longer narrows the directive. # simplecov:disable linear algebra reasons parsed as category line with the rest as reason, disabling only line coverage where the documented behavior for unrecognised text is to over-disable everything. The category list now requires a word boundary.
  • Per-group minimums configured with a Symbol group name are enforced again. group :Models normalizes the name to a String but minimum_per_group 95, only: :Models (and the deprecated minimum_coverage_by_group) stored the Symbol untouched, so the check-time lookup missed and warned that group "Models" doesn't exist while listing that very name as available.
  • simplecov diff matches its documentation: --threshold N is inclusive (a file that moved exactly N% is listed), removed files no longer trip --fail-on-drop (deleting a covered file is not a regression), and sub-epsilon float noise no longer fails the gate on a row shown only for its gains.
  • Tracked-but-unloaded files with multi-statement parenthesized conditions no longer synthesize phantom branches. CRuby folds if (1; 2) by its last expression when the compiler can eliminate every leading statement, and the rules differ per version (parse.y eliminates only pure literals, 3.3 also eliminates side-effect-free reads and containers of them, 3.4+ narrows containers to fully static literals). The static extractor now mirrors each compiler exactly, verified against real Coverage output on every supported Ruby.
  • require "simplecov" no longer raises when HOME is set but empty, as some container and CI images do. The global-config loader treats an empty HOME like an unset one.
  • simplecov merge, report, and coverage print one-line errors instead of backtraces on more bad inputs: a directory or unreadable file passed to merge, valid JSON whose total or groups has the wrong type, and a per-file entry that is not an object.
  • An empty or non-numeric PARALLEL_TEST_GROUPS no longer makes the reporting worker expect zero siblings and skip the wait for their results; unusable values now mean one worker, and non-positive values are rejected too.
  • Simulating tracked files became tolerant of unreadable paths: a track_files glob that sweeps up a directory named like a Ruby file or a permission-denied entry now treats it as empty instead of crashing the merge or report step. Resultset files truncated to a single byte now warn like other corruption instead of reading as quietly empty, a hand-edited .last_run.json with a non-numeric percentage no longer raises out of the at_exit hook, and the missing-group notice respects print_errors and survives -W0 like every other enforcement message.
  • coverage :eval, minimum: 100 now explains that thresholds are unsupported for :eval instead of claiming the criterion itself is invalid, and simplecov clean --dry-run counts dotfiles such as .resultset.json in its entry count.
  • Source files containing invalid UTF-8 bytes no longer crash report generation. A file with no encoding magic comment is read as UTF-8, and a stray high-bit byte (a Latin-1 comment, say) previously raised ArgumentError: invalid byte sequence in UTF-8 from the first regex that touched the line — the shebang check or the lines classifier — taking the whole report down. Invalid bytes are now replaced with the Unicode replacement character at load time, so every line leaves the source loader as valid UTF-8 and the rest of the pipeline (classification, JSON embedding, the HTML viewer payload) works from sanitized text.
  • Generated coverage artifacts now share one collision-safe atomic writer. Concurrent threads no longer reuse the same process-ID temporary name, and the JSON formatter and ...

    Description has been truncated

… 8 updates

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

| Package | From | To |
| --- | --- | --- |
| [rbs](https://github.com/ruby/rbs) | `4.0.3` | `4.1.3` |
| [rubocop](https://github.com/rubocop/rubocop) | `1.88.0` | `1.89.0` |
| [simplecov](https://github.com/simplecov-ruby/simplecov) | `0.22.0` | `1.1.1` |
| [yard](https://github.com/lsegal/yard) | `0.9.44` | `0.9.45` |
| [async](https://github.com/socketry/async) | `2.39.0` | `2.44.1` |
| [async-http](https://github.com/socketry/async-http) | `0.95.1` | `0.99.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.1.3
- [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.1.3)

Updates `rubocop` from 1.88.0 to 1.89.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.89.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 `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.44.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.44.1)

Updates `async-http` from 0.95.1 to 0.99.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.99.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.1.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: rubocop
  dependency-version: 1.89.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: 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.44.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: async-http
  dependency-version: 0.99.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 Aug 17, 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