jruby
jruby copied to clipboard
Libraries that need to be gemified
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
👍 I'll support this.
strscan gemification is started in https://github.com/ruby/strscan/pull/25.
See ruby/digest#20 / ruby/digest#21 for the gemification of Digest.
stringio started in https://github.com/ruby/stringio/pull/21
@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 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"?
@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.
https://github.com/ruby/digest/pull/21#issuecomment-912466365
@chrisseaton Thank you!
@hsbt That's everyone!
I will try to make sure the other PRs can get relicensed as well.
I have updated the description with a complete list of Ruby 3.0 gemified libraries and links to current issues and PRs.
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.
The io-wait, stringio, and strscan gems now support JRuby since the last time I updated this.
The english, net-ftp, net-http, net-protocol, securerandom, and weakref libraries are also now sourced from gems.
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.
I add JRuby in the io-nonblock CI in https://github.com/ruby/io-nonblock/pull/12