Skip to content

Reuse RubyGems' vendored tsort in Bundler#9647

Merged
hsbt merged 1 commit into
masterfrom
claude/optimistic-elgamal-f2ac2c
Jun 24, 2026
Merged

Reuse RubyGems' vendored tsort in Bundler#9647
hsbt merged 1 commit into
masterfrom
claude/optimistic-elgamal-f2ac2c

Conversation

@hsbt

@hsbt hsbt commented Jun 24, 2026

Copy link
Copy Markdown
Member

Bundler vendored its own copy of tsort, which is byte-identical to the copy RubyGems already vendors apart from the namespace. Bundler's required_rubygems_version is >= 3.4.1 and RubyGems has vendored Gem::TSort since 3.4.0, so every supported host already ships it. The duplicate is unnecessary.

This drops lib/bundler/vendor/tsort and points the shim at rubygems/vendored_tsort with a stdlib fallback, matching how vendored_timeout and vendored_net_http already delegate. SpecSet now includes Gem::TSort and rescues Gem::TSort::Cyclic. Unlike securerandom and uri, no Bundler-side fallback copy is kept because the host is guaranteed to have it.

This is the first vendor deduplication step toward unifying the RubyGems and Bundler vendored libraries under the Gem:: namespace.

Bundler's required_rubygems_version (>= 3.4.1) always ships Gem::TSort,
vendored into RubyGems since 3.4.0, so the duplicate Bundler::TSort copy
is unnecessary. Delegate to rubygems/vendored_tsort and switch SpecSet to
include Gem::TSort.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@hsbt hsbt merged commit 25bcc2c into master Jun 24, 2026
107 checks passed
@hsbt hsbt deleted the claude/optimistic-elgamal-f2ac2c branch June 24, 2026 23:00
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.

1 participant