Skip to content

Ruby 2.5 Support #4876

Closed
Closed
@headius

Description

@headius

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions