jruby icon indicating copy to clipboard operation
jruby copied to clipboard

Libraries that need to be gemified

Open headius opened this issue 4 years ago • 22 comments

Updated: Many gems have been incorporated (on our 3.0 branch) and some are in progress, so I am updating this description to include a complete list of the remaining gems needed to match Ruby 3 (in JRuby 9.4). See #4875 for earlier discussion about gemification.

Default Gems, pure-ruby

Most of the pure-Ruby libraries have been updated to use the gems. The exceptions below may not install or may have other native library dependencies that do not yet support JRuby.

  • [x] english: refused to install through mavengems for some reason
  • [ ] debug: out of sync in CRuby repo and missing JRuby tweaks
  • [x] net/ftp: tweaks for missing jruby-openssl functionality
  • [x] net/http: tweaks for JDK proxy properties
  • [x] net/protocol: depends on C extension gems that do not currently have JRuby support
  • [x] open3: we have custom logic that needs to be merged with the gem (https://github.com/ruby/open3/pull/3)
  • [ ] readline: need to get JRuby support into readline-ext before we can remove our version
  • [ ] resolv: needs some JRuby tweaks in the gem
  • [x] securerandom: we have a custom version that uses a native extension
  • [ ] set: ours is all native and needs to be merged with the gem
  • [x] tempfile: switching to the gem in JRuby 10 (#7973)
  • [ ] tmpdir: minor tweaks to our version that needed to be merged
  • [x] weakref: ours is all native and needs to be merged with the gem

Default gems, native extensions

All of these gems need native JRuby support, or some workaround:

  • [x] bigdecimal (https://github.com/ruby/bigdecimal/pull/250)
  • [x] cgi (https://github.com/ruby/cgi/pull/9)
  • [x] digest - we have our own impl (ruby/digest#20, ruby/digest#21)
  • [ ] date
  • [ ] dbm/gdbm (low priority, rarely used)
  • [ ] etc (could possibly move to pure-FFI)
  • [ ] fcntl (same)
  • [ ] fiddle (not based on FFI)
  • [x] io-nonblock (https://github.com/ruby/io-nonblock/pull/12)
  • [x] io-wait (https://github.com/ruby/io-wait/pull/2)
  • [ ] nkf (low priority)
  • [ ] openssl (https://github.com/ruby/openssl/pull/598)
  • [ ] pathname
  • [ ] readline-ext
  • [x] stringio (https://github.com/ruby/stringio/pull/21)
  • [x] strscan (https://github.com/ruby/strscan/pull/25)
  • [ ] syslog
  • [ ] win32ole
  • [ ] zlib

Bundled gems, not default but with native requirements

  • [ ] rbs: includes a large native extension for CRuby that we do not have
  • [ ] typeprof: depends on rbs

headius avatar May 24 '21 18:05 headius

👍 I'll support this.

hsbt avatar Jun 07 '21 02:06 hsbt

strscan gemification is started in https://github.com/ruby/strscan/pull/25.

headius avatar Sep 03 '21 05:09 headius

See ruby/digest#20 / ruby/digest#21 for the gemification of Digest.

headius avatar Sep 03 '21 05:09 headius

stringio started in https://github.com/ruby/stringio/pull/21

headius avatar Sep 03 '21 05:09 headius

@headius Thanks for your work! Did we get the approval for relicensing JRuby libraries that are this work at https://github.com/ruby/digest/pull/21#issuecomment-861015401 ?

I'm not sure what we should get the approval for that each pull requests.

hsbt avatar Sep 03 '21 05:09 hsbt

@hsbt I believe we got approval from everyone except @chrisseaton in that PR and updated my comment to be a checklist.

@chrisseaton You responded affirmatively to the PR, but could you add something along the lines of "I consent to having my contributions relicensed etc etc"?

headius avatar Sep 03 '21 05:09 headius

@hsbt FWIW having talked with legal-ish folks about license changes, as long as everyone publicly states that they are ok with it that is generally enough, legally-speaking.

headius avatar Sep 03 '21 05:09 headius

https://github.com/ruby/digest/pull/21#issuecomment-912466365

chrisseaton avatar Sep 03 '21 11:09 chrisseaton

@chrisseaton Thank you!

@hsbt That's everyone!

headius avatar Sep 04 '21 16:09 headius

I will try to make sure the other PRs can get relicensed as well.

headius avatar Sep 04 '21 16:09 headius

I have updated the description with a complete list of Ruby 3.0 gemified libraries and links to current issues and PRs.

headius avatar Oct 01 '21 04:10 headius

complete list

At least a complete list of the gemified libraries that we could not trivially incorporate. Several like fileutils and rdoc already worked fine and have just been switched to default gems.

headius avatar Oct 01 '21 04:10 headius

The io-wait, stringio, and strscan gems now support JRuby since the last time I updated this.

headius avatar Mar 01 '23 21:03 headius

The english, net-ftp, net-http, net-protocol, securerandom, and weakref libraries are also now sourced from gems.

headius avatar Mar 01 '23 21:03 headius

bigdecimal and openssl have merged JRuby gem configs for stub gems that depend on our own libraries:

  • https://github.com/ruby/bigdecimal/pull/250
  • https://github.com/ruby/openssl/pull/598

These have not yet been released in gems.

headius avatar Mar 01 '23 21:03 headius

I add JRuby in the io-nonblock CI in https://github.com/ruby/io-nonblock/pull/12

eregon avatar May 30 '23 12:05 eregon