Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ruby 2.5 Support #4876

Closed
64 of 75 tasks
headius opened this issue Nov 29, 2017 · 19 comments
Closed
64 of 75 tasks

Ruby 2.5 Support #4876

headius opened this issue Nov 29, 2017 · 19 comments
Labels
Milestone

Comments

@headius
Copy link
Member

headius commented Nov 29, 2017

This issue will track Ruby 2.5 support for JRuby. This will be released in JRuby 9.3.0.0 or JRuby 10.

As with previous releases, we will base our checklist on MRI's NEWS file: https://github.com/ruby/ruby/blob/trunk/NEWS
This bug will track all NEWS items new in Ruby 2.5. This list is based off https://github.com/ruby/ruby/blob/trunk/NEWS.

Only changes relevant to JRuby are listed here. MRI-specific internal changes and features are not included.

NOTE: Pull requests should be done against the ruby-2.5 branch.

Language changes

Core classes updates (outstanding ones only)

Array

Data

Dir

File

  • :newline option to File.open implies text mode now. Bug #13350
  • File#path now raises an IOError for files opened with File::Constants::TMPFILE option. Feature #13568
  • Add File.lutime Feature #4052

Hash

IO

IOError

  • exception message "stream closed" is changed Bug #13405

Integer

  • Integer.sqrt Feature #13219
  • Integer#step does no longer rescue exceptions when given a step value which cannot be compared with #> to 0. Feature #7688
  • Integer#{round,floor,ceil,truncate} now always return an Integer. Bug #13420
  • Integer#pow added

Kernel

Module

  • Module#attr, attr_accessor, attr_reader, attr_writer are now public [Feature #14132]
  • Module#define_method, alias_method, undef_method, remove_method are now public [Feature #14133]

Numeric

  • Numerical comparison operators (< ,<=, >=, >) no longer rescue exceptions of #coerce. Return nil in #coerce if the coercion is impossible. Feature #7688

Process

  • Precision of Process.times is improved if getrusage(2) exists. Feature #11952

Range

  • Range#initialize no longer rescue exceptions when comparing begin and
    end with #<=> and raise a "bad value for range" ArgumentError
    but instead let the exception from the #<=> call go through.
    Feature #7688

Regexp

String

  • String#-@ deduplicates unfrozen strings. Already-frozen strings remain unchanged for compatibility. Feature #13077
  • -"literal" (String#-@) optimized to return the same object (same as "literal".freeze in Ruby 2.1+) Feature #13295
  • String#{casecmp,casecmp?} now return nil for non-string arguments instead of raising a TypeError. Bug #13312
  • String#delete_prefix is added to remove prefix Feature #12694
  • String#delete_prefix! is added to remove prefix destructively Feature #12694
  • String#delete_suffix is added to remove suffix Feature #13665
  • String#delete_suffix! is added to remove suffix destructively Feature #13665
  • String#each_grapheme_cluster and String#grapheme_clusters is added to enumerate grapheme clusters Feature #13780
  • String#start_with? supports regexp Feature #13712

Regexp/String:

Thread

Time

  • Time#at receives 3rd argument which specifies the unit of 2nd argument. Feature #13919

KeyError

Stdlib updates (outstanding ones only)

Bundler

Pathname

Psych

RbConfig

  • New constants: RbConfig::LIMITS is added to provide the limits of C types. This is available when rbconfig/sizeof is required. (Partial support implemented, additional types can be added as needed)

Ripper

  • New method: Ripper#state is added to tell the state of scanner. Feature #13686
  • New constants: Ripper::EXPR_BEG and so on for Ripper#state.

SecureRandom

  • New methods: SecureRandom.alphanumeric

Set

StringIO

  • StringIO#write accepts multiple arguments

StringScanner

Compatibility issues (excluding feature bug fixes)

BasicSocket

  • BasicSocket#read_nonblock and BasicSocket#write_nonblock no longer sets the O_NONBLOCK file description flag as side effect (on Linux only) Feature #13362

Random

  • Random.raw_seed renamed to become Random.urandom. It is now applicable to non-seeding purposes due to Bug #9569.

Socket::Ifaddr

ConditionVariable, Queue and SizedQueue reimplemented for speed.

Stdlib compatibility issues (excluding feature bug fixes)

mathn.rb

Rubygems

  • Removed "ubygems.rb" file from stdlib. It's needless since Ruby 1.9.

C API updates

(Probably not JRuby-relevant.)

Supported platform changes

Implementation improvements

(Probably not JRuby-relevant.)

  • This might not be a "user visible feature change" but) Hash class's
    hash function is now SipHash13. Feature #13017
  • SecureRandom now prefers OS-provided sources than OpenSSL. Bug #9569
  • Mutex rewritten to be smaller and faster Feature #13517
  • Performance of block passing using block parameters is improved by lazy Proc allocation Feature #14045
  • Dynamic instrumentation for TracePoint hooks instead of using "trace" instruction to avoid overhead Feature #14104

