JRuby 9.1.6.0 Released

Wednesday, November 09 2016

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

JRuby 9000 is the newest major version of JRuby, representing years of effort and large-scale reboots of several JRuby subsystems. It is expected to be compatible with Ruby 2.x and stay in sync with C Ruby. JRuby 9.1.6.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.

  • Rubygems updated to 2.6.8
  • Socket library improvements and fixes
  • Fixed several Keyword Argument corner cases
  • Optimized accessing local variables
  • 77 issues fixed for 9.1.6.0

Github Issues resolved for 9.1.6.0

  • #4272 - Stack overflow in unresolvedSuper logic from jitted code
  • #4264 - Fix unnamed socket inspect
  • #4262 - Method#owner returns wrong implementation module
  • #4261 - Mutexes should use .lock instead of .lockInterruptibly
  • #4259 - Identical Regexp are not equal to each other
  • #4256 - Revert "Format initial string to specific precision, so rounding works."
  • #4255 - jit failure: rack
  • #4252 - Also perform uninitialized check on temp locals.
  • #4251 - nil initialization missing from optionally-set argument
  • #4250 - Prepend must set method's "defined class" to the new bottom.
  • #4248 - UNIXSocket#peeraddr was fixed some time ago
  • #4247 - Garbage data in UNIXSocket path
  • #4240 - Rescue optimization over-optimizes rescue body with $!
  • #4233 - Fix clone hierarchy
  • #4231 - Cannot iterate over a Range of Times
  • #4229 - cloned singleton method exists but can't be overwritten
  • #4228 - remove_method fails to remove singleton method on cloned object
  • #4227 - Missing unit :second for Process.clock_gettime
  • #4225 - Don't dup every element in Enumerator#drop (9K)
  • #4224 - Fix the incorrect opscode mapping in f2i()
  • #4223 - Broken PHASE='-Pjruby_complete_jar_extended -Dinvoker.skip=true'
  • #4222 - BasicSocket improvements
  • #4221 - UNIX sockets improvements
  • #4220 - Handle EADDRINUSE message in IOException.
  • #4218 - Enumerable#drop calls #dup on every element
  • #4217 - JRuby 9.1.*.* on multiple platforms incorrectly handles block in `[]` method calls
  • #4216 - UDP socket improvements
  • #4215 - do not eagerly set eval-type in a thread-local
  • #4214 - [Truffle] Use the new getgroups POSIX call.
  • #4210 - **operator behavior is different from MRI
  • #4207 - Flush destination IO in IO.copy_stream
  • #4206 - Kernel#sleep swallows InterruptedException
  • #4204 - Implement Socket.socketpair to return Socket instances
  • #4203 - Get rid of code dup in ServerSocket#bind
  • #4202 - IO.copy_stream with Zlib::GZipWriter broken in 9.1.3.0 and up
  • #4199 - Replace BigDecimal#!= by BigDecimal#nonzero?.
  • #4198 - Apply patch from rubygems/rubygems#1685
  • #4193 - prime? openssl error in 9.1.5.0
  • #4190 - TCPServer#accept_nonblock improvement
  • #4189 - Implement TCPServer#sysaccept
  • #4188 - `require_relative` does not work inside a jar on Windows
  • #4187 - Fix Java::JavaLangReflect::GenericSignatureFormatError when reflecting reified annotation values
  • #4186 - JRuby accepts wrong method arguments when mixing positional with defaults and keywords
  • #4184 - Dir.tmpdir returns working directory
  • #4178 - Changing type of global variables gives TypeError
  • #4177 - Fix issues with File.dirname
  • #4176 - NoMethodError: undefined method `dedent_string' when lexing squigly heredocs in Ripper
  • #4174 - Remove premade field-based DynamicScope and generate instead.
  • #4171 - JRuby HEAD gets NPE when running `bundle install`
  • #4170 - Bring BigMath::log behaviour closer to MRI
  • #4169 - squiggly heredoc with single quotes fails to run
  • #4168 - Add paths to *DynamicScope that don't check nulls, offsets.
  • #4167 - Create a different hierarchy of DynamicScope for use in startup interp + remove null checks in the existing hierarchy since they are redundant
  • #4162 - Logger: Errno::EINVAL: Invalid argument with JRuby 9.x in Solaris
  • #4159 - Format initial string to specific precision, so rounding works.
  • #4158 - BigMath.log(Rational,...) produces garbage digits within the requested precision
  • #4153 - Fix for #4147
  • #4152 - Fix for #3229
  • #4148 - Java::JavaLangInvoke::WrongMethodTypeException when using invokedynamic
  • #4147 - Logger: log rotation inter-process lock failed. on Windows with JRuby 9.x
  • #4141 - IRB: arrow keys to move along cmd line and up/down in history not working on Windows
  • #4128 - Inspect directly into a RubyString and avoid StringBuilder/char[].
  • #4126 - Implement SignalException class
  • #4119 - Full Socket::Option support
  • #4117 - Show that ArgumentError from encoding error is recursive
  • #4040 - Setting SO_LINGER completely inconsistent
  • #4019 - gem list don't show some gems as default
  • #3954 - SignalException#signo (and signm) not defined.
  • #3886 - Collect all DNS sections by calling to each_resource instead of each_answer
  • #3817 - IO#seek and tell do not properly handle offsets larger than int32
  • #3438 - BasicSocket#getsockopt does not work with all possible Symbol combinations
  • #3343 - File.flock does not work on Solaris for 9k
  • #3326 - JRuby 9.0.1.0 vs. MRI 2.2.2 define_method inconsistency
  • #3302 - Updated doc for dumpThreads method in Runtime
  • #2768 - System.gc() is async, do not attempt to invoke it and retry sysopen
  • #2465 - Build a new pass that ensures that ruby locals / IR tmps are initialized
  • #1987 - sequester tmp directories