-
-
Notifications
You must be signed in to change notification settings - Fork 942
Closed
Labels
Milestone
Description
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
- Top-level constant look-up is removed. Feature #11547
- rescue/else/ensure are allowed inside do/end blocks. Feature #12906
- refinements take place in string interpolations. Feature #13812
Core classes updates (outstanding ones only)
Array
-
Array#appendFeature #12746 -
Array#prependFeature #12746
Data
- Now deprecated Feature #3072
Dir
-
Dir.globprovides new optional keyword argument,:base. Feature #13056 -
Dir.childrenFeature #11302 -
Dir.each_childFeature #11302
File
- :newline option to
File.openimplies text mode now. Bug #13350 -
File#pathnow raises an IOError for files opened withFile::Constants::TMPFILEoption. Feature #13568 - Add
File.lutimeFeature #4052
Hash
-
Hash#transform_keysFeature #13583 -
Hash#transform_keys!Feature #13583 -
Hash#sliceFeature #8499
IO
-
IO#preadFeature #4532 -
IO#pwriteFeature #4532 -
IO#copy_streamtries copy offload withcopy_file_range(2)Feature #13867 -
IO#writeaccepts multiple arguments Feature #9323
IOError
- exception message "stream closed" is changed Bug #13405
Integer
-
Integer.sqrtFeature #13219 -
Integer#stepdoes 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#powadded
Kernel
-
Kernel#yield_selfFeature #6721 -
Kernel#ppFeature #14123
Module
-
Module#attr,attr_accessor,attr_reader,attr_writerare now public [Feature #14132] -
Module#define_method,alias_method,undef_method,remove_methodare now public [Feature #14133]
Numeric
- Numerical comparison operators (
<,<=,>=,>) no longer rescue exceptions of#coerce. Return nil in#coerceif the coercion is impossible. Feature #7688
Process
- Precision of
Process.timesis improved ifgetrusage(2)exists. Feature #11952
Range
-
Range#initializeno 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
- Update to Onigmo 6.1.1.
- Support absent operator Implement Absent Operator k-takata/Onigmo#82
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_prefixis added to remove prefix Feature #12694 -
String#delete_prefix!is added to remove prefix destructively Feature #12694 -
String#delete_suffixis added to remove suffix Feature #13665 -
String#delete_suffix!is added to remove suffix destructively Feature #13665 -
String#each_grapheme_clusterandString#grapheme_clustersis added to enumerate grapheme clusters Feature #13780 -
String#start_with?supports regexp Feature #13712
Regexp/String:
- Update Unicode version from 9.0.0 to 10.0.0 Feature #13685
Thread
-
Thread#fetchFeature #13009 (Implement fetch for Thread.current #5089) - Description set by
Thread#name=is now visible on Windows 10.
Time
-
Time#atreceives 3rd argument which specifies the unit of 2nd argument. Feature #13919
KeyError
-
KeyError#receiverFeature #12063 -
KeyError#keyFeature #12063
Stdlib updates (outstanding ones only)
Bundler
- Add Bundler to Standard Library. Feature #12733
Pathname
- New method:
Pathname#globFeature #7360 (Started in Pathname glob #5095)
Psych
- Update to Psych 3.0.0.
- Add
:symbolize_namesoption toPsych.load,Psych.safe_loadlikeJSON.parseAdd :symbolize_names option to Psych.load like JSON.parse ruby/psych#333, Add :symbolize_names option to .safe_load too ruby/psych#337 - Add
Psych::Handler#event_locationAdd Psych::Handler#event_location ruby/psych#326 - Make
frozen string literal = trueMake frozen string literal = true ruby/psych#320 - Preserve time zone offset when deserializing times Preserve time zone offset when deserializing times ruby/psych#316
- Removed deprecated method aliases for
syckgem Remove deprecated methods ruby/psych#312
RbConfig
- New constants:
RbConfig::LIMITSis 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#stateis added to tell the state of scanner. Feature #13686 - New constants:
Ripper::EXPR_BEGand so on forRipper#state.
SecureRandom
- New methods:
SecureRandom.alphanumeric
Set
- Add
Set#to_as alias to#inspectFeature #13676 - Add
Set#===as alias to#include?Feature #13801 - Add
Set#resetFeature #6589
StringIO
-
StringIO#writeaccepts multiple arguments
StringScanner
- Add
StringScanner#sizeFeature #836 - Add
StringScanner#capturesFeature #836 - Add
StringScanner#values_atFeature #836
Compatibility issues (excluding feature bug fixes)
BasicSocket
-
BasicSocket#read_nonblockandBasicSocket#write_nonblockno longer sets the O_NONBLOCK file description flag as side effect (on Linux only) Feature #13362
Random
-
Random.raw_seedrenamed to becomeRandom.urandom. It is now applicable to non-seeding purposes due to Bug #9569.
Socket::Ifaddr
-
Socket::Ifaddr#vhidis added Feature #13803
ConditionVariable, Queue and SizedQueue reimplemented for speed.
- They no longer subclass
Struct. Feature #13552
Stdlib compatibility issues (excluding feature bug fixes)
mathn.rb
- Removed from stdlib. Feature #10169
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 Reverse the order in which we print out the backtrace. #4876 #5094)
- Print error message in bold/underlined text if STDERR is unchanged and a tty. Feature #14140 [experimental] (Started in Reverse the order in which we print out the backtrace. #4876 #5094)
Reactions are currently unavailable