JRuby 9.2.15.0 Released

Wednesday, February 24 2021

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

JRuby 9.2.x is compatible with Ruby 2.5.x and stays in sync with C Ruby. As always there is a mix of miscellaneous fixes so be sure to read the issue list below. All users are encouraged to upgrade.

As we are still actively working on 9.3.0.0 we decided to put out another 9.2.x release to fix some of the more recently reported issues.

Compatibility

  • Several issues were fixed in process management, to avoid raising unexpected errors, properly launch executables on Windows, and preserve quoting when also doing a chdir. (#6466, #6477, #6489, #6516, #6532, #6536, #6546, #6565, #6568)
  • Error and interrupt handling inside fibers has been improved to avoid leaking fibers and enumerators. (#6309, #6538)
  • An incompatibility between the Synchronized module and refinements caused the i18n gem’s deep_merge refinement to break method lookup and prevent Rails apps from starting up. (#6547, #6549)
  • IO.copy_stream attempted to write the same content twice when copying to an IO-like object that did not report having written all requested bytes. (#6555, #6557)
  • Bare super calls (aka “zsuper”) gathered arguments incorrectly to support define_method, which broke dynamic finders in recent Rails versions. (#6563, #6571)

Standard Library

  • The racc library was updated to 1.5.2 (#6507, #6517, #6537)
  • Failed UNIX socket connects were leaking an open file descriptor. (#6529, #6531)

Performance

  • A bug in setting up block yields using invokedynamic led to excessively deep call stacks and slow execution. (#6260)

Github Issues resolved for 9.2.15.0

  • #3205 - Dir.foreach, Dir.new, Dir.open: Missing/incompatible encoding support.
  • #6260 - Stack Overflow with invokedynamic.yield turned on
  • #6309 - Enumerator.peek not working with Enumerators created with #to_enum over ActiveRecord Relations
  • #6338 - JSON.pretty_generate generates different output to MRI for at least an empty hash
  • #6466 - java.lang.ArrayIndexOutOfBoundsException in 9.2.13.0
  • #6477 - EAGAIN: waitpid on JDK11
  • #6489 - Check the retval of waitpid before errno
  • #6491 - Undefine rlimit features when unsupported
  • #6492 - Disable rlimit features on Windows
  • #6499 - Array shuffle method should fail if prng is passed without being a named argument
  • #6500 - Fix Array shuffle and sample arity checking
  • #6507 - Unhandled Java exception: org.jruby.RubyContinuation$Continuation
  • #6516 - When extension is omitted, IO.popen does not find the executable in JRuby on Windows
  • #6517 - Install racc 1.5.2 from the gem
  • #6526 - Monitor synchronization issue in JRuby 9.2.14.0
  • #6527 - Fix interrupt handling in synchronize
  • #6528 - `Encoding.default_external = 'ASCII'` with `StringIO#string` results are different from MRI
  • #6529 - FD leak with orphan Unix Socket
  • #6530 - Backport StringIO encoding fix
  • #6531 - Close socket when bind or connect fails
  • #6532 - Improvements for popen process launch in Windows
  • #6536 - [test] spawn+detach raising (previous) posix error
  • #6537 - Revert racc default gem and copy manually
  • #6538 - Rework raise interrupt handling at fiber edges
  • #6540 - Cruby/Jruby behavior difference with block keyword arguments
  • #6546 - Handle errors in Process.detach properly
  • #6547 - NoMethodError for Concurrent::Hash#deep_merge!
  • #6548 - Ripper comparison operators
  • #6549 - Make sync and profiling method wrapper logic work with refinements
  • #6550 - Incorrect implementation of org.jruby.embed.variable.VariableInterceptor#terminateLocalVariables
  • #6551 - Dir file walking encoding improvements
  • #6553 - getResource() should never be called with a starting slash when called on a classloader
  • #6555 - IO.copy_stream double-writes to InternetMessageIO
  • #6557 - IO.copy_stream fixes
  • #6563 - Rails 6.1.2.x dynamic finders cause Java::JavaLang::ClassCastException
  • #6565 - Open3 chdir parameter removes quoting
  • #6568 - Backport spawn fixes to 9.2
  • #6571 - Fixes #6563. Rails 6.1.2.x dynamic finders cause Java::JavaLang::ClassCastException
  • #6574 - Fixes #6540. difference with block keyword arguments.