Skip to content

[pull] master from ruby:master#1172

Merged
pull[bot] merged 5 commits into
turkdevops:masterfrom
ruby:master
Jul 2, 2026
Merged

[pull] master from ruby:master#1172
pull[bot] merged 5 commits into
turkdevops:masterfrom
ruby:master

Conversation

@pull

@pull pull Bot commented Jul 2, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

ko1 and others added 5 commits July 2, 2026 05:19
`do { ...; continue; } while(0)` doesn't retry the loop body.

pointed out by Coverity Scan and mame.
test_stat_single fails intermittently:

  1) Failure:
  TestGc#test_stat_single [test/ruby/test_gc.rb:198]:
  <12> expected but was
  <13>.

The test reads the full GC.stat hash and then GC.stat(:count) separately
and asserts they are equal:

    stat = GC.stat
    assert_equal stat[:count], GC.stat(:count)

These are two separate reads of :count. If a GC runs between them, :count
increases and the reads disagree (stat[:count] < GC.stat(:count)). A GC in
that window can be triggered by an allocation on another thread; running
the two reads in a loop with a background allocating thread reproduces it
deterministically (54/2,000,000 mismatches; 0 after the fix).

The exact source of the GC in the failing CI run is unclear (test-all runs
each test process independently), so rather than chase the trigger, disable
GC around the two reads (matching test_stat_heap etc.) so :count cannot
change between them.

CI: https://ci.rvm.jp/results/trunk@ruby-sp3/6395611
log: https://ci.rvm.jp/logfiles/brlog.trunk.20260629-050802

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
These examples pass on Windows as is now. Materialization detects a yanked
platform-specific locked spec and falls back to the generic variant the same
as other platforms, `bundle exec bundle` resolves the bundle executable, and
git on Windows accepts branch and tag names starting with `#`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
write_lock decided whether to emit `\r\n` from @lockfile_contents, which is
read in text mode and drops carriage returns on Windows. A `\r\n` lockfile
was therefore rewritten with `\n`. Detect the existing line ending from the
raw bytes on disk instead, and apply the conversion after the equality check
so the comparison keeps operating on `\n` content.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Keeps IO errors on the raw read mapped to Bundler friendly errors like the
other file operations in write_lock. Also rename the CRLF spec descriptions
that spelled the line ending backwards.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@pull pull Bot locked and limited conversation to collaborators Jul 2, 2026
@pull pull Bot added the ⤵️ pull label Jul 2, 2026
@pull pull Bot merged commit e91f477 into turkdevops:master Jul 2, 2026
1 of 3 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants