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
headius opened this Issue Nov 29, 2017 · 19 comments

Comments

Projects
None yet
6 participants
@headius
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

  • Thread#fetch Feature #13009 (#5089)
  • Description set by Thread#name= is now visible on Windows 10.

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

  • Print backtrace and error message in reverse order if STDERR is unchanged and a tty. Feature #8661 [experimental] (Started in #5094)
  • Print error message in bold/underlined text if STDERR is unchanged and a tty. Feature #14140 [experimental] (Started in #5094)

@headius headius added this to the JRuby 9.3.0.0 milestone Nov 29, 2017

@olleolleolle

This comment has been minimized.

Show comment
Hide comment
@olleolleolle

olleolleolle Dec 1, 2017

Contributor

@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.

Contributor

olleolleolle commented Dec 1, 2017

@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

This comment has been minimized.

Show comment
Hide comment
@enebo

enebo Dec 1, 2017

Member

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

Member

enebo commented Dec 1, 2017

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

@headius

This comment has been minimized.

Show comment
Hide comment
@headius

headius Dec 5, 2017

Member

@olleolleolle Thank you!

Member

headius commented Dec 5, 2017

@olleolleolle Thank you!

@headius

This comment has been minimized.

Show comment
Hide comment
@headius

headius Dec 5, 2017

Member

@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).

Member

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 referenced this issue Jan 8, 2018

Merged

Add Set#reset #4957

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

headius added a commit that referenced this issue Mar 19, 2018

headius added a commit that referenced this issue Mar 19, 2018

headius added a commit that referenced this issue Mar 19, 2018

Add two-arg version of Dir.children. #4876.
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

This comment has been minimized.

Show comment
Hide comment
@headius

headius Mar 19, 2018

Member

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.

Member

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

This comment has been minimized.

Show comment
Hide comment
@nomadium

nomadium Mar 20, 2018

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.

Contributor

nomadium commented Mar 20, 2018

@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

This comment has been minimized.

Show comment
Hide comment
@headius

headius Mar 21, 2018

Member

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

Member

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

Revert "Add Integer#pow. #4876"
This reverts commit b119ccb.

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 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

This comment has been minimized.

Show comment
Hide comment
@headius

headius Mar 27, 2018

Member

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.

Member

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.

@headius headius closed this Mar 27, 2018

@headius headius referenced this issue Mar 27, 2018

Open

Unimplemented Ruby 2.5 Features #5118

1 of 12 tasks complete

headius added a commit that referenced this issue Mar 30, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment