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
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
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 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:
- 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
The JRuby community is pleased to announce the release of JRuby 9.2.1.0
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
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 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:
- 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