Ruby on Rails
Transitioning pre-compiled gems to single-ABI content-addressable storage slashes package size and speeds up bundle resolution by bypassing local C and Rust compilation.
AI-assisted summary of The RubyGems Compact Index: What Powers Every `bundle install` - Jenny Shen — original source. Check the original for full context.
Source published:
Key ideas
- The RubyGems Compact Index handles over 50 million requests daily across three endpoints (/names, /versions, /info), serving metadata statically via CDN-backed S3 buckets with dynamic Rails servers operating as a fallback. (5:41)
- RubyGems executed a zero-downtime blue-green S3 migration across 200,000+ gem info files to backfill created_at timestamps, enabling Bundler to enforce dependency cooldowns that mitigate account-takeover supply chain attacks. (12:27)
- Because native C and Rust extension compilation accounts for over 70% of bundle install execution time, RubyGems 4.1 beta introduced single-ABI content-addressable gems to replace bloated multi-ABI fat gems, cutting sample bundle download sizes by 20%. (14:40)
- Future compact index roadmap items include embedding vulnerability advisory metadata directly into dependency resolution and adding explicit Ruby engine requirements to prevent binary incompatibilities on runtimes like TruffleRuby. (22:27)
Detailed notes
## Background Published on YouTube by the Ruby on Rails channel on October 1, 2026, this Rails World talk features Shopify senior developer and RubyGems.org maintainer Jenny Shen. According to the show notes, Shen explains how the Compact Index powers every `bundle install` and highlights upcoming features like dependency cooldowns and content-addressable gems designed to make package resolution faster and safer.
## TL;DR The RubyGems Compact Index handles over 50 million daily requests across three endpoints (`/names`, `/versions`, and `/info`), compressing dependency metadata for over 200,000 gems into static S3 files that Bundler syncs via conditional HTTP requests and checksum comparisons. To defend against supply chain attacks, the RubyGems team executed a zero-downtime blue-green S3 migration to append publication timestamps (`created_at`) to every `/info` file, enabling native dependency cooldowns in Bundler. To address the fact that compiling C and Rust native extensions consumes over 70% of `bundle install` execution time, RubyGems 4.1 beta introduces single-ABI "content-addressable gems" suffixed with an eight-character checksum hash. This architecture replaces bloated multi-ABI "fat" gems, reduces bundle download sizes by 20% in fresh Rails benchmarks, and allows maintainers to publish binaries for new Ruby versions retroactively without breaking legacy Bundler clients.
## Atmosphere & style The talk begins with a playful, interactive energy as Shen warms up a hot afternoon conference crowd—in the final slot before the closing keynote—by performing an onstage card trick using a handmade magician's wallet. Her narrative style blends approachable, self-deprecating developer humor with clear architectural explanations that make low-level packaging infrastructure feel accessible and engaging. As the presentation progresses from foundational mechanics to supply chain security and ecosystem performance, the mood shifts into a focused, forward-looking engineering deep dive that leaves the audience energized about the future of Ruby tooling.
## Bulletin - [05:41](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=341s) The RubyGems Compact Index handles over 50 million requests daily across three endpoints (/names, /versions, /info), serving metadata statically via CDN-backed S3 buckets with dynamic Rails servers operating as a fallback. - [12:27](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=747s) RubyGems executed a zero-downtime blue-green S3 migration across 200,000+ gem info files to backfill created_at timestamps, enabling Bundler to enforce dependency cooldowns that mitigate account-takeover supply chain attacks. - [14:40](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=880s) Because native C and Rust extension compilation accounts for over 70% of bundle install execution time, RubyGems 4.1 beta introduced single-ABI content-addressable gems to replace bloated multi-ABI fat gems, cutting sample bundle download sizes by 20%. - [22:27](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=1347s) Future compact index roadmap items include embedding vulnerability advisory metadata directly into dependency resolution and adding explicit Ruby engine requirements to prevent binary incompatibilities on runtimes like TruffleRuby.
## Key takeaways - [01:47](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=107s) The RubyGems Compact Index functions similarly to financial indexing and magic indexing wallets by compressing massive datasets (over 200,000 gems) into compact structures for rapid retrieval. - [05:41](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=341s) Bundler minimizes network transfer during dependency resolution by utilizing local caching in ~/.bundle/cache, ETag-driven byte-range diffs from /versions, and checksum comparisons before fetching /info files. - [08:55](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=535s) RubyGems offloads traffic by serving compact index files directly from AWS S3 via a CDN, falling back to dynamic Rails application servers only during cache misses or S3 downtime. - [08:55](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=535s) A monthly rake task compacts the continuously growing /versions file to consolidate duplicate delta lines from pushes and yanks back into single canonical summary rows. - [10:45](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=645s) Dependency cooldown periods establish a required time buffer (e.g., 7 days) before newly published gem versions can be resolved, allowing automated scanners and maintainers to identify hijacked accounts. - [12:27](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=747s) To support cooldowns without breaking production traffic, the RubyGems team used a blue-green migration to regenerate all 200,000+ S3 info files with publication timestamps in a parallel v2/ directory before switching CDN routing. - [14:40](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=880s) Compiling native C or Rust extensions consumes more than 70% of standard bundle install duration, making binary pre-compilation essential for package manager performance. - [16:35](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=995s) Legacy pre-compiled 'fat' gems must bundle binaries for multiple minor Ruby ABIs into a single package, leading to bloated downloads and requiring gem maintainers to write runtime binary selection code. - [16:35](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=995s) Multi-ABI packaging prevents gem authors from releasing binaries for newly launched Ruby versions on older gem releases without minting entirely new gem patch versions. - [18:02](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=1082s) Content-addressable gems package binaries tailored to an individual Ruby ABI, using the first eight characters of the artifact checksum as a filename suffix while declaring the target platform as a dependency requirement. - [18:02](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=1082s) To prevent legacy Bundler clients from misinterpreting 8-character SHA suffixes as unknown platform strings and crashing, content-addressable gems use required_rubygems_version metadata to remain invisible to older tools. - [22:27](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=1347s) Integrating security advisories directly into the Compact Index would allow Bundler to surface vulnerability warnings in the terminal during bundle install before compromised code reaches production. - [22:27](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=1347s) Adding Ruby engine metadata to the Compact Index will prevent non-CRuby runtimes like TruffleRuby from incorrectly downloading incompatible CRuby-compiled C extensions.
## Detailed walkthrough ### [00:00](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=0s) The Magic Trick: Revealing Rails 4
Jenny Shen kicks off the presentation as the final talk before the closing keynote at Rails World. Despite the scorching weather, she is thrilled to be onstage and begins by polling the room on who has heard of the RubyGems Compact Index. Seeing only a scattering of raised hands, she offers a warmup exercise in the form of a magic trick, inviting Michelle back onstage.
Jenny asks Michelle a simple question: "What is the first major Rails version you started developing on?" Michelle responds with "four." Jenny explains that this very number has traveled across the stage and is already waiting inside her pocket. She hands a card to Michelle, who opens it up to reveal the number four to gasps and laughter from the audience.
[01:47](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=107s) From Magic Wallets to the RubyGems Compact Index
Admitting that while real magicians never reveal their secrets, she is just a developer, Jenny discloses how the trick works: it relies on a "compact index." Specifically, it uses the Quiver Compact Index, a specialized magician's wallet designed to organize up to 16 cards for instantaneous indexing and sleight-of-hand retrieval. Because the wallet was sold out online, Jenny constructed her own handcrafted "V2" version.
She notes that "compact index" is also a term used in quantitative finance for an algorithm that condenses hundreds or thousands of index stocks down to a small, manageable basket while preserving diversification. Across magic, finance, and software, compact indexes share the exact same philosophy: "They compress and organize large amounts of information for quick retrieval or simplicity." In the Ruby world, the RubyGems Compact Index compresses dependency metadata across all 200,000+ gems hosted on RubyGems.org so that Bundler can resolve dependencies swiftly and reliably.
```mermaid flowchart TD accTitle: Core Concept of a Compact Index accDescr: Diagram illustrating how large datasets are compressed into an organized index across magic, finance, and RubyGems.
subgraph Inputs["Large Datasets"] Cards["Full Deck of Cards"] Stocks["100s–1000s of Index Stocks"] Gems["200,000+ Gems on RubyGems.org"] end
subgraph Compression["Compact Index Mechanism"] Wallet["Quiver Wallet (16 slots)"] Algo["Financial Compression Algorithm"] CI["RubyGems Compact Index"] end
subgraph Outputs["Fast Retrieval"] Trick["Instant Card Retrieval"] Portfolio["Diversified Mini-Portfolio"] Bundler["Fast Bundler Resolution"] end
Cards --> Wallet --> Trick Stocks --> Algo --> Portfolio Gems --> CI --> Bundler ```
[03:49](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=229s) Why RubyGems at Rails World & Speaker Intro
Jenny addresses why a RubyGems deep dive belongs at a Rails conference: Rails applications fundamentally depend on gems and seamless installation. Enhancing the performance, reliability, and security of gem resolution directly impacts every Rails engineer's day-to-day workflow, and the Compact Index sits at the center of all those recent architectural enhancements.
Introducing herself, Jenny jokes that while she is not a stage magician, she qualifies as a "software magician": "I can make code appear out of nowhere. The secret to that is AI. And I can sometimes make bugs magically appear as well." She works as a senior developer at Shopify based in Ottawa, Canada, and serves as a maintainer and operator of RubyGems.org, encouraging attendees to get involved and contribute to the platform.
[05:41](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=341s) Compact Index Architecture: Endpoints and Bundler Resolution
The RubyGems Compact Index is a high-throughput system handling over 50 million requests per day across three core endpoints: - `/names`: Returns the complete list of all gem names on the platform. - `/versions`: Returns each gem name alongside all available version numbers and their corresponding info checksums. - `/info`: Returns detailed version-by-version dependency trees, Ruby/RubyGems requirements, and gem checksums for an individual gem.
Bundler relies primarily on the `/versions` and `/info` endpoints during resolution. When a user runs `bundle install` without an existing `Gemfile.lock`, modifies dependencies in `Gemfile`, or lacks local gems, Bundler contacts `/versions`. Bundler caches index files locally inside the `~/.bundle/cache` directory and performs conditional HTTP requests using `ETag` headers. When changes exist upstream, the server responds with only the appended byte range of new versions, which Bundler seamlessly merges into its local copy.
To evaluate individual gem compatibility and transitive dependencies, Bundler queries the `/info` endpoint. Each row in an info response details a version, its platform requirements, dependency constraints, and cryptographic checksums. Bundler saves these info responses locally. Before requesting an update for a gem's `/info` file, Bundler computes a local hash of the file's contents and compares it to the `info_checksum` listed in the `/versions` file; only if the checksum differs does Bundler download an updated info payload.
```mermaid flowchart LR accTitle: Bundler and Compact Index Interaction accDescr: Resolution workflow showing Bundler synchronizing the versions and info endpoints.
subgraph Client["Local Machine"] BI["bundle install"] BCache["Local Bundle Cache (~/.bundle/cache)"] end
subgraph Endpoints["RubyGems Compact Index"] V["/versions Endpoint"] I["/info/:gem Endpoint"] end
BI -->|"1. Conditional Request with ETag"| V V -->|"2. New version diff bytes"| BCache BCache -->|"3. Compare SHA against info_checksum"| BCache BCache -->|"4. Fetch if hash differs"| I I -->|"5. Dependencies & Requirements"| BI ```
[08:55](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=535s) Under the Hood: Pushes, Yanks, S3 Caching, and Maintenance
Jenny outlines the backend architecture handling gem lifecycle events on RubyGems.org. Whenever an author pushes a new gem release, RubyGems enqueues background jobs that append a new line to the `/versions` file and update the gem's corresponding `/info` file. Both artifacts are written directly to an AWS S3 bucket.
The edge architecture is designed to offload traffic from web workers: - Inbound requests through the CDN targeting the Compact Index are routed straight to static assets in the S3 bucket. - If a file is absent from the bucket or an S3 outage occurs, the CDN fails over to dynamic Rails application servers. - When a version is yanked, the system subtracts that version from `/versions` and strips it out of the `/info` document.
Because high volumes of pushes and yanks append delta lines over time, the `/versions` file naturally expands in size. To keep client payloads small and parsing fast, RubyGems executes a monthly rake task that compacts and consolidates duplicate lines for every gem down to a single canonical summary row.
[10:45](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=645s) Security Evolution: Dependency Cooldowns
Jenny transitions to major recent upgrades, starting with supply chain defense via dependency cooldowns. A cooldown establishes a time delay—such as 7 days—before newly published gem versions can be resolved and installed by clients. If a new Rails release ships today under a 7-day cooldown policy, Bundler will intentionally ignore it until the 7-day window elapses.
The feature directly counters a surge in account takeover attacks against open-source maintainers, a threat amplified by AI-driven automation and phishing campaigns. Jenny highlights the high-profile Axios compromise on npm earlier in the year, where a hijacked maintainer account published a malicious package version. Cooldown windows give automated security scanners and maintainers vital breathing room to discover compromised releases and yank them before production applications run automated updates. Following similar initiatives across PyPI and npm, the Ruby community recognized the urgency to incorporate cooldown capabilities natively.
[12:27](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=747s) The Blue-Green S3 Migration and Bundler Support
Enabling cooldowns requires Bundler to verify the exact publication timestamp of every gem version. Historically, the Compact Index `/info` format had no publication dates. Fortunately, the extensible Compact Index specification permits optional entries in the requirements section of the format, making it possible to append a `created_at` timestamp.
However, rolling out this change posed a massive data infrastructure challenge: every single one of the 200,000+ info files hosted in S3 had to be regenerated and replaced without interrupting millions of daily production requests. The team opted for a blue-green migration: 1. The CDN continued serving active live traffic from the existing primary directory (the "blue" index). 2. Code changes were deployed so that all incoming gem pushes and yanks updated both the active index and a new `v2/` directory in parallel. 3. A background migration backfilled updated `/info` files containing `created_at` metadata for all 200,000 gems into the `v2/` prefix. 4. Once validation completed, the CDN was shifted to point directly to the `v2/` directory, retaining the ability to instantly roll back if regressions occurred.
With publication timestamps fully integrated into the upstream Compact Index, core maintainer Hiroshi Shibata (hsbt) added dependency cooldown support directly to Bundler. Developers can leverage this protection using the `--cooldown` CLI flag during gem installation, or enforce it globally via Bundler configuration and Gemfile settings.
- Cooldown settings can be declared directly in the `Gemfile`, via Bundler configuration, or passed as an argument to `gem install`. - The blue-green approach prevented any CDN downtime across the 200,000 regenerated files while preserving immediate rollback capabilities.
[14:40](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=880s) The Cost of Native Extensions and Legacy Pre-Compilation
Turning the focus from dependency cooldowns to raw speed, Jenny Shen highlights that the Ruby ecosystem must remain competitive, particularly with tools like Python’s `uv` demonstrating how fast modern package management can be. Profiling reveals that more than 70% of total `bundle install` execution time is consumed by compiling native extensions—a figure Shen notes with a laugh is "a lot." Native extensions allow gem authors to write performance-critical components in C or Rust. When these gems lack pre-compiled binaries, Bundler must execute compilation scripts declared in the gem’s gemspec on the developer’s local machine before the gem can be used.
```mermaid flowchart TD accTitle: Evolution of Pre-compiled Gems in RubyGems accDescr: Comparison between legacy multi-ABI fat gems and the new single-ABI content-addressable gems.
subgraph Legacy["Legacy Pre-compiled Gems (Multi-ABI)"] L1["Platform-suffixed Gem<br/>(e.g., nokogiri-x86_64-linux)"] L1 --> L2["Bundles Ruby 3.1 ABI"] L1 --> L3["Bundles Ruby 3.2 ABI"] L1 --> L4["Bundles Ruby 3.3 ABI"] L1 --> L5["Requires runtime binary selection logic"] end
subgraph CAG["Content-Addressable Gems (Single-ABI)"] C1["SHA-suffixed Gem<br/>(First 8 hex digits)"] C1 --> C2["Targeted Single Ruby ABI"] C1 --> C3["Platform moved to metadata requirement"] C1 --> C4["New ABIs publishable after gem release"] end ```
The established workaround in the Ruby community has been publishing pre-compiled "fat" binaries, exemplified by gems like Nokogiri. Rather than building from source, users download binaries already compiled for their specific operating system and architecture. However, native binaries depend on Ruby's Application Binary Interface (ABI). Because minor Ruby releases alter internal C data structures and engine mechanics, compiled binaries are not compatible across different Ruby versions. To make pre-compilation practical, maintainers historically bundled binaries for every supported minor Ruby version into a single platform-specific gem package.
- Compiling native extensions written in C or Rust accounts for over 70% of standard `bundle install` wall-clock time. - Minor Ruby releases introduce ABI breaking changes, requiring separate binary builds for each supported Ruby ABI. - Existing pre-compiled gems package multiple ABI variants into one fat gem per target operating system architecture.
---
[16:35](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=995s) The Limitations of "Fat" Multi-ABI Gems
While shipping pre-compiled gems provides a substantial speedup over local compilation, the legacy multi-ABI paradigm creates several architectural headaches:
First, fat gems are unnecessarily bloated. Because a single package bundles binary artifacts for multiple Ruby ABIs, developers download megabytes of compiled code for Ruby versions they do not run, even though "most of the time, you'll only need to use one." Second, gem maintainers must write runtime loader scripts inside their gems to inspect the running Ruby version and dynamically require the matching native artifact.
Crucially, the legacy design locks maintainers out of updating existing releases. If a maintainer releases a gem supporting Ruby 3.2 and 3.3, and Ruby 3.4 is subsequently released, the maintainer cannot retroactively attach a Ruby 3.4 ABI binary to that existing gem release without creating an entirely new patch version. Being able to independently distribute distinct, single-ABI binaries would drastically reduce gem tarball sizes, speed up downloads, simplify gem codebases, and allow post-release publishing of new ABI targets for older gem versions.
---
[18:02](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=1082s) Content-Addressable Gems and Compact Index Adjustments
To resolve the constraints of multi-ABI packaging, the RubyGems team implemented "content-addressable gems," a concept originally envisioned by Aaron Patterson. Instead of packaging multiple ABIs under a platform suffix, content-addressable gems package pre-compiled artifacts scoped to a single, specific Ruby ABI.
Because RubyGems and the compact index historically rely on unique tuple keys that prevent publishing multiple gem variations for the same platform and version string without collisions, a structural naming and metadata adjustment was required:
1. **SHA Suffixing:** The gem name's platform suffix is replaced with the first eight characters of the artifact's checksum hash. 2. **Platform as a Requirement:** The target platform (e.g., `x86_64-linux`, `arm64-darwin`) is moved out of the filename suffix and into the compact index’s dependency requirements list. 3. **Ruby ABI Scoping:** The `required_ruby_version` specification is constrained directly to the single exact Ruby ABI for that binary.
This architectural shift introduced a major backwards-compatibility hurdle: older versions of Bundler parse any suffix on a gem name as a platform identifier, causing legacy clients to misinterpret the eight-digit checksum as an unknown platform and crash. To safeguard older installations, the team added a `required_rubygems_version` constraint to the metadata. This effectively hides content-addressable gems from legacy Bundler clients while serving them cleanly to modern ones.
- The feature made its debut in the RubyGems 4.1 beta release. - Work is underway across the broader ecosystem toolchain, including a pull request to `rake-compiler` so maintainers can build and publish single-ABI content-addressable gems directly from standard build pipelines. - Maintainers who have not yet automated pre-compilation can adopt `ci-build-gem`, a utility created by Edward Loveall that generates GitHub Actions workflows to compile binaries per platform and upload them to RubyGems.org. - When resolving dependencies, modern Bundler clients prioritize content-addressable gems over legacy multi-ABI variants, rendering resolved entries in a dedicated section of `Gemfile.lock`. - In test benchmarks deploying single-ABI versions of all pre-compiled gems for a fresh Rails application, overall bundle download size shrank by 20%, laying the infrastructure needed to pre-compile the dozens of native gems that currently compile from source.
---
[22:27](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=1347s) Future Compact Index Horizons: Advisories and Engine Targeting
Looking beyond cooldowns and content-addressable packages, Shen outlines upcoming improvements under consideration for RubyGems and the compact index format:
```mermaid flowchart LR accTitle: Proposed Compact Index Metadata Additions accDescr: Future extensions to compact index metadata including security advisories and Ruby engine information.
subgraph CI["Compact Index Entry"] A["Gem Name & Version"] B["Existing Dependency Requirements"] end
subgraph Proposals["Proposed Additions"] C["Security Advisory Data<br/>(Warn on known vulnerabilities)"] D["Ruby Engine Requirement<br/>(Differentiate CRuby vs. TruffleRuby)"] end
CI --> C CI --> D ```
One major area is native security warnings during installation. Building on the safety benefits introduced by cooldown periods, the compact index could embed vulnerability advisory metadata. This would enable Bundler to immediately detect and flag vulnerable gem versions directly during `bundle install`, alerting developers before insecure code hits production environments.
Another area is expanding runtime compatibility requirements within pre-compiled metadata. Currently, the compact index lacks explicit Ruby engine information. This omission causes bugs when alternative runtimes such as TruffleRuby attempt to install gems: TruffleRuby can inadvertently fetch CRuby-compiled C extensions that fail to link properly. Injecting engine metadata directly into the compact index will enable gem authors to compile and distribute separate native binaries for non-CRuby engines while ensuring package resolution tools always download the correct binary for the active runtime.
---
[23:50](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=1430s) Conclusion and Community Roadmap
Shen concludes by reviewing the mechanics of the compact index, its interaction with Bundler, and recent features like dependency cooldowns and content-addressable pre-compilations. She encourages attendees to test the beta releases of RubyGems and Bundler, noting that developer feedback during beta cycles is vital for uncovering edge cases before stable distribution. Detailed release notes are available on the RubyGems release pages, and a forthcoming technical blog post will document the inner workings of content-addressable gems. Expressing gratitude to the RubyGems contributors and the Shopify engineering team, Shen wraps up the presentation to audience applause.
## Notable quotes > [00:00](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=0s) What is the first major Rails version you started developing on? — Jenny Shen
> [01:47](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=107s) They compress and organize large amounts of information for quick retrieval or simplicity. — Jenny Shen
> [03:49](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=229s) I can make code appear out of nowhere. The secret to that is AI. And I can sometimes make bugs magically appear as well. — Jenny Shen
> [16:35](https://www.youtube.com/watch?v=Z9XUvK8Sr5c&t=995s) most of the time, you'll only need to use one. — Jenny Shen
## Mentioned Jenny Shen, Michelle, Hiroshi Shibata (hsbt), Aaron Patterson, Edward Loveall, Shopify, Ruby on Rails, Rails World, RubyGems, RubyGems.org, RubyGems Compact Index, Bundler, Quiver Compact Index, AWS S3, Axios, npm, PyPI, uv, Nokogiri, rake-compiler, ci-build-gem, GitHub Actions, CRuby, TruffleRuby
## Video description Dependency cooldowns and content-addressable gems are coming to RubyGems. Jenny Shen (Shopify) explains how the compact index behind every 'bundle install' works, and what's changing to make it safer and faster.
Thank you Shopify for sponsoring the editing and post-production of these videos. Check out insights from the Engineering team at: https://shopify.engineering/
#RailsWorld #rubygems
[Source](https://www.youtube.com/watch?v=Z9XUvK8Sr5c)