# \[ANN\] JRuby 9.1.0.0 Released

**URL:** <https://rubytalk.org/t/ann-jruby-9-1-0-0-released/73605>\
**Category:** ruby-talk\
**Created:** [3 May 2016 15:36 UTC](https://rubytalk.org/t/ann-jruby-9-1-0-0-released/73605 "2016-05-03T15:36:43Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Thomas\_E\_Enebo1](https://yyz1.discourse-cdn.com/flex029/user_avatar/rubytalk.org/thomas_e_enebo1/32/1861_2.png) [@Thomas\_E\_Enebo1](https://rubytalk.org/u/Thomas_E_Enebo1)\
**Post date:** [3 May 2016 15:36 UTC](https://rubytalk.org/t/ann-jruby-9-1-0-0-released/73605/1 "2016-05-03T15:36:43Z")

</div>

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

&nbsp;&nbsp;&nbsp;&nbsp;Homepage: [http://www.jruby.org/](http://www.jruby.org/)  
&nbsp;&nbsp;&nbsp;&nbsp;Download: [http://www.jruby.org/download](http://www.jruby.org/download)

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.0.0  
is our latest release…

Major features of JRuby 9000:

&nbsp;&nbsp;- Ruby 2.x compatibility  
&nbsp;&nbsp;- A new optimizing runtime based on a traditional compiler design  
&nbsp;&nbsp;- New POSIX-friendly IO and Process  
&nbsp;&nbsp;- 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](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.5.0

&nbsp;&nbsp;- Ruby 2.3 Compatible (language and standard library) (i)  
&nbsp;&nbsp;- Fixed performance and behavior regressions from 9.0.5.0  
&nbsp;&nbsp;- Added several JIT optimizations missed in initial 9k release  
&nbsp;&nbsp;- Fixed most of the outstanding parser bugs  
&nbsp;&nbsp;- RubyGems updated to 2.6.4  
&nbsp;&nbsp;- Many improvements to our Java Integration  
&nbsp;&nbsp;- 114 issues fixed for 9.1.0.0

(i) We have a large majority of Ruby 2.3 features but we are not completely  
done. You can follow our remaining work by tracking this issue.  
Truffle

JRuby 9000 includes an preliminary version of support for the Truffle  
language implementation framework and Graal JIT compiler 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, and does not work on Windows.  
However we are now interested in people submitting issues for small gems  
with minimal dependencies who see issues running on JRuby+Truffle

Graal has been integrated into Java 9 early access builds, and can be used  
today as part of the GraalVM, which is currently the recommended way to run  
JRuby+Truffle.

More information on Truffle and Graal can be found in the JRuby Wiki.  
Github Issues resolved for 9.1.0.0

&nbsp;&nbsp;&nbsp;&nbsp;#3838 - Compilation fails with openjdk8 u92  
&nbsp;&nbsp;&nbsp;&nbsp;#3833 - Fixnum#bit\_length - uses bit inversion when the value is  
negative  
&nbsp;&nbsp;&nbsp;&nbsp;#3832 - Fix a bug where NameError#receiver raises an ArgumentError  
after #to\_s is called  
&nbsp;&nbsp;&nbsp;&nbsp;#3831 - Fixes Fixnum#bitLength when the value is negative.  
&nbsp;&nbsp;&nbsp;&nbsp;#3830 - Adds method #bitLength to Bignum  
&nbsp;&nbsp;&nbsp;&nbsp;#3829 - Fixnum#bit\_length always returns 64 for negative number  
&nbsp;&nbsp;&nbsp;&nbsp;#3827 - Bignum#bit\_length is missing  
&nbsp;&nbsp;&nbsp;&nbsp;#3820 - Error when rspec loads files using Refinements  
&nbsp;&nbsp;&nbsp;&nbsp;#3818 - `n ** m` is slow  
&nbsp;&nbsp;&nbsp;&nbsp;#3811 - Time.parse should coerce argument into a String  
&nbsp;&nbsp;&nbsp;&nbsp;#3809 - bind (abstract) methods when implementing interface  
&nbsp;&nbsp;&nbsp;&nbsp;#3802 - moving Ruby Java extensions into native  
&nbsp;&nbsp;&nbsp;&nbsp;#3796 - Refinements causes "ArgumentError: tried to create Proc object  
without a block"  
&nbsp;&nbsp;&nbsp;&nbsp;#3791 - Add option to enable ir writing on-the-fly  
&nbsp;&nbsp;&nbsp;&nbsp;#3790 - [ji] java.util.Collection should not be to\_ary convertible  
&nbsp;&nbsp;&nbsp;&nbsp;#3789 - [ji] java.lang.Throwable should not provide to\_str  
&nbsp;&nbsp;&nbsp;&nbsp;#3787 - Recent CI snapshots give warning on load of openssl  
&nbsp;&nbsp;&nbsp;&nbsp;#3779 - improved method arities on become\_java!  
&nbsp;&nbsp;&nbsp;&nbsp;#3777 - trycatch blocks are being defined inefficiently in the JIT  
&nbsp;&nbsp;&nbsp;&nbsp;#3773 - cleanup NativeException  
&nbsp;&nbsp;&nbsp;&nbsp;#3763 - Syntax error with &.\< in combination with other operators  
&nbsp;&nbsp;&nbsp;&nbsp;#3762 - File.open ignores :universal\_newline options on Windows  
&nbsp;&nbsp;&nbsp;&nbsp;#3758 - Fix strftime %Z to act like CRuby  
&nbsp;&nbsp;&nbsp;&nbsp;#3757 - Some cases of assignment in conditional do not warn as in MRI  
&nbsp;&nbsp;&nbsp;&nbsp;#3754 - [ji] package (internal) refactoring  
&nbsp;&nbsp;&nbsp;&nbsp;#3752 - Removing 'new' class method from interfaces #3275  
&nbsp;&nbsp;&nbsp;&nbsp;#3750 - load path from the command line -I should use the same  
splitting as for GEM\_PATH  
&nbsp;&nbsp;&nbsp;&nbsp;#3744 - Performance issue when connected to network  
&nbsp;&nbsp;&nbsp;&nbsp;#3741 - Consider dropping -Xss from launcher  
&nbsp;&nbsp;&nbsp;&nbsp;#3734 - compiled .rb does not handle rest kwargs right  
&nbsp;&nbsp;&nbsp;&nbsp;#3733 - ActiveSupport EventedFileUpdateChecker wrong number of  
arguments in JRuby  
&nbsp;&nbsp;&nbsp;&nbsp;#3723 - lazy secure random  
&nbsp;&nbsp;&nbsp;&nbsp;#3722 - thread-context refactor backtrace retrieval  
&nbsp;&nbsp;&nbsp;&nbsp;#3718 - RubyGems after 2.4.8 is broken on JRuby  
&nbsp;&nbsp;&nbsp;&nbsp;#3711 - Passing in command line arguments containing "%20n" causes  
jruby to abort with error "%n in writable segment detected"  
&nbsp;&nbsp;&nbsp;&nbsp;#3703 - JRuby 9.0.5.0: uninitialized variables assigned to self as  
default method argument cause org.jruby.ir.operands.UndefinedValue  
&nbsp;&nbsp;&nbsp;&nbsp;#3699 - Improving error message when flock is not available  
&nbsp;&nbsp;&nbsp;&nbsp;#3686 - Regression in overcommit's tests in JRuby 9000  
&nbsp;&nbsp;&nbsp;&nbsp;#3682 - set ClassloaderDelegate(false) as default for  
OSGiIsolatedScriptingContainer + IsolatedScriptingContainer  
&nbsp;&nbsp;&nbsp;&nbsp;#3679 - Parser seems to choke on Japanese-encoded text  
&nbsp;&nbsp;&nbsp;&nbsp;#3676 - can not install ruby-maven on jruby from jruby-dist archives  
&nbsp;&nbsp;&nbsp;&nbsp;#3669 - Autoload of module broken for Ruby subclass of Java class  
&nbsp;&nbsp;&nbsp;&nbsp;#3668 - Object#try(:squeeze!) raises an array index out of bounds  
exception  
&nbsp;&nbsp;&nbsp;&nbsp;#3666 - NKF still uses Charset transcoding rather than jcodings  
&nbsp;&nbsp;&nbsp;&nbsp;#3664 - File#pos fails for files greater than  
java.lang.Integer::MAX\_VALUE on 64-bit systems  
&nbsp;&nbsp;&nbsp;&nbsp;#3659 - Resolv fails under load with SocketError: bind: name or service  
not known  
&nbsp;&nbsp;&nbsp;&nbsp;#3658 - Implement Process::setproctitle  
&nbsp;&nbsp;&nbsp;&nbsp;#3654 - `Exception#cause` is difference behavior with CRuby 2.3.0  
&nbsp;&nbsp;&nbsp;&nbsp;#3653 - `system` method is different behavior from JRuby 1.7.x and  
CRuby 2.3.x  
&nbsp;&nbsp;&nbsp;&nbsp;#3652 - Lock is not released at Kernel.require when Gem.try\_activate  
throws RuntimeException  
&nbsp;&nbsp;&nbsp;&nbsp;#3651 - Compile of method call with block return results is "is not  
compiled Ruby; use java\_import to load normal classes"  
&nbsp;&nbsp;&nbsp;&nbsp;#3650 - Hash#compare\_by\_identity does not work correctly when key is  
destructively changed  
&nbsp;&nbsp;&nbsp;&nbsp;#3649 - prime? very slow  
&nbsp;&nbsp;&nbsp;&nbsp;#3647 - Encoding::ConverterNotFoundError when using  
Encoding.default\_internal  
&nbsp;&nbsp;&nbsp;&nbsp;#3646 - Dir::Tmpname.make\_tmpname inconsistent with Ruby 2.2+  
&nbsp;&nbsp;&nbsp;&nbsp;#3645 - AWS SDK Uninitialized Constant Error  
&nbsp;&nbsp;&nbsp;&nbsp;#3643 - Somehow super stopped working in jruby 9.0.5.0  
&nbsp;&nbsp;&nbsp;&nbsp;#3639 - superclass production in parser became less restrictive in 2.3  
&nbsp;&nbsp;&nbsp;&nbsp;#3638 - Class cast in parser  
&nbsp;&nbsp;&nbsp;&nbsp;#3636 - DEAD: marking instr dead!!  
&nbsp;&nbsp;&nbsp;&nbsp;#3633 - Failures in JRuby 9.0.5.0 on Sinatra build  
&nbsp;&nbsp;&nbsp;&nbsp;#3632 - JRuby 1.7.24 - REXML bad encoding issue  
&nbsp;&nbsp;&nbsp;&nbsp;#3631 - Override of Gem.path\_separator cause gem update --system to fail  
&nbsp;&nbsp;&nbsp;&nbsp;#3628 - Command line flag '-p' doesn't reflect changes made to $\_  
&nbsp;&nbsp;&nbsp;&nbsp;#3627 - Process#spawn error when redirecting error to stdout (jruby  
9.0.4.0)  
&nbsp;&nbsp;&nbsp;&nbsp;#3626 - 9.0.5.0 numerical computation regression  
&nbsp;&nbsp;&nbsp;&nbsp;#3620 - JRUBY\_OPTS gives misleading warning  
&nbsp;&nbsp;&nbsp;&nbsp;#3618 - blacklist ppc64 Linux from windows installer packaging  
&nbsp;&nbsp;&nbsp;&nbsp;#3616 - [Time.at](http://Time.at) loses precision when using BigDecimal as argument  
&nbsp;&nbsp;&nbsp;&nbsp;#3613 - LoadError with 'compiled' ruby files with JRuby9000 (using  
rescue)  
&nbsp;&nbsp;&nbsp;&nbsp;#3567 - [2.3] Parser does not recognize lonely operator after do...end  
&nbsp;&nbsp;&nbsp;&nbsp;#3565 - [2.3] Missing \<\<~ heredoc form  
&nbsp;&nbsp;&nbsp;&nbsp;#3548 - Refinements in method bodies aren't activated  
&nbsp;&nbsp;&nbsp;&nbsp;#3541 - Warning: setEvalType unimplemented in org.jruby.RubySymbol$1  
&nbsp;&nbsp;&nbsp;&nbsp;#3536 - [ruby 2.3 Feature #10718] IO#close should not raise IOError on  
closed IO objects.  
&nbsp;&nbsp;&nbsp;&nbsp;#3535 - [ruby-2.3 Feature #11785] add `encoding:` optional argument to  
String.new  
&nbsp;&nbsp;&nbsp;&nbsp;#3533 - [ruby-2.3] Feature #10984 - Hash comparison operators  
&nbsp;&nbsp;&nbsp;&nbsp;#3532 - [ruby-2.3] Feature #10730: Implement Array#bsearch\_index  
&nbsp;&nbsp;&nbsp;&nbsp;#3517 - [ruby-2.3 feature #10769] add Enumerable#chunk\_while, spec for  
it  
&nbsp;&nbsp;&nbsp;&nbsp;#3516 - ArrayStoreException using Google's google-api-client and  
autoparse gems  
&nbsp;&nbsp;&nbsp;&nbsp;#3513 - case/when eqq calls do not cache  
&nbsp;&nbsp;&nbsp;&nbsp;#3510 - [Ruby-2.3] - Pathname#descend and Pathname#ascend supported  
blockless…  
&nbsp;&nbsp;&nbsp;&nbsp;#3507 - JRuby 2.2 mode inconsistent with MRI 2.1+  
&nbsp;&nbsp;&nbsp;&nbsp;#3498 - [Ruby-2.3] - Implements Enumerable#grep\_v  
&nbsp;&nbsp;&nbsp;&nbsp;#3491 - Frozen string optimizations from MRI  
&nbsp;&nbsp;&nbsp;&nbsp;#3490 - remove "initial\_state" argument of  
Enumerable#{slice\_before,chunk}  
&nbsp;&nbsp;&nbsp;&nbsp;#3486 - [Ruby-2.3] - Implements Hash#fetch\_values  
&nbsp;&nbsp;&nbsp;&nbsp;#3481 - implement Coverage.peek\_result  
&nbsp;&nbsp;&nbsp;&nbsp;#3479 - Ruby 2.3 support  
&nbsp;&nbsp;&nbsp;&nbsp;#3475 - proc-to-interface dispatch method collision using Java 8 streams  
&nbsp;&nbsp;&nbsp;&nbsp;#3473 - IO.popen with file mode w does not close stream and hangs on  
Win7  
&nbsp;&nbsp;&nbsp;&nbsp;#3469 - beyond JRuby's StandardErrorLogger  
&nbsp;&nbsp;&nbsp;&nbsp;#3458 - Ruby 2.3's #dig  
&nbsp;&nbsp;&nbsp;&nbsp;#3454 - Passing a ruby class as a java.lang.Class into Java land  
&nbsp;&nbsp;&nbsp;&nbsp;#3435 - File.seek fails on large file  
&nbsp;&nbsp;&nbsp;&nbsp;#3386 - Ripper on 9.0.x.x reports wrong line number  
&nbsp;&nbsp;&nbsp;&nbsp;#3370 - treat deadlocks as circular require - as MRI does it  
&nbsp;&nbsp;&nbsp;&nbsp;#3341 - autoload & require deadlock  
&nbsp;&nbsp;&nbsp;&nbsp;#3318 - Autoloading appears to lead to race conditions  
&nbsp;&nbsp;&nbsp;&nbsp;#3275 - should not be able to instantiate an interface (using new)  
&nbsp;&nbsp;&nbsp;&nbsp;#3261 - isutf8 exception Jruby 9.0.00  
&nbsp;&nbsp;&nbsp;&nbsp;#3206 - Invocation of become\_java! instances fails with "cannot make  
variable arity"  
&nbsp;&nbsp;&nbsp;&nbsp;#3094 - NoMethodError being reported as "UndefinedValue.java:52:in  
`undefinedOperation': java.lang.RuntimeException: IR compiler/interpreter  
bug: org.jruby.ir.operands” in jruby-9.0.0.0.pre2  
&nbsp;&nbsp;&nbsp;&nbsp;#2977 - Weird error when refinement is used in rspec  
&nbsp;&nbsp;&nbsp;&nbsp;#2403 - Unicode characters are lost when embedding JRuby even if the  
calling code performs no conversion to byte[]  
&nbsp;&nbsp;&nbsp;&nbsp;#2147 - TestParse#test\_named\_capture\_conflict  
&nbsp;&nbsp;&nbsp;&nbsp;#2127 - Method name encoding seems off  
&nbsp;&nbsp;&nbsp;&nbsp;#2124 - Optional args that self-reference must resolve  
&nbsp;&nbsp;&nbsp;&nbsp;#1981 - Wrong number of reported lines in Coverage API  
&nbsp;&nbsp;&nbsp;&nbsp;#1925 - jruby can't use it's own java classes  
&nbsp;&nbsp;&nbsp;&nbsp;#1285 - Broken JRuby and UTF-8 method names  
&nbsp;&nbsp;&nbsp;&nbsp;#1249 - JDK8 provides its own List#sort, Map#replace, and Map#merge  
&nbsp;&nbsp;&nbsp;&nbsp;#1196 - Coverage reports wrong number of lines  
&nbsp;&nbsp;&nbsp;&nbsp;#621 - UDPSocket#send copies data multiple times

> **···**
>
> --  
> blog: [http://blog.enebo.com](http://blog.enebo.com) twitter: tom\_enebo  
> mail: [tom.enebo@gmail.com](mailto:tom.enebo@gmail.com)
