JRuby 9.1.16.0 Released

Wednesday, February 21 2018

The JRuby community is pleased to announce the release of JRuby 9.1.16.0

JRuby 9.1.x is our current major version of JRuby. It is expected to be compatible with Ruby 2.3.x and stay in sync with C Ruby. JRuby 9.1.16.0 is our latest releaseā€¦

Major features of JRuby 9000:

  • Ruby 2.x compatibility
  • A new optimizing runtime based on a traditional compiler design
  • New POSIX-friendly IO and Process
  • Fully ported encoding/transcoding logic from MRI

If you do find issues then report them on using our issue tracker at https://github.com/jruby/jruby/issues. We also encourage users to join our IRC channel (#jruby on Freenode) and mailing lists. You may also follow @jruby on Twitter for updates.

Highlights:

  • Rubygems updated to version 2.6.14.1
  • Fixed some ensure blocks being executed twice (9.1.15.0 regression)
  • Support grapheme detection via \X
  • Fixed error while loading readline on Windows
  • 51 issues fixed for 9.1.16.0

Github Issues resolved for 9.1.16.0

  • #5052 - String literal difference from MRI
  • #5048 - IO.copy_stream replaces read chunk even if it's duplicated
  • #5041 - Add modification check on String#chomp! method with default separator
  • #5037 - align C ported memsearch code - need to handle array[length] properly
  • #5036 - Scan ArrayIndexOutOfBoundsException Error
  • #5019 - Do not leak DNS Request IDs
  • #5018 - open3.rb broken in JRuby
  • #5017 - Add `#test_power_of_0` and `#test_power_of_1_and_minus_1` to test targets
  • #5016 - Exclude `#test_windows_1255` from our tests
  • #5015 - Remove unused import statements
  • #5014 - Remove TestArray#test_uniq_bang_with_freeze exclusion test case
  • #5013 - fix issue where expr fails on freebsd.
  • #5010 - Fix `convertCommon`
  • #5006 - Fix test coerce2
  • #5004 - PTY.open unusable because of fcntl error
  • #5003 - Low-level Java error printed on Errno::EPIPE exception
  • #5001 - Implement `Rational#coerce` with `Complex` object
  • #5000 - Accept `nil` as an argument of `Rational#<=>`
  • #4998 - Remove unused import statements
  • #4996 - Add `#test_symbol_op` to test targets
  • #4995 - Wrong #inspect is used in Method#inspect
  • #4994 - Fix `Symbol#inspect` of UTF_16/UTF_32
  • #4992 - Check an encoding of string
  • #4982 - Set encoding for character literal
  • #4976 - EADDRINUSE when binding TCP socket with globally disabled IPv6
  • #4970 - String from literal sometimes not reused with frozen_string_literal enabled
  • #4959 - Raise `TypeError` if `#extend_object` is called for no module objects
  • #4955 - Revert to using weakref.rb, since it's based on a proper weak map.
  • #4944 - Set original Module to definedClass of methods
  • #4942 - No stdout with drip on jruby-9.1.15.0
  • #4920 - Fiber#transfer gets confused about thread owners
  • #4916 - RubyHash doesn't implement the contract of java.util.Map correctly
  • #4910 - Regression with TCPSocket#close_on_exec on windows
  • #4909 - JRuby 9000 performance with --debug is 4-5x slower than JRuby 1.7.2 or Ruby 2.3.3
  • #4903 - Weird error using IO.copy_stream, IO duck types and enumerators
  • #4900 - Improve compatibility with MRI's Ripper for JRuby 9.1
  • #4899 - Compiled module descriptor in complete JAR distro
  • #4896 - Jruby + Rspec scoping issues on Classes with Prepended Modules
  • #4895 - Regression in 9.1.15.0 with some ensure blocks being executed twice
  • #4891 - JRuby returns nil backtrace for living newborn threads, whereas MRI returns []
  • #4889 - jruby 9.1.15 fails with NameError: cannot load Java class jline.console.ConsoleReader
  • #4887 - ThreadedNexter shutdown can in some situations interrupt a thread executing a different task
  • #4886 - Improvements to subclass management and method cache invalidation
  • #4885 - powerpc64le-linux "Syslog not supported on this platform"
  • #4879 - Performance issue with ruby meta programming
  • #4818 - Raise Errno::EISDIR when opening a directory for reading on Windows
  • #4795 - [#4710] nanosecond precision in utime using libc futimens
  • #4721 - NPE while dup-ing guava's ImmutableList
  • #4710 - utime behaviour different from MRI
  • #4568 - Support grapheme detection via \X
  • #4060 - Wrong line numbers inside set_trace_func for end events