JRuby 1.7.0.RC1 Released

Tuesday, September 25 2012

The JRuby community is pleased to announce the release of JRuby 1.7.0.RC1.

This is the first (and hopefully only) release candidate of JRuby 1.7. The JRuby 1.7 release series represents a tremendous amount of work by dozens of contributors, and there are improvements in every subsystem. Users of highly-concurrent applications will see improvements in throughput and raw parallelism. And we have upped our compatibility level to match Ruby 1.9.3.

We know that there are still pieces of 1.9 support we don’t have yet, like Ripper, but we think we are at a stable point where people can use JRuby in 1.9 mode to host production applications. Barring any significantly serious issues, RC1 will become 1.7.0. Our plan after the release of 1.7.0 is a set of smaller point releases to address bugs and to add the few missing pieces of Ruby 1.9.

JRuby 1.7 is the first JRuby to support the new “invokedynamic” feature of the JVM. You can enable invokedynamic use on Java 7, but it is disabled normally due to JVM issues. On Java 8 builds, it is enabled by default. https://github.com/jruby/jruby/wiki/PerformanceTuning

Please, please, please test your applications against 1.7.0.RC1. We want to make 1.7.0 a rock solid release and your contribution is extremely helpful.

Notable Changes:

  • 1.9.3 is now our default runtime mode (–1.8 is needed for 1.8.7 support)
  • Many 1.9.x compatibility fixes
  • Several IO transcoding issues
  • Improvements and fixes to Java integration
  • 113 issues resolved

Issues resolved:


  • [JRUBY-3622] - newInstance and getDeclaredConstructor fail to respect class overridden in JRuby
  • [JRUBY-3765] - DummyDynamicScope should never be used for backref storage
  • [JRUBY-3786] - RubyGems tests are not green; fix remaining failures/errors
  • [JRUBY-4732] - Clean up anything that calls dataGetStruct on a wrapped Java object to get the object
  • [JRUBY-4756] - Interface that has abstract methods final in Ruby hierarchy break "real class" implementation
  • [JRUBY-5226] - ri error while installing Rails -- Cannot create a file named '<'
  • [JRUBY-5284] - Create full Exception hierarchy in Java types
  • [JRUBY-5303] - [1.9] Wrong parameters parse for method signatures with default values
  • [JRUBY-5314] - Classloader-sourced "load" will attempt to read a dir as a Ruby file
  • [JRUBY-5323] - control-c in cmd while running webrick rails app does not kill jruby.exe
  • [JRUBY-5583] - Profiling should not bomb out trying to find method name
  • [JRUBY-5675] - Difference in include behaviour in --1.9 mode
  • [JRUBY-5697] - Kernel#rand implementation does not match mri and rbx
  • [JRUBY-5700] - Segmentation fault - IBM JDK
  • [JRUBY-5848] - jruby-core maven artifact has broken dependencies
  • [JRUBY-5902] - STDIN.gets under cygwin doesn't work
  • [JRUBY-5908] - exec regression in windows since 1.6.0 (?)
  • [JRUBY-6026] - OS X install postfligh script does not work with (t)csh
  • [JRUBY-6074] - Re-release jruby-win32ole with Java 5
  • [JRUBY-6105] - become_java! returns nil for Ruby classes that inherit from Java classes
  • [JRUBY-6106] - JRuby 1.9 coverage library reports different results than ruby 1.9
  • [JRUBY-6126] - [1.9] [RubySpec] In 1.9 mode, for should yield only as many values as there are arguments
  • [JRUBY-6195] - [1.9] Process.spawn (and related methods) ignore option hash
  • [JRUBY-6235] - IO#read_nonblock always raises Errno::EAGAIN: Resource temporarily unavailable
  • [JRUBY-6346] - Error establishing SSL connections: OpenSSL::SSL::SSLError: Socket closed
  • [JRUBY-6447] - 1.9 patched oniguruma issues a number of warnings (e.g. for character classes, unknown coderanges) we omit silently
  • [JRUBY-6516] - IO.select times out with ssl connection
  • [JRUBY-6550] - [1.9] yield yields incorrect args when splatted args passed as 2nd arg to yield
  • [JRUBY-6568] - A Proc on a symbol like (&:first) works in 1.8, but not in 1.9 mode
  • [JRUBY-6578] - File.readlink with chdir
  • [JRUBY-6581] - "yield called out of block" for Enumerators created with enum_for
  • [JRUBY-6595] - segfault with win32/registry
  • [JRUBY-6620] - On windows if JAVA_HOME ends in a '\' then native launcher bombs
  • [JRUBY-6622] - Unable to Load encrypted Private Key pem file
  • [JRUBY-6632] - BigDecimal.new fails when passed anything but string (Float, BigDecimal, Fixnum)
  • [JRUBY-6636] - OpenSSL::X509::Certificate and OpenSSL::PKey::RSA constructors don't accept File objects
  • [JRUBY-6640] - stat.st_gid unsupported or native support failed to load org/jruby/RubyFileStat.java:432
  • [JRUBY-6656] - JRuby subclass cannot call super with arguments if parent constructor is varargs
  • [JRUBY-6665] - Multicast not working on Windows (see test_socket.rb)
  • [JRUBY-6696] - 32 bit jruby cannot run with 64 bit JVM installed
  • [JRUBY-6699] - OpenSSL::PKey::RSA.new fails on Windows
  • [JRUBY-6704] - JRuby should provide couterparts of MRI Ruby bundled Gems
  • [JRUBY-6738] - Kernel.load(..., true) --> scope problem
  • [JRUBY-6744] - We are at p204 but 1.9.3 is only at p194
  • [JRUBY-6773] - ERB parsing in JRuby 1.6.6
  • [JRUBY-6777] - RubyFixnum.java - two methods fail to detect some long integer overflows
  • [JRUBY-6790] - Possible long integer overflow in fixnumStep in RubyNumeric.java
  • [JRUBY-6799] - Reopening Java class fails if set with ScriptingContainer#put and Java class
  • [JRUBY-6810] - YAML.load(YAML.dump(lambda{})) should raise TypeError
  • [JRUBY-6824] - Missing files/dirs in source tarball/zip
  • [JRUBY-6825] - ClassReader ClassNotFoundException in verbose mode on jruby-1.7.0-preview2
  • [JRUBY-6827] - ClassCastException with DummyDynamicScope in String#rpartition? with -X+C
  • [JRUBY-6828] - TypeError when returning non-nil from a proc called from Java by interface
  • [JRUBY-6832] - self is wrong in set_trace_func when raising NoMethodErrors
  • [JRUBY-6833] - FFI::Buffer#get_string(off, len) returns trailing NUL byte
  • [JRUBY-6836] - Strange interactions between a break statement and ensure blocks
  • [JRUBY-6837] - Encoding Problems in Rails 3.2
  • [JRUBY-6839] - issuing 'jruby -v' causes Java exception "Ruby: org.objectweb.asm.ClassReader java.lang.ClassNotFoundException: org.objectweb.asm.ClassReader"
  • [JRUBY-6840] - Java package class calls no longer working in 1.7.0-pre2
  • [JRUBY-6841] - State file use in UUID gem causes severe performance degradation
  • [JRUBY-6843] - Encoding::UndefinedConversionError when reading from IO stream given by open-uri's Kernel#open()
  • [JRUBY-6849] - pp Object.new shows 0x0000000 instead of a unique number for each object.
  • [JRUBY-6851] - IO#set_encoding doesn't work with Encoding object
  • [JRUBY-6852] - Setting compile mode when using ScriptingContainer
  • [JRUBY-6855] - Signal.list missing 'KILL' on Windows
  • [JRUBY-6858] - OpenSSL::HMAC missing reset method
  • [JRUBY-6859] - java.lang.ArrayIndexOutOfBoundsException when using --profile.api . MAX_PROFILE_METHODS too low?
  • [JRUBY-6860] - String#slice on strings with multibyte chars fails
  • [JRUBY-6863] - multibyte strings after String#slice get wrong result on String#index(rindex)
  • [JRUBY-6865] - JRuby allows invalid attr_accessor (MRI raises exception)
  • [JRUBY-6867] - Parsing issues with long lines
  • [JRUBY-6868] - Exceptions thrown when running with Coverage enabled
  • [JRUBY-6871] - Encoding::UndefinedConversionError when dropping a mongo database with Mongoid 3
  • [JRUBY-6872] - Behavior of Math.sqrt(Float::NAN) does not match MRI
  • [JRUBY-6875] - JRuby should load "some_path/some_file.jar.rb" if "some_path/some_file.jar" is required and "some_path/some_file.jar" does not exist.
  • [JRUBY-6884] - Unexpected stack trace using ARM based linux
  • [JRUBY-6885] - method_missing and private methods behave differently
  • [JRUBY-6888] - Loading a newer joda-time seems to not work
  • [JRUBY-6891] - SSLSocket.accept forces reverse DNS lookup, not required for most SSL and sometimes causes very poor performance
  • [JRUBY-6892] - Calling #drop on an Enumerator doesn't work properly
  • [JRUBY-6894] - In 1.8 mode, generator.rb refers to non-existent generator_internal
  • [JRUBY-6896] - nil treated as 0 in call to Thread#join


  • [JRUBY-5380] - Use Hotspot-specific features for calculating CPU time when available
  • [JRUBY-6275] - double locking a mutex could use a better error message, line number
  • [JRUBY-6445] - Allow a way to resolve interface methods from with Ruby proxy modules
  • [JRUBY-6500] - Compiler improvements
  • [JRUBY-6643] - jrubyc AOT Java compilation doesn't identify failure cause
  • [JRUBY-6890] - Rework paths to be similar to MRI + redefinable + defined in one place only

