JRuby 9.1.8.0 Released

Monday, March 06 2017

The JRuby community is pleased to announce the release of JRuby 9.1.8.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.8.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.

  • Fixed intermittent DynamicScope size errors
  • Concurrency fixes to jitting of blocks (mostly seen as previous bullet).
  • Several issues fixed when running with -Xcompile.invokedynamic
  • 81 issues fixed for 9.1.8.0

Github Issues resolved for 9.1.8.0

  • #4521 - Use actual impl module to test bindability. Fixes #4477.
  • #4516 - DynamicScope sizeError
  • #4513 - cgi/escape does not define CGI.escapeHTML and other methods
  • #4512 - release and upgrade BC (jruby-openssl)
  • #4511 - Fix some issues with Fiddle
  • #4509 - Fix #4463 Marshal load bigdecimal NaN fails
  • #4508 - $. never seems to change once JIT'd
  • #4507 - Actually cache the idTest on the module.
  • #4504 - Improve some of the debug logging in ConstantLookupSite.
  • #4503 - Allow reads after calling BasicSocket#close_write.
  • #4501 - JRuby native no longer loads on windows
  • #4500 - IO#close_write seems to close the read side too for unix sockets
  • #4499 - Make failed indy call sites still use specific-arity dispatch
  • #4498 - Separate varargs and specific-arity names in JIT. Fixes #4482
  • #4497 - The return value of `ARGF.file#lineno` differs from that of MRI
  • #4496 - Use ipaddr to compare the sender's address
  • #4494 - Use arity hashCode instead of proc#hash in CallableSelector
  • #4492 - YAML: Can't load files with characters in the supplementary plane
  • #4486 - Set up EWOULDBLOCKWaitReadable/Writable if not present. Fix #4473
  • #4485 - Allow refinements in one eval to be seen in the next.
  • #4484 - Rational() and IO.try_convert do not work for BasicObjects
  • #4483 - Complex() Kernel method does not consult an object's to_c method
  • #4482 - Doing require_relative too often leads to TypeError
  • #4481 - String#unpack: Unpacked string should not have an encoding
  • #4478 - Block doesn't retain it's binding through instance_eval
  • #4477 - prepending to the singleton class of a module breaks instance_method
  • #4475 - Activating refinements in binding.eval doesn't stick outside of the evaluated string.
  • #4473 - IO::EWOULDBLOCKWaitReadable Exception class not defined
  • #4472 - jrubyc broken for simple (self-executing) scripts in 9.1.7.0
  • #4471 - Make sure to iterate over all keys when cancelling keys in a SelectorPool
  • #4467 - Exception backtrace is nil when it should be present
  • #4466 - Fix #3799 again.
  • #4465 - Java Null Pointer exception while bundling
  • #4463 - Marshal load bigdecimal NaN fails.
  • #4461 - `ObjectSpace.each_object.to_a` raises `ArrayIndexOutOfBoundsException`
  • #4457 - system and spawn raise 'wrong exec redirect action' when redirecting given `out: tempfile` or `err: tempfile`
  • #4455 - Sequel fails with -Xcompile.invokedynamic=true
  • #4454 - Licensing is confusing
  • #4448 - [ji] support 'native' method arguments (e.g. org.jruby.RubyObject)
  • #4447 - Fix GzipReader "position" update for #each and #each_line.
  • #4445 - string encoding is incorrect when compiling to .class files via jrubyc
  • #4443 - LocalJumpError when creating enumerator inside GzipReader.open block
  • #4442 - Unable to re-deploy rails app (java.lang.RuntimeException: BUG: could not initialize constructor handle)
  • #4439 - Memory leaks due to overwritten local variables being wrongly kept alive on the stack
  • #4438 - fix Base64#decode64 behavior
  • #4437 - String#scrub ignores the block if the string encoding is not ASCII-compatible
  • #4435 - [ji] deterministic Java bean-style method aliases
  • #4428 - [#4353] Ignore consecutive DOUBLE_STAR in glob_helper.
  • #4423 - Kill the LocalJumpError logic for break in lambda. Fixes #4369.
  • #4413 - JRuby's impl of FFI differs in behavior from MRI; segfaults/crashes
  • #4399 - RubyHash's compare_by_identify Java method naming is confusing
  • #4393 - microsecond accuracy is not supported in class Time
  • #4392 - compile back to hard scope when closure compile/build requested
  • #4391 - Metaspace fills with java.lang.invoke.LambdaForms$ over time
  • #4353 - Dir.glob returns doubles, if used with recursive directory matchers "**"
  • #4312 - Fix JRuby embed crash after application reloading
  • #4304 - Singleton on non-persistent Java type Java::JavaLang::NullPointerException
  • #4219 - Calling super with two "_" params ignores the value of the second
  • #4028 - Base64.decode64 incorrect result when missing paddings
  • #3663 - Never-ending getaddress() call when using compressed IPv6 nameservers in /etc/resolv.conf
  • #3545 - java.lang.NullPointerException when using for loops
  • #3528 - ActiveRecord::StatementInvalid: ArgumentError: wrong number of arguments (1 for 2) for invokedynamic
  • #3350 - JRuby 9.0.1.0 has slower $global_var usage
  • #3185 - PTY.spawn doesn't pass arguments
  • #3020 - Attempt to get output from PTY.spawn periodically hangs
  • #2355 - State file use in UUID gem causes severe performance degradation
  • #2161 - Hash inspection not working as in MRI for sprintf %p
  • #1842 - Dir#glob and escaped commas
  • #1784 - OpenSSL::PKey.read throws a null pointer exception
  • #1653 - '/' works as a valid path but children don't (under windows)
  • #1643 - Cannot call a Java method whose parameter is RubyArray when it is overloaded
  • #1437 - test/mri/ruby/test_regexp.rb has regexp that fail to parse
  • #1381 - io/console and/or FFI do not load right with alternative -0 separator
  • #1368 - Need to error for unsupported keywords
  • #1321 - TracePoint thread_begin and thread_end events are broken
  • #1269 - RegexpError with look-behind
  • #1258 - Improve Bignum string parsing
  • #1149 - chmod inside of File block fails to create file
  • #1067 - [2.1] StringScanner named captures
  • #1037 - TypeError raised when trying to propagate java Throwables using Thread.raise
  • #413 - $LOADED_FEATURES.clear does not appear to clear internal set