Mon. Dec 16th, 2019

JRuby releases: an implementation of the Ruby language

2 min read

JRuby is an implementation of the Ruby language using the JVM. It aims to be a complete, correct and fast implementation of Ruby, at the same time as providing powerful new features such as concurrency without a global-interpreter-lock, true parallelism, and tight integration to the Java language to allow you to use Java classes in your Ruby program and to allow JRuby to be embedded into a Java application.

You can use JRuby simply as a faster version of Ruby, you can use it to run Ruby on the JVM and access powerful JVM libraries such as highly tuned concurrency primitives, you can use it to embed Ruby as a scripting language in your Java program or many other possibilities.

Changelog v9.2.9.0

Ruby Standard Library

  • The Ruby Standard Library has been updated to Ruby 2.5.7. JRuby will now report this as our equivalent compatible Ruby version. (#5917)
  • RubyGems has been updated to version 2.7.10.

Security Updates

  • This release removes an exploitable version of JQuery used by the rdoc library. See

Java Modules Support

  • Java modules are better supported in this release by checking for openness before attempting to reflect against classes from that module. This should reduce the number of module warnings on Java 9+ and make it easier to configure the JVM to open up appropriate modules and packages to JRuby applications. See also the .jruby.java_opts file above, which can help you manage module options. (#58415832#5843#5855#5860)

Java Launcher Improvements

  • JVM options can now be added to global or app-local .jruby.java_opts files and automatically processed by the JRuby launcher. See JRuby Java Options Files for more information. Note: This feature is not yet supported by the JRuby native launcher, installed by default in RVM. We will release an update to the native launcher soon. (#5824#5826)
  • You can now pass --environment to the JRuby launcher to get a log of exactly how we will execute your application. (#5840)
  • JRuby’s dev mode (via the --dev flag) adds additional options for Java 9+ and the OpenJ9 JVM. On OpenJ9, the -Xquickstart and -Xshareclasses flags are passed via the OPENJ9_JAVA_OPTIONS environment variable. (#5831)

Memory Usage Reductions

  • Numerous changes in this release reduce the boot-time and run-time memory use of JRuby applications. (#5837#5832#5874#5880#5885)

Thread-safety Improvements

  • Lock interruptibility broken in JRuby 9.2.8 has now been fixed. (#5863#5875#5942)

Process.wait APIs are now interruptible

  • Threads calling Process.waitwaitall, or waitpid will use the pthread_kill native function to interrupt those operations. Previously these threads were not interruptible. (#1050#5848)

Native FFI improvements

  • When running JRuby via the “complete” jar file, we must unpack our native FFI stub to an appropriate temporary location. If the default location we use (the host system’s default “temp” location) is not readable or does not allow executable code, we will present an informational error indicating how to correct the issue. (#1302)
  • This release also includes native support for DragonFly BSD. (#5768#5828)

Time Zone Data

  • Time zone data has been updated to IANA 2019c. This update includes six years of timezone changes. (#5951)