New Feature

  • [JRUBY-4670] - Plug ruby2java java2ruby marshalling
  • [JRUBY-6835] - A way to send a block of code across processes.
  • [JRUBY-6883] - Enable subclassing of Java classes on Dalvik


  • [JRUBY-6466] - externalize build_lib dependencies


  • [JRUBY-6873] - jruby-1.7.0.preview2 much slower jruby-1.6.3 (192s vs.60s)

Github Issues

  • #307 Specs for DirectedGraph Library
  • #306 removed snapshot in versions
  • #304 DirectedGraph Specs : Removing a vertex doesn’t remove edges from the graph
  • #303 DirectedGraph Specs : Removing a vertex doesn’t remove edges from the graph
  • #301 Dynamic String/Symbol/Regexp create too much garbage
  • #300 Symbol table can’t look up from ByteList directly
  • #294 no need to report memory/stack as properties
  • #293 Fix for issue #276
  • #282 call Kernel.require ruby method from autoload callback instead of calling internal require
  • #281 call Kernel.require ruby method from autoload callback instead of callin…
  • #280 Kernel require
  • #275 Remove left-over Javadoc params from Java class generator
  • #274 Implicit blocks from Symbol#to_proc does surprising and wrong things (with –1.9)
  • #273 1.6 backport: JRUBY-6810
  • #267 Various fixes for psych
  • #266 When call Kernel#singleton_class. And instance variables disappeared from Kernel#inspect.
  • #265 JRuby19mode behavior is different with CRuby. Fixnum#to_sym
  • #261 Fixnum#to_sym is not defined in Ruby 1.9
  • #259 native threads disabled with C extensions
  • #258 YAML.load_file to empty file gives false