JRuby 9.2.1.0 Released

Tuesday, November 06 2018

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

JRuby 9.2.x is our new major version of JRuby. It is expected to be compatible with Ruby 2.5.x and stay in sync with C Ruby. JRuby 9.2.0.0 is our first release for 2.5 support.

If you do find issues then report them on using our issue tracker at http://bugs.jruby.org. 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:

  • Performance improvements and bug fixes for Java integration
  • More efficient layout of Ruby instance variables
  • Basic support for Java 11
  • Support for Java 11’s Application Class Data Sharing to improve startup
  • Expanded invokedynamic method call support
  • 166 issues fixed for 9.2.1.0

Github Issues resolved for 9.2.1.0

  • #5416 - More robust way to detect atomic move failure. Fixes #5415.
  • #5415 - Regression 9.2.1.0 File#mv
  • #5414 - Add opens for java.io and java.nio.channels to improve compat.
  • #5413 - Bucket size of zero is not valid. For bucketless, use small.
  • #5412 - Temporarily revert open-addressing Hash for concurrency reasons.
  • #5411 - taint flag
  • #5408 - missing return
  • #5402 - Only use the UTC formatter if time was not specified as relative.
  • #5400 - Time.new with explicit timezone string will display as UTF with +00:00.
  • #5399 - Do a fast dup of args when all symbols, due to kwarg processing.
  • #5398 - Hash#any? not always returning proper keys/values
  • #5397 - Revert "[ji] make inspect on Java proxies work"
  • #5396 - Regression from Date.parse optimizations
  • #5394 - [fix] singleton meta class
  • #5393 - Fix Hash#shift when at capacity
  • #5392 - Hash#shift fails at capacity boundaries
  • #5391 - Fixing coercion case for subtraction from BigDecimal. Fixes #5386.
  • #5390 - Clear references to threads and thread contexts on teardown.
  • #5389 - Update jffi to 1.2.18 for refreshed 32-bit ARM support.
  • #5388 - Revert updated jruby-readline
  • #5386 - Bigdecimal and coerce failing on subtraction operation
  • #5384 - Prophile
  • #5380 - [fix] do not parse zone for local + better dst calculation
  • #5378 - Always use full logic for processing glob segments.
  • #5377 - Thread#status can return unexpected value "dead"
  • #5375 - Struct#values should return an array which is independent of the struct
  • #5373 - [#5287] Use epoll selector for file IO on macosx
  • #5372 - Struct#to_a returns an array that is linked to the struct
  • #5371 - Raise error on negative usec param to Time.new.
  • #5370 - Time can be initialized with negative nanoseconds
  • #5369 - Make subtract and addition operators work with DateTime objects
  • #5368 - ArrayIndexOutOfBoundsException in Joni
  • #5367 - enable Integer#sqrt
  • #5366 - improve rational performance
  • #5365 - Kernel#sleep hangs on CI
  • #5364 - improve gcd performance
  • #5363 - Improvements for modules on Java 9+
  • #5362 - Unable to use jirb on ARMv7 processor
  • #5361 - upgrade mavengem extension
  • #5360 - Fix #5357
  • #5358 - Fix toplevel method visibility in jit/fullint script scopes.
  • #5357 - respect frozen_string_literal
  • #5356 - Use JDK atomic move to more closely emulate POSIX rename.
  • #5354 - Realign timeout with MRI.
  • #5352 - wsl workaround
  • #5351 - Update to Psych 3.0.3.pre2. See ruby/psych#352.
  • #5350 - [Zlib][CRC32] Trim 'start' value to 32-bit for negative long integers
  • #5348 - revert volatile mod from values[] RubyArray store?
  • #5347 - optimize nextPowOfTwo
  • #5346 - Use right -sourcepath when jruby is invoked via jdb
  • #5345 - bump asm version + remove asm-analysis
  • #5344 - upgrade jar_dependencies to 0.4.0
  • #5342 - return early if one of the arrays is empty
  • #5341 - LoadError when loading a class with inline hash using instance vars as values.
  • #5338 - fix shuffle_random
  • #5337 - index error instead of argument error
  • #5336 - fix enumerable first
  • #5335 - Fix mvnw jar file path for Cygwin
  • #5333 - no result with glob pattern "\\"
  • #5332 - ByteList java.lang.IllegalAccessError
  • #5331 - [WSL] Errno::ENOMEM
  • #5328 - Fix ci deploy
  • #5325 - Update JNR projects.
  • #5323 - Fix tagged as failed spec for Enumerable#slice_when
  • #5321 - ProcessBuilder#environment
  • #5318 - JRuby raises IOError instead of specific error if File.rename(a,b) fails due to hidden filesystem
  • #5317 - Allocate method on NilClass should raise TypeError
  • #5316 - Update jnr-constants for fixes after the updated generation logic
  • #5315 - Remove thread stop
  • #5314 - test_handle_interrupted? may expose improper handle_interrupt logic
  • #5307 - Short-circuit chained lazy calls once a nil is encountered.
  • #5306 - Fix Hash#initialize spec tagged as failed
  • #5305 - Fix Hash#rehash for open addressing
  • #5304 - rehashing regression with compare_by_identity
  • #5303 - Fix some failed Enumerable#find_index specs
  • #5302 - Fix failed Enumerable#uniq spec when yielded with multiple arguments
  • #5299 - Improve RubyHash#resize performance
  • #5298 - Fix remaining failing tests with Enumerable#all? when given a pattern argument
  • #5297 - Struct does initialize attributes wrong
  • #5296 - Fix some failed tests for Enumerable#all?, #any?, #none? and #one?
  • #5290 - Zlib crc32 resulting into Java::JavaLang::ArrayIndexOutOfBoundsException (32)
  • #5289 - Implement hash cache to fix #5280
  • #5287 - sysread hangs on EOF on mac
  • #5286 - Proc source location gives wrong result
  • #5281 - BUILDING.md: Mention Java 8 JDK is required
  • #5280 - bundle install fails since #5215
  • #5279 - Incorrect values resulting from to_date on a Time object
  • #5278 - Refactor and fix allocFirst with buckets for RubyHash
  • #5277 - fix duplicated file encoding
  • #5276 - Fixes underlying logic of slice_when / chunk_while to handle 1 element collections
  • #5275 - `slice_when` and `chunk_when` don't work with an 1-element enumerable
  • #5273 - IllegalCharsetNameException: -Dfile.encoding=UTF-8UTF-8
  • #5272 - Stackoverflow calling "super" from included module method
  • #5267 - 76c2df8 causes unit test failure of Oracle enhanced adapter
  • #5265 - Add Complimentary Regression Test for GH-5203
  • #5259 - [refactor] improve Date parsing performance
  • #5255 - Date parsing (still) noticeably slower than MRI
  • #5252 - can't use Date.iso8601 with a string subclass
  • #5250 - fix invalid date error message
  • #5247 - 9.2.0.0 requires java 8 but states java 7 as requirement
  • #5245 - Duped modules' class-level methods produce NPE when inspected
  • #5244 - 9.2.0.0 rake missing rake gem and fails
  • #5239 - review String -> RubyString UTF (8) encoding
  • #5233 - jruby (ext) loading left-overs to consider
  • #5231 - dont mutate module names
  • #5229 - Mutating result of Module#to_s changes Module#to_s on JRuby 9.2
  • #5226 - upgrade to jruby-openssl 0.10.1
  • #5222 - NullPointerException when deserializing a Set with YAML.load
  • #5219 - [ji] make inspect on Java proxies work
  • #5218 - The coderange is not properly recomputed after upcase/downcase/swapcase
  • #5216 - Method Missing: org.jruby.RubyInteger.int2fix
  • #5215 - Open addressing algorithm for RubyHash
  • #5214 - Clone proc blocks as well so they have their own frame etc.
  • #5211 - [ji] coercing Ruby File/Dir to Java File/Path
  • #5210 - Haml on JRuby 9.2.0.0 throws error evaluating interpolated element attribute with `#`
  • #5209 - NoMethodError: undefined method `on_kwrest_param'
  • #5208 - Encoding of String.name is ASCII-8BIT
  • #5205 - review (cleanup) boot -> standard JRuby extension loading
  • #5204 - AsciidoctorJ fails on JRuby 9.2.0.0
  • #5198 - Consider encoding when deduplicating strings.
  • #5197 - GZipFile#close does not return IO object as MRI does
  • #5196 - [9.2.0.0] Missing gems in dist
  • #5195 - 9.2.0.0 regression in Date#to_time for BC dates resulting in Time off by 1 year
  • #5193 - JRUBY 9.2.0.0: Assertion Failure when Reporting RSpec Failure
  • #5192 - jgem fails to load gem from rubygems on Raspbian
  • #5191 - 9.2.0.0 Regression in DateTime.parse for BC dates
  • #5190 - JRuby 9.2.0.0 string deduplication via String#-@ does not work the same as CRuby
  • #5189 - JRuby 9.2.0.0 warns about BigDecimal.new even in non-verbose mode
  • #5188 - Invalid Date exception when marshaling a Date - 9.2.0.0
  • #5187 - Non-volatile instance variables
  • #5186 - Finish reification
  • #5182 - Java types should simply toString on inspect?
  • #5175 - Always search full hierarchy for highest definition of a cvar.
  • #5171 - Generate right-shaped object subclasses
  • #5164 - Thread::Backtrace::Location#label inside eval does not return enclosing method name
  • #5163 - When Thread::Backtrace::Location#base_label and #label are #== on MRI they are also #equal?
  • #5162 - Thread::Backtrace::Location#base_label for blocks differs from MRI
  • #5098 - YAML.load significant performance degradation when JSON string is included
  • #5069 - Implement AppCDS support for startup time improvement
  • #4981 - Do not leak DNS Request IDs
  • #4851 - Unable to use protected java method in jruby with jdk9
  • #4781 - Improve two-way integration of Java and Ruby exceptions
  • #4708 - [2.4] Hash key randomization, universal hashing, new Hash impl
  • #4689 - __dir__ does not return canonicalized absolute path
  • #4684 - Rename readmsg to recvmsg
  • #4528 - Not every class has a superclass?
  • #4403 - MRI and JRuby disagree about File.exist?("/non_directory_file.name/")
  • #4281 - JSON::Parser issues with encodings
  • #4197 - Generify accept methods in AST
  • #3937 - Implement Thread#report_on_exception
  • #3922 - Performance regression with `Time.parse` from 1.7 to 9k
  • #3843 - Java calls do not bind directly with invokedynamic
  • #3834 - Anonymous class-type being raised by Timeout/Queue in both 9x and 1x.
  • #3739 - Drop 500MB cap for 9.1 on (and all launchers)
  • #3688 - Multibyte identifiers not marshaled correctly
  • #3495 - io/console.rb on AIX not working in v9.x
  • #3313 - Running threads stay running after teardown
  • #2212 - Kernel#__method__ within a proc returns incorrect value after method definition
  • #2056 - Use ExactMath for overflow
  • #1795 - Time#zone using Time#local
  • #1554 - Class variable in subclass is not overtaken by class variable in superclass
  • #1509 - Socket::Constants incorrect on Windows
  • #1183 - Use of deprecated Thread.stop() causes ThreadDeath exceptions propagating to caller
  • #1026 - Errno::ENOTDIR on Dir.chdir into jar
  • #315 - Improve handling of $! in exception logic
  • #287 - Class does not inherit singleton_class's class methods