JRuby 9.0.1.0 Released

Wednesday, September 02 2015

The JRuby community is pleased to announce the release of JRuby 9.0.1.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.2.x and stay in sync with C Ruby. JRuby 9.0.1.0 is our first of many point releases…

Major features of JRuby 9000:

  • Ruby 2.2 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 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.

Notable updates since 9.0.0.0

  • Reduced memory usage since 9.0.0.0 by 13%
  • Improved support for refinements; 70% of CRuby tests passing
  • jruby-openssl updated to version 0.9.11
  • psych updated to version 2.0.15
  • 44 issues fixed for 9.0.1.0

Truffle

JRuby 9000 includes an preliminary version of support for the Truffle language implementation framework and Graal VM from Oracle Labs. In future releases, Truffle will provide an extremely high performance and compatible backend for JRuby. The Truffle backend supports almost all Ruby language features and the majority of the core library, and is able to run simple gems and web frameworks such as Sinatra. It has no support for RubyGems, Rails or any database drivers, does not work on Windows, and is not ready to be tested with applications at this stage. More information on Truffle and Graal can be found in the JRuby Wiki.

Github Issues resolved for 9.0.1.0

  • #3288 - 9K seems to be handling all jruby.xxx properties
  • #3284 - Spec improvements
  • #3283 - Not getting SIGCHLD when a child process dies
  • #3277 - Spec improvements
  • #3276 - Class with prepended module is its own superclass
  • #3271 - bigdecimal & bigmath
  • #3265 - Updates for RSpec 3
  • #3251 - jruby: warning: unknown property jruby.{memory,stack}.max
  • #3249 - Socket.send freezes string unexpectedly (RuntimeError: can't modify frozen string)
  • #3248 - File.fnmatch doesn't match german vowels
  • #3245 - Parser fails on `assert_equal(true, (not ()))` expresion
  • #3238 - Fix Digest bubblebabble incorrect output on empty string
  • #3237 - $! gets unset by rescue, even when the rescue doesn't catch the error
  • #3233 - Rails.root set to "uri:classloader:/" for new Rails app with JRuby 9.0.0.0
  • #3228 - Fix an embedded runtime memory leak in Java7ClassValue
  • #3227 - Array#uniq behavior differs from MRI with BasicObject members
  • #3224 - removed unused FileIO class from persistence.util
  • #3221 - big decimal parser
  • #3220 - RubyInstanceConfig#setupEnvironment throws AccessControlException on Windows
  • #3218 - add to_h to the class used for ENV
  • #3211 - bignum speedup
  • #3200 - Fixing RangeError with code from 1.7 branch
  • #3198 - licensing information out of date?
  • #3189 - 9k fail ftp on Windows
  • #3188 - jruby-1_7 merge failures on master
  • #3187 - Add MRI test for proc visibility
  • #3175 - 9k fail to compile ruby code of using multibyte char on Windows
  • #3174 - ensure clause is executed before begin clause ends ?
  • #3173 - Can't reference the proc itself in a proc
  • #3165 - Fix RubyRange#initialize_copy mistakenly erroring on #dup'ing a range
  • #3163 - dup on Range regression
  • #3162 - Different results for `to_h` and `to_hash` on `ENV`
  • #3118 - Jruby 9000 RC1 throws Java::JavaLang::ClassCastException: org.jruby.RubyBignum cannot be cast to org.jruby.RubyFixnum
  • #2956 - bubblebabble is wrong for empty strings
  • #2901 - Psych fails with MBC strings in ASCII-8BIT
  • #2148 - BigMath.log fails MRI 2.2 tests
  • #2131 - Divergent behavior in MRI vs JRuby wrt Class::undef
  • #1968 - JRuby Yaml implementation (psych) fails dumping "-."
  • #1907 - Frozen
  • #1900 - "invalid byte sequence in UTF-8" after String#encode!; behavior differs from MRI (JRuby-1.7.13)
  • #1877 - Array#delete_if - no size update
  • #1770 - Wrong julian day for DateTime with a negative rational offset
  • #1328 - Encoding of symbol literals does not respect the encoding of the source file
  • #378 - Need ability to set Socket.setReuseAddress() in RubyTCPSocket.java