Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
JRuby-related issue text for https://github.com/jruby/jruby/issues/4876

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
  • File.stat, File.exist?, and other rb_stat()-using methods release GVL Bug #13941
  • File.rename releases GVL Feature #13951
  • 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

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

DRb

  • ACL::ACLEntry.new no longer suppresses IPAddr::InvalidPrefixError.

ERB

  • Add ERB#result_with_hash to render a template with local variables passed with a Hash object. Feature #8631
  • Default template file encoding is changed from ASCII-8BIT to UTF-8 in erb command. Bug #14095
  • Carriage returns are changed to be trimmed properly if trim_mode is specified and used. Duplicated newlines will be removed on Windows. Bug #5339 Bug #11464

IPAddr

IRB

  • binding.irb automatically requires irb and runs Bug #13099 [experimental]
  • Show source around binding.irb on session start Feature #14124

Net::HTTP

  • Net::HTTP.new supports no_proxy parameter Feature #11195
  • Net::HTTP#min_version and Net::HTTP#max_version Feature #9450
  • Add more HTTP status classes
  • Net::HTTP::STATUS_CODES is added as HTTP Status Code Repository [Misc #12935]
  • Net::HTTP#proxy_user and Net::HTTP#proxy_pass now reflects http_proxy environment variable if the system's environment variable is multiuser safe. Bug #12921

Pathname

Psych

RbConfig

  • New constants: RbConfig::LIMITS is added to provide the limits of C types. This is available when rbconfig/sizeof is required.

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.

RDoc

Rubygems

SecureRandom

  • New methods: SecureRandom.alphanumeric

Set

StringIO

  • StringIO#write accepts multiple arguments

StringScanner

WEBrick

Zlib

  • Zlib::GzipWriter#write accepts multiple arguments

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

Net::HTTP

  • Net::HTTP#start now pass :ENV to p_addr by default. Bug #13351 To avoid this, pass nil explicitly.

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

Drop to support NaCl platform

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]
  • Print error message in bold/underlined text if STDERR is unchanged and a tty. Feature #14140 [experimental]
  • configure option --with-ext now mandates its arguments. So for instance if you run ./configure --with-ext=openssl,+ then the openssl library is guaranteed compiled, otherwise the build fails abnormally. Note however to always add the ",+" at the end of the argument. Otherwise nothing but openssl are built. Feature #13302
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.