<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git, branch master</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>Extend omnibus compiler step timeout to 8 minutes</title>
<updated>2026-06-22T09:30:56+00:00</updated>
<author>
<name>Hiroshi SHIBATA</name>
<email>hsbt@ruby-lang.org</email>
</author>
<published>2026-06-22T08:40:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d190c264ec96752c2b56c99a8184f51415e2ef26'/>
<id>d190c264ec96752c2b56c99a8184f51415e2ef26</id>
<content type='text'>
A slow ghcr image pull (~2.5 min) can leave too little of the 5 minute
budget for configure and build to finish, so the step is killed before
the build completes. Bump each per-compiler step to 8 minutes to absorb
the pull variance.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A slow ghcr image pull (~2.5 min) can leave too little of the 5 minute
budget for configure and build to finish, so the step is killed before
the build completes. Bump each per-compiler step to 8 minutes to absorb
the pull variance.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bump the github-actions group across 2 directories with 4 updates</title>
<updated>2026-06-22T08:46:15+00:00</updated>
<author>
<name>dependabot[bot]</name>
<email>49699333+dependabot[bot]@users.noreply.github.com</email>
</author>
<published>2026-06-22T02:11:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=08a731fecd7b7f6fd49137554deb7f5c1d4821a5'/>
<id>08a731fecd7b7f6fd49137554deb7f5c1d4821a5</id>
<content type='text'>
Bumps the github-actions group with 4 updates in the / directory: [actions/checkout](https://github.com/actions/checkout), [ruby/setup-ruby](https://github.com/ruby/setup-ruby), [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) and [taiki-e/install-action](https://github.com/taiki-e/install-action).
Bumps the github-actions group with 1 update in the /.github/actions/setup/directories directory: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 6.0.3 to 7.0.0
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/df4cb1c069e1874edd31b4311f1884172cec0e10...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0)

Updates `ruby/setup-ruby` from 1.313.0 to 1.314.0
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](https://github.com/ruby/setup-ruby/compare/89f90524b88a01fe6e0b732220432cc6142926af...9eb537ca036ebaed86729dcb9309076e4c5c3b74)

Updates `zizmorcore/zizmor-action` from 0.5.6 to 0.5.7
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](https://github.com/zizmorcore/zizmor-action/compare/5f14fd08f7cf1cb1609c1e344975f152c7ee938d...192e21d79ab29983730a13d1382995c2307fbcaa)

Updates `taiki-e/install-action` from 2.82.0 to 2.82.2
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/install-action/compare/b8cecb83565409bcc297b2df6e77f030b2a468d5...9e1e5806d4a4822de933115878265be9aaa786d9)

Updates `actions/checkout` from 6.0.3 to 7.0.0
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/df4cb1c069e1874edd31b4311f1884172cec0e10...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: ruby/setup-ruby
  dependency-version: 1.314.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: zizmorcore/zizmor-action
  dependency-version: 0.5.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: taiki-e/install-action
  dependency-version: 2.82.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] &lt;support@github.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Bumps the github-actions group with 4 updates in the / directory: [actions/checkout](https://github.com/actions/checkout), [ruby/setup-ruby](https://github.com/ruby/setup-ruby), [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) and [taiki-e/install-action](https://github.com/taiki-e/install-action).
Bumps the github-actions group with 1 update in the /.github/actions/setup/directories directory: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 6.0.3 to 7.0.0
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/df4cb1c069e1874edd31b4311f1884172cec0e10...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0)

Updates `ruby/setup-ruby` from 1.313.0 to 1.314.0
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](https://github.com/ruby/setup-ruby/compare/89f90524b88a01fe6e0b732220432cc6142926af...9eb537ca036ebaed86729dcb9309076e4c5c3b74)

Updates `zizmorcore/zizmor-action` from 0.5.6 to 0.5.7
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](https://github.com/zizmorcore/zizmor-action/compare/5f14fd08f7cf1cb1609c1e344975f152c7ee938d...192e21d79ab29983730a13d1382995c2307fbcaa)

Updates `taiki-e/install-action` from 2.82.0 to 2.82.2
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/install-action/compare/b8cecb83565409bcc297b2df6e77f030b2a468d5...9e1e5806d4a4822de933115878265be9aaa786d9)

Updates `actions/checkout` from 6.0.3 to 7.0.0
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/df4cb1c069e1874edd31b4311f1884172cec0e10...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: ruby/setup-ruby
  dependency-version: 1.314.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: zizmorcore/zizmor-action
  dependency-version: 0.5.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: taiki-e/install-action
  dependency-version: 2.82.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] &lt;support@github.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[DOC] Update bundled gems list at 2f65ce7ccda7d75d4075ce319cbd1d</title>
<updated>2026-06-22T08:45:28+00:00</updated>
<author>
<name>git</name>
<email>svn-admin@ruby-lang.org</email>
</author>
<published>2026-06-22T08:45:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2a574fd9841228648668f520ba4c139ff242027c'/>
<id>2a574fd9841228648668f520ba4c139ff242027c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Skip fetching bundled gems whose ref is already present</title>
<updated>2026-06-22T08:44:03+00:00</updated>
<author>
<name>Hiroshi SHIBATA</name>
<email>hsbt@ruby-lang.org</email>
</author>
<published>2026-06-22T07:45:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fa69b96be22369c3e07ee1302a078a3707e5469a'/>
<id>fa69b96be22369c3e07ee1302a078a3707e5469a</id>
<content type='text'>
With a warm gems/src cache the wanted tag or revision is already in the local clone, but the fetch ran unconditionally and added a github.com round-trip per gem that a transient outage could abort. Resolve the ref locally first and fetch only when it is missing.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With a warm gems/src cache the wanted tag or revision is already in the local clone, but the fetch ran unconditionally and added a github.com round-trip per gem that a transient outage could abort. Resolve the ref locally first and fetch only when it is missing.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Save the complete bundled gem sources cache only from test-bundled-gems</title>
<updated>2026-06-22T08:44:03+00:00</updated>
<author>
<name>Hiroshi SHIBATA</name>
<email>hsbt@ruby-lang.org</email>
</author>
<published>2026-06-22T07:45:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=7c8668d95514d3523fc81f2df781c4cbee84c245'/>
<id>7c8668d95514d3523fc81f2df781c4cbee84c245</id>
<content type='text'>
`make up` clones only the revision-pinned gems (debug, rdoc) into gems/src, so jobs that merely run `make up` saved a partial tree and, because the cache key is immutable, won the shared key and left test-bundled-gems to re-clone the rest. Gate the cache on a new input so only test-bundled-gems jobs, which clone the full set, participate.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
`make up` clones only the revision-pinned gems (debug, rdoc) into gems/src, so jobs that merely run `make up` saved a partial tree and, because the cache key is immutable, won the shared key and left test-bundled-gems to re-clone the rest. Gate the cache on a new input so only test-bundled-gems jobs, which clone the full set, participate.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/json] Preserve UTF-8 encoding when reallocating a frozen ResumableParser buffer</title>
<updated>2026-06-22T07:51:34+00:00</updated>
<author>
<name>Masataka Pocke Kuwabara</name>
<email>kuwabara@pocke.me</email>
</author>
<published>2026-06-22T07:28:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2f65ce7ccda7d75d4075ce319cbd1d6fb4b38d67'/>
<id>2f65ce7ccda7d75d4075ce319cbd1d6fb4b38d67</id>
<content type='text'>
`JSON::ResumableParser#&lt;&lt;` raises `Encoding::CompatibilityError` when the
first chunk is a frozen multibyte UTF-8 string and more data is fed after a
partial parse.

## Reproduction

```ruby
require "json"

parser = JSON::ResumableParser.new
parser &lt;&lt; '{"message":"日本'.freeze   # frozen + multibyte (UTF-8)
parser.parse                          # =&gt; false (incomplete)
parser &lt;&lt; '語のつづき"}'.freeze       # =&gt; Encoding::CompatibilityError: BINARY and UTF-8
```

The error only surfaces when the first chunk is both frozen and multibyte.
A frozen ASCII-only first chunk stays ASCII-compatible and a mutable first
chunk keeps its encoding, so neither triggers it. This is common in
streaming use cases where chunks arrive as frozen UTF-8 (e.g. gRPC/protobuf
string fields), and is easily hit with multibyte (e.g. Japanese) payloads.

## Root cause