Miscellaneous changes

@headius headius added this to the JRuby 9.3.0.0 milestone Nov 29, 2017
@olleolleolle
Copy link
Member

@headius See https://gist.github.com/olleolleolle/10cdc1c94214d77d07e8bd56bd80af20 for a Ruby 2.5 sheet of issues - I believe you know best what to polish away from that, but the leg-work is done.

@enebo
Copy link
Member

enebo commented Dec 1, 2017

@olleolleolle thanks for all that work. I added it to the original description!

@headius
Copy link
Member Author

headius commented Dec 5, 2017

@olleolleolle Thank you!

@headius
Copy link
Member Author

headius commented Dec 5, 2017

@olleolleolle I have updated the description by removing any stdlib that we use unmodified (or nearly unmodified). We will still need to toe the line on gemification of those libraries, but I don't consider them major items (a single pass after 2.5 is released to set up all our equivalent default gems will do it).

ChrisBr added a commit to ChrisBr/jruby that referenced this issue Jan 3, 2018
ChrisBr added a commit to ChrisBr/jruby that referenced this issue Jan 4, 2018
ChrisBr added a commit to ChrisBr/jruby that referenced this issue Jan 4, 2018
ChrisBr added a commit to ChrisBr/jruby that referenced this issue Jan 7, 2018
ChrisBr added a commit to ChrisBr/jruby that referenced this issue Jan 7, 2018
ChrisBr added a commit to ChrisBr/jruby that referenced this issue Jan 8, 2018
ChrisBr added a commit to ChrisBr/jruby that referenced this issue Jan 8, 2018
ChrisBr added a commit to ChrisBr/jruby that referenced this issue Jan 8, 2018
@ChrisBr ChrisBr mentioned this issue Jan 8, 2018
ChrisBr added a commit to ChrisBr/jruby that referenced this issue Jan 9, 2018
ChrisBr added a commit to ChrisBr/jruby that referenced this issue Jan 9, 2018
ChrisBr added a commit to ChrisBr/jruby that referenced this issue Jan 9, 2018
ChrisBr added a commit to ChrisBr/jruby that referenced this issue Jan 9, 2018
headius added a commit that referenced this issue Mar 19, 2018
Encoding is ignored currently due to a lack of encoding support
in the Dir.entries logic. This change is to allow find.rb to work
without argument errors.
@headius
Copy link
Member Author

headius commented Mar 19, 2018

We are getting close to being "done enough" with this to merge to master and start tidying things up for release.

For all those interested in helping, the next step is to review the failures in the MRI and ruby/spec suites and either fix them (adding or modifying features as appropriate) or exclude/tag them (for features we won't support or can't support).

A recent build is here. Look at test:mri:int and spec:ruby results.

@nomadium
Copy link
Contributor

@headius There are also a few open PRs with Ruby 2.5 related changes that should help to reduce the number of failures in the tests suites, e.g.: #5056, #5061, #5079, and #5085.

@headius
Copy link
Member Author

headius commented Mar 21, 2018

@nomadium Thanks! I've merged in the relevant ones. We're getting there!

headius added a commit that referenced this issue Mar 27, 2018
headius added a commit that referenced this issue Mar 27, 2018
headius added a commit that referenced this issue Mar 27, 2018
headius added a commit that referenced this issue Mar 27, 2018
headius added a commit that referenced this issue Mar 27, 2018
@headius
Copy link
Member Author

headius commented Mar 27, 2018

The vast bulk of this is now implemented, and I've merged the branch to master. We'll need to green up the builds this week, but we're not far off.

I'll create a new issue for remaining unimplemented 2.5 items.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants