-
Notifications
You must be signed in to change notification settings - Fork 0
JRuby 9.1.0.0 Release Notes
IN PROGRESS
JRuby 9000 is the new major version of JRuby, representing years of effort and large-scale reboots of several JRuby subsystems.
Major features of JRuby 9000:
- Ruby 2.3 compatibility, minus features listed below https://github.com/jruby/jruby/issues/3479
- A new optimizing runtime based on a traditional compiler design
- New POSIX-friendly IO and Process
- Fully ported encoding/transcoding logic from MRI
-
removing default
-Xmx(500MB) setting from jruby.bash. Most users that get JRuby will end up using the bash script. https://github.com/jruby/jruby/issues/3739 -
Thread.newand others spawning threads (Fiber,Enumerator) should be a bit faster to start, most importantly they no longer possibly slow-down due low entropy sources on *nix systems due a JavaSecureRandominstantiation on JRuby'sThreadContext. https://github.com/jruby/jruby/pull/3723
-
Java stack-trace filtering was tuned to not exclude everything under the
org.jrubypackage prefix, we still avoid the additional noise from the stack-trace but no longer filter potentially unknown packages (e.g.org.jruby.rack) or extension stacks (org.jruby.ext). This change also affectsbacktraceinformation on the Ruby side which might now include more .java parts. -
the internal
JavaPackageModuleTemplatehas been refactored into a standalone module-like class, all package stubsorg.kares.jrubynow return aJavaPackageinstance (which is aModule) -
names
throwandcatchare no longer allowed as package names using the method format (org.jruby.catch will now dispatch toKernel.catch) - those are not valid Java package names anyways -
singleton_class(as well as hook methods such assingleton_method_added,singleton_method_removed) is no longer allowed as a package-name using the method ('.') format (org.jruby.singleton_classwill return the Ruby meta-class) -
pkg.to_snow returns package-name opposed to "module name" e.g.java.lang.to_s == 'java.lang'(note thatinspectstill behaves the same as before:java.lang.inspect == 'Java::JavaLang') -
improved
java.util.Mapequality (==,eql?) to other map/hash instances - previously wasn't 100% correct -
java.util.Mapproxies now support all ofHashmethods (including new ones such asdig,fetch_valuesand comparison operators e.g.<=) -
Java arrays now handle value equality
==with Ruby arrays (useeql?if types need to match as well). this also affects===with native arrays. -
Java's exception hierarchy
java.lang.Throwableno longer provides ato_strmethod, we feel like this unintentionally slipped probably due misunderstanding the difference between Ruby'sto_sandto_str -
Warbler has had issues with pre-compiled .rb files due broken IR de-serialization logic, we expect all issues to be fixed and added specs to cover previously failing issues.
-
jrubyc
--jdk5and-5switches were removed (Java 5 has not been supported for a while) -
jrubyc
--diroption now handles absolute paths correctly with the--targetoption