Feature #19351
Updated by hsbt (Hiroshi SHIBATA) over 1 year ago
In Ruby 3.2, the default gems and bundled gems are changed only adding `syntax_suggest`. I and some committers are considering promote default gems to bundled gems again for Ruby 3.3+. We hope to keep the current developer experience with dependency resolution and ignore the additional work like "Put gem "xxx" into your Gemfile" for developers. ### Proposal We propose the following libraries will promote default gems to bundled gems at Ruby 3.3. They are not the dependencies of Rails and RubyGems/Bundler. ``` abbrev getoptlong observable resolv-replace rinda nkf (C-ext) syslog (C-ext) ``` Update: I removed `optparse` and `un` from above list. Because they are used by Ruby build process. ``` optparse un ``` Update 2: I also removed the following libraries. `resolv` and `fcntl` are used by test of Ruby internal like `test_io.rb`. And we don't have built process of C extension at Windows platform. I gave up to extract `win32ole` in this time. ``` resolv fcntl (C-ext) win32ole (C-ext) ``` ### Additional works I also propose to promote rails dependencies without rubygems/bundler deps: ``` drb irb reline mutex_m ostruct rdoc singleton tsort weakref ``` Update: `delegate` is used by `tempfile`. We need to keep `delegate` as default gems for build process. and I added `reline` into above list. Update 2: The following libraries used by tests of `ruby/ruby` and other libraries like psych. I need to remove their dependency from `ruby/ruby`. ``` base64 benchmark forwardable ipaddr irb reline ostruct rdoc singleton tsort weakref bigdecimal (C-ext) date(datetime) (C-ext) ``` And gems maintained by @kou ``` csv ``` Following gems also maintained by @kou, but they are used on RubyGems/Bundler or MJIT. Maybe, We couldn't promote them because RubyGems/Bundler couldn't bundle C-ext gems. ``` fiddle (C-ext): used by MJIT stringio (C-ext) used by RubyGems/Bundler strscan (C-ext) used by RubyGems/Bundler ``` But if we promote them to bundled gems, many of users need to add like `gem "csv"` into their Gemfile. I'm considering to avoid this situation. Can we introduce the specific feature of bundled gems to RubyGems or Bundler? Example, bundler have allowed list for bundled gems. So, listed gems could be require without Gemfile under the bundle exec.