From: "ksss (Yuki Kurihara) via ruby-core" Date: 2026-10-08T14:33:16+00:00 Subject: [ruby-core:127016] [Ruby Feature#21020] Sync sig directory for prism of default gem. Issue #21020 has been updated by ksss (Yuki Kurihara). Sorry for the late reply. I'd like to resume the discussion. I'd like to install the signatures into the gem directory of each default gem, as @Eregon suggested in #note-3: ``` $prefix/lib/ruby/gems/X.Y.0/gems/$name-$version/sig ``` The reasons are: * rbinstall already creates this directory for every default gem (today it is only used for `exe/`). * Bundled gems and gems installed by RubyGems already put their signatures here, so default gems and bundled gems are handled the same way. * No change is needed in rbs. `RBS::EnvironmentLoader` and `rbs collection` look up `sig` under `Gem::Specification#gem_dir` before the stdlib signatures bundled with the rbs gem, so the installed signatures take precedence. This also satisfies @kddnewton 's condition in #note-4 that RBS should use the overridden version. I also considered options 2 and 3 from @hsbt 's list, but they would require adding new lookup paths to rbs. In addition, only the gem directory approach lets the signatures of a newer gem take precedence naturally when a default gem is updated with `gem update`. In the repository, following @kddnewton 's suggestion, the signatures are synced under the top-level `sig/` directory as `sig//` (e.g. `sig/prism/generated/prism.rbs`). When I opened this issue, prism was the only default gem with type signatures, and the change felt hard to justify for a single gem. Now I see it the other way around. rbs bundles signatures for about 30 default gems in its `stdlib/` directory, and to move them into each gem's own repository, ruby/ruby first needs a place to sync and install them. net-http already ships its own `sig/`, so I included it as well. I've updated https://github.com/ruby/ruby/pull/12541 with this approach, and verified it with `make install` (including with `DESTDIR`), `rbs -r validate` and `rbs collection install`. While verifying it, I found that prism's signatures on main reference `PP` without declaring the dependency, and opened https://github.com/ruby/prism/pull/4248 to fix it. Validating the installed signatures after `make install` makes it possible to catch this kind of problem. ---------------------------------------- Feature #21020: Sync sig directory for prism of default gem. https://bugs.ruby-lang.org/issues/21020#change-119413 * Author: ksss (Yuki Kurihara) * Status: Feedback * Assignee: prism ---------------------------------------- Currently, the type signatures (RBS) for the default gem is not available. **Prism** is the only default gem with type signatures, but this number is expected to increase in the future. As a first step to resolving this issue, I propose including the `sig` directory of Prism as a default gem in the synchronization process. PR: https://github.com/ruby/ruby/pull/12541 -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/