In `cResumableParser_feed`, the first feed adopts a frozen input string
directly as the buffer (`parser-&gt;buffer = str`), keeping its UTF-8 encoding.
When a later feed needs to reallocate that frozen buffer, it allocates the
new buffer with `rb_str_buf_new()`, which returns an ASCII-8BIT (BINARY)
string and does not carry over the original UTF-8 encoding. The subsequent
`rb_str_append(parser-&gt;buffer, str)` then appends a multibyte UTF-8 chunk to
a BINARY buffer that already holds non-ASCII bytes, and the two
encodings are incompatible.

`convert_encoding` always normalizes the input to UTF-8, so the buffer is
guaranteed to be UTF-8. Associating the freshly allocated buffer with UTF-8
restores that invariant. This mirrors the existing idiom used for the
generator buffer, and also fixes the latent case where a frozen ASCII-only
first chunk would silently leave the buffer as BINARY.

## Test

Added a regression test feeding frozen multibyte chunks across a partial
parse. The byte-by-byte `assert_resumed_parsing` helper cannot cover this:
it feeds single ASCII-8BIT bytes via `byte.chr`, which `convert_encoding`
turns into a mutable dup, so the buffer never becomes frozen and the
reallocation path is never taken. The `.freeze` calls are kept explicit so
the test still exercises the frozen path even if the file's
`frozen_string_literal` magic comment is ever removed.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01PpeQSEFkF1X1Uuzjx9BsYe

https://github.com/ruby/json/commit/532065c259
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
`JSON::ResumableParser#&lt;&lt;` raises `Encoding::CompatibilityError` when the
first chunk is a frozen multibyte UTF-8 string and more data is fed after a
partial parse.

## Reproduction

```ruby
require "json"

parser = JSON::ResumableParser.new
parser &lt;&lt; '{"message":"日本'.freeze   # frozen + multibyte (UTF-8)
parser.parse                          # =&gt; false (incomplete)
parser &lt;&lt; '語のつづき"}'.freeze       # =&gt; Encoding::CompatibilityError: BINARY and UTF-8
```

The error only surfaces when the first chunk is both frozen and multibyte.
A frozen ASCII-only first chunk stays ASCII-compatible and a mutable first
chunk keeps its encoding, so neither triggers it. This is common in
streaming use cases where chunks arrive as frozen UTF-8 (e.g. gRPC/protobuf
string fields), and is easily hit with multibyte (e.g. Japanese) payloads.

## Root cause

In `cResumableParser_feed`, the first feed adopts a frozen input string
directly as the buffer (`parser-&gt;buffer = str`), keeping its UTF-8 encoding.
When a later feed needs to reallocate that frozen buffer, it allocates the
new buffer with `rb_str_buf_new()`, which returns an ASCII-8BIT (BINARY)
string and does not carry over the original UTF-8 encoding. The subsequent
`rb_str_append(parser-&gt;buffer, str)` then appends a multibyte UTF-8 chunk to
a BINARY buffer that already holds non-ASCII bytes, and the two
encodings are incompatible.

`convert_encoding` always normalizes the input to UTF-8, so the buffer is
guaranteed to be UTF-8. Associating the freshly allocated buffer with UTF-8
restores that invariant. This mirrors the existing idiom used for the
generator buffer, and also fixes the latent case where a frozen ASCII-only
first chunk would silently leave the buffer as BINARY.

## Test

Added a regression test feeding frozen multibyte chunks across a partial
parse. The byte-by-byte `assert_resumed_parsing` helper cannot cover this:
it feeds single ASCII-8BIT bytes via `byte.chr`, which `convert_encoding`
turns into a mutable dup, so the buffer never becomes frozen and the
reallocation path is never taken. The `.freeze` calls are kept explicit so
the test still exercises the frozen path even if the file's
`frozen_string_literal` magic comment is ever removed.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01PpeQSEFkF1X1Uuzjx9BsYe

https://github.com/ruby/json/commit/532065c259
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/mmtk] Implement allocation fast path for Immix</title>
<updated>2026-06-22T07:33:48+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2026-06-15T10:53:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0ef0856f004fcaa503c0af7fc17c835a6cf6140e'/>
<id>0ef0856f004fcaa503c0af7fc17c835a6cf6140e</id>
<content type='text'>
This commit implements a fast path that inlines mmtk_post_alloc for Immix.
The benchmark results show a decent speed up in allocation performance.

    GC.disable

    i = 0
    while i &lt; 10_000_000
      Object.new
      i += 1
    end

Before:

    Time (mean ± σ):     506.3 ms ±   5.0 ms    [User: 442.8 ms, System: 108.8 ms]
    Range (min … max):   497.8 ms … 513.2 ms    10 runs

After:

    Time (mean ± σ):     473.9 ms ±   2.4 ms    [User: 409.4 ms, System: 108.8 ms]
    Range (min … max):   470.4 ms … 478.1 ms    10 runs

https://github.com/ruby/mmtk/commit/663caa25c0
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit implements a fast path that inlines mmtk_post_alloc for Immix.
The benchmark results show a decent speed up in allocation performance.

    GC.disable

    i = 0
    while i &lt; 10_000_000
      Object.new
      i += 1
    end

Before:

    Time (mean ± σ):     506.3 ms ±   5.0 ms    [User: 442.8 ms, System: 108.8 ms]
    Range (min … max):   497.8 ms … 513.2 ms    10 runs

After:

    Time (mean ± σ):     473.9 ms ±   2.4 ms    [User: 409.4 ms, System: 108.8 ms]
    Range (min … max):   470.4 ms … 478.1 ms    10 runs

https://github.com/ruby/mmtk/commit/663caa25c0
</pre>
</div>
</content>
</entry>
<entry>
<title>Retry connection errors when downloading gems</title>
<updated>2026-06-22T06:27:38+00:00</updated>
<author>
<name>Hiroshi SHIBATA</name>
<email>hsbt@ruby-lang.org</email>
</author>
<published>2026-06-22T04:05:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=996647e85cdf7cfaea91403806ea56373b8c3323'/>
<id>996647e85cdf7cfaea91403806ea56373b8c3323</id>
<content type='text'>
SSL_connect failing with Errno::ECONNRESET ("Connection reset by peer")
was not caught by with_retry, so a transient reset from rubygems.org
aborted the build on the first failure instead of retrying. Catch
SystemCallError so the Errno::* family is covered.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
SSL_connect failing with Errno::ECONNRESET ("Connection reset by peer")
was not caught by with_retry, so a transient reset from rubygems.org
aborted the build on the first failure instead of retrying. Catch
SystemCallError so the Errno::* family is covered.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Raise SYNTAX_SUGGEST_TIMEOUT on emulated ppc64le/s390x runners</title>
<updated>2026-06-22T06:27:26+00:00</updated>
<author>
<name>Hiroshi SHIBATA</name>
<email>hsbt@ruby-lang.org</email>
</author>
<published>2026-06-22T03:47:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=766f410549211352212c40e0797d8325e34fc5fe'/>
<id>766f410549211352212c40e0797d8325e34fc5fe</id>
<content type='text'>
syntax_suggest's internal search timeout defaults to 1 second, which is
too short on the emulated ppc64le/s390x runners. The integration spec
issues/95 prints "Search timed out" instead of the expected diagnostic
and flakes. RUBY_TEST_TIMEOUT_SCALE does not affect this timeout, so set
SYNTAX_SUGGEST_TIMEOUT alongside it.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
syntax_suggest's internal search timeout defaults to 1 second, which is
too short on the emulated ppc64le/s390x runners. The integration spec
issues/95 prints "Search timed out" instead of the expected diagnostic
and flakes. RUBY_TEST_TIMEOUT_SCALE does not affect this timeout, so set
SYNTAX_SUGGEST_TIMEOUT alongside it.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Cache bundled gem sources to survive transient clone failures</title>
<updated>2026-06-22T05:46:28+00:00</updated>
<author>
<name>Hiroshi SHIBATA</name>
<email>hsbt@ruby-lang.org</email>
</author>
<published>2026-06-22T04:50:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5c7b23dc65d5851f43c348464d59e02fe4ec77d8'/>
<id>5c7b23dc65d5851f43c348464d59e02fe4ec77d8</id>
<content type='text'>
CI jobs frequently abort when cloning bundled gems from github.com fails
with "Could not resolve host", a transient DNS error unrelated to the
change under test. Cache gems/src keyed on gems/bundled_gems so the common
case touches no network, and fall back via restore-keys so only bumped
gems are re-fetched.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
CI jobs frequently abort when cloning bundled gems from github.com fails
with "Could not resolve host", a transient DNS error unrelated to the
change under test. Cache gems/src keyed on gems/bundled_gems so the common
case touches no network, and fall back via restore-keys so only bumped
gems are re-fetched.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
