Skip to content

[pull] master from ruby:master#942

Merged
pull[bot] merged 12 commits intoturkdevops:masterfrom
ruby:master
Apr 17, 2026
Merged

[pull] master from ruby:master#942
pull[bot] merged 12 commits intoturkdevops:masterfrom
ruby:master

Conversation

@pull
Copy link
Copy Markdown

@pull pull bot commented Apr 17, 2026

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 : )

hsbt and others added 12 commits April 17, 2026 15:36
When update-NEWS-gemlist.rb drops a bundled/default gem entry from NEWS.md
(because it no longer differs from the previous-release snapshot), the
matching `[gem-vX.Y.Z]: ...` link definitions were left behind by
update-NEWS-github-release.rb. Detect refs that are no longer cited from
the body and drop them alongside the ones we re-emit, while preserving
defs still referenced by gems whose release range could not be refreshed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
GitHub API failures (rate limit, transient 5xx, repo missing) used to abort
the whole script mid-run, leaving NEWS.md in a partially regenerated state.
Wrap the per-gem Octokit call so a single failure only skips that gem with
a stderr warning. Centralise stdgems.json and remote NEWS.md fetches behind
http_get so the script aborts with a readable error when the upstream data
source is unreachable, instead of dumping a Net::HTTP backtrace.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Remove the bundler branch in resolve_repo: collect_gem_updates skips
  bundler before resolve_repo is ever consulted, so the mapping was
  unreachable.
* Inline the gem_name_normalized ternary, which had the same value in both
  arms.
* Remove the unused tag field from footnote_links and switch to map.
* Drop require "set" since Set is autoloaded on supported Ruby versions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The "to" side of the diff used to come from parsing NEWS.md, which made
this script depend on update-NEWS-gemlist.rb having already written the
right versions there. Read the authoritative sources directly: scan
{ext,lib}/**/*.gemspec for default gems (mirroring the logic in
default_gems_list.yml), pick up the RubyGems version from
lib/rubygems.rb, and load gems/bundled_gems for the bundled set.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The "  * 1.2.3 to [v1.2.4][gem-v1.2.4], ..." sub-bullet was assembled in
two places with the same expression. Pull it into a single helper so the
formatting and the bundler-prefix stripping live in one spot.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Drop the bundler- tag-prefix handling from fetch_release_range,
  collect_gem_updates, and format_release_diff. collect_gem_updates skips
  the bundler gem before any of these run, so the special-case prefix
  stripping never had a chance to fire.
* Rename fetch_versions_to_from_news to fetch_versions_from_news now that
  the "to" side comes from load_current_versions; the function only
  feeds the "from" baseline.
* Use Enumerable#to_h to build result_by_name, and remove a couple of
  comments that just restate the immediately following code.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
stdgems.org's "X.Y" key tracks the latest 4.0.x patch level, so once a
gem gets bumped in a Ruby patch release the diff baseline shifts forward
and history that should appear in NEWS.md for the next minor disappears.
Prefer the explicit "X.Y.0" key when present so the baseline always
points at the original X.Y.0 release; fall back to "X.Y" or the highest
matching patch otherwise.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
RubyGems and bundler were skipped outright in collect_gem_updates, so
NEWS.md never picked up the rubygems/rubygems releases shipped between
the X.Y.0 baseline and the in-development X.(Y+1).0.dev. Wire them
through resolve_repo (RubyGems → rubygems/rubygems, bundler same repo
with a "bundler-" tag prefix) and teach fetch_release_range to filter
and look up tags by that prefix. Display tags strip the prefix so the
rendered diff reads "4.0.3 to v4.0.4, ..." for both gems while the
footnote URLs still point at the actual tag names. When the "to"
version ends in .dev/.beta/.rc/etc., the lookup falls back to the
highest released tag so unreleased dev versions still produce a range.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ve dependencies

I am seeing the following error during bundle install:

```
Gem::MissingSpecError: Could not find 'ffi' (>= 1.15.5) among 48 total gem(s) (Gem::MissingSpecError)
```

This is reproducible with:

```ruby
source 'https://rubygems.org'

gem 'llhttp-ffi'
```

It seems only direct dependencies are checked when determining whether
a Gem with native extensions is ready to install. I believe this can
lead to a failure if a transitive dependency is not yet installed.

In the example above, llhttp-ffi depends on ffi-compiler, which depends
on ffi.  Since ffi-compiler has no extensions, it is installed
immediately without waiting for ffi. When llhttp-ffi then checks its
direct dependencies, ffi-compiler is already installed, so llhttp-ffi
starts building its native extension. The build requires ffi, which may
not have been installed yet.

ruby/rubygems@a1f5751177
@pull pull bot locked and limited conversation to collaborators Apr 17, 2026
@pull pull bot added the ⤵️ pull label Apr 17, 2026
@pull pull bot merged commit 11e3c78 into turkdevops:master Apr 17, 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.

3 participants