Skip to content

Add content addressable gems support - #9773

Draft
jenshenny wants to merge 5 commits into
ruby:masterfrom
Shopify:feature-branch-ca-changes-rubygems
Draft

Add content addressable gems support#9773
jenshenny wants to merge 5 commits into
ruby:masterfrom
Shopify:feature-branch-ca-changes-rubygems

Conversation

@jenshenny

Copy link
Copy Markdown
Contributor

OughtPuts and others added 2 commits August 7, 2026 13:36
Allow `gem build --ruby-abi X.Y` to build a gem that only supports a
single Ruby ABI (a skinny gem) with a content addressable file name of
the form <name>-<version>-<sha8>.gem, where the suffix is derived from
the SHA-256 digest of the gem contents.

The gem is built in memory and validated against the requested Ruby
ABI. If required_ruby_version is unset it is derived from the ABI; the
passed-in spec is only updated once the build succeeds.

Co-authored-by: Jenny Shen <jenny.shen@shopify.com>
Co-authored-by: Jenny Shen <jenny.shen@shopify.com>
@jenshenny
jenshenny force-pushed the feature-branch-ca-changes-rubygems branch from eee9d05 to 4a5def3 Compare August 10, 2026 18:26
- Parse compact-index suffix as content address when hex + platform:=
  requirement present; carry content_address through resolver.
- Prefer content-addressed gems in resolver when platform specificity ties.
- Download and install SHA-named gem archives; fetch SHA-named gemspecs
  for development dependencies.
- Preserve distinct resolver candidates by content_address in ==/hash.
- Update BasicSpecification.content_address? calls to
  Gem::ContentAddress.match? (PR #172 refactor).

Assisted-By: devx/fff388fa-6f3f-4c7a-8385-6e602f16830e
@jenshenny
jenshenny force-pushed the feature-branch-ca-changes-rubygems branch from 4a5def3 to d849a56 Compare August 10, 2026 18:27
girachawda and others added 2 commits August 13, 2026 10:33
Assisted-By: devx/5f8c508e-3e50-4812-b2c3-84379e7c3fce
Allow gem yank to select CA gems by Ruby ABI
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.

3 participants