Skip to content

Releases: jruby/jruby

JRuby 9.3.3.0

Choose a tag to compare

@enebo enebo released this 19 Jan 17:15

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

JRuby 9.3.x is compatible with Ruby 2.6.x and stays in sync with C Ruby. As always there is a mix of miscellaneous fixes so be sure to read the issue list below.

The big news this release is support for Apple's M1 family of processors (Apple Silicon) via an update to our native FFI backend library. Nearly all our usual test suites are passing on M1 and we have added a self-hosted CI runner thanks to MacStadium's OSS program. Callbacks from C to Ruby are unsupported, but this does not affect any libraries we ship. We will continue to improve M1 support with your help and bug reports.

We encourage users to file issues first and ask questions later! Please join our Matrix room if you have any issues or just want to get involved.

Thanks to our contributors this cycle for helping to improve compatibility: @ahorek, @byteit101

Additional thanks to @kovyrin for working through M1 issues with us and confirming that a large application builds and tests successfully.

Hardware Support

  • This release includes greatly improved support for Apple Silicon processors like the M1. (#6813, #6853, #6974, #6977, #6983, #6986, #7006)
  • Known issue: passing a Ruby FFI Function object to C code as a callback is not currently supported due to security restrictions on Apple Silicon. Neither JRuby nor any libraries we ship require this functionality. We will fix it for a future release. (#6995)

Ruby Compatibility

  • The parser once again handles files larger than 32k lines. This issue affected simplecov and mailer gems that we know of. (#6984, #6991)

Standard Library

  • ostruct is updated to 0.5.1, which fixes warnings in verbose mode loading the json library. (#6831, #6963)

Java Integration

  • Additional fixes for super calls from Ruby subclasses of Java classes to match behavior in 9.2.x. (#6935, #6957)

22 Github Issues resolved for 9.3.3.0

JRuby 9.3.2.0

Choose a tag to compare

@enebo enebo released this 02 Dec 17:00

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

JRuby 9.3.x is compatible with Ruby 2.6.x and stays in sync with C Ruby. As always there is a mix of miscellaneous fixes so be sure to read the issue list below.

Security

  • Date-parsing methods have been modified to accept an input-size limit option. This addresses CVE-2021-41817. It was originally reported against Ruby's C-based date extension, which JRuby does not use, but JRuby's own implementation of date is also affected by the same issue.

    The fix is detailed in #6952. A workaround is provided, via patching the pure-Ruby date code in your own JRuby install. Rebuilding JRuby is not necessary. This PR is the only functional difference from JRuby 9.3.1.0.

  • In order to match Ruby behavior and permit interrupting these date-parsing regular expression matches, this release also enables interruptible regular expressions globally. This feature can be disabled using the "regexp.interruptible" JRuby option as described in the above PR.

Performance

  • The performance of Time#strftime has been greatly improved (3.5x-5.8x faster). (#6942, #6956)

Native Integration

  • The jffi library on MacOS has been updated to sign the native library, allowing it to load properly on Apple Silicon. This improves compatibility on Apple's AArch64 systems (M1 and friends). (jnr/jffi#116, jnr/jnr-ffi#257)

Github Issues resolved for 9.3.2.0

JRuby 9.2.20.1

Choose a tag to compare

@enebo enebo released this 01 Dec 16:38

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

JRuby 9.2.x is compatible with Ruby 2.5.x and stays in sync with C Ruby. As always there is a mix of miscellaneous fixes so be sure to read the issue list below. All users are encouraged to upgrade.

This is a security release to address CVE-2021-41817. It was originally reported against Ruby's C-based date extension, which JRuby does not use, but JRuby's own implementation of date is also affected by the same issue.

The issue affects calls to various Date and DateTime parsing methods with extremely long strings. The regular expressions associated with these methods may run much longer than desired or never return.

The fix is detailed in #6951. A workaround is provided, via patching the pure-Ruby date code in your own JRuby install. Rebuilding JRuby is not necessary. This PR is the only functional difference from JRuby 9.2.20.0.

We recommend that all JRuby 9.2 users upgrade.

JRuby 9.2.20.0

Choose a tag to compare

@enebo enebo released this 02 Nov 21:11

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

JRuby 9.2.x is compatible with Ruby 2.5.x and stays in sync with C Ruby. As always there is a mix of miscellaneous fixes so be sure to read the issue list below. All users are encouraged to upgrade.

Compatiblity

Standard Library

  • jruby-openssl has been updated to 0.11.0, which includes fixes for expired and replaced certificate verification. (#6871, #6909)

Native Integration

  • The built-in FFI library has been updated to match the FFI gem, and can now be upgraded independently of JRuby. (#6732, #6747)
  • FFI-based core methods on Windows and Solaris have been modified to delay activating FFI until after RubyGems has loaded any upgrades. (#6751, #6760, #6762)

Java Integration

  • Nested jar files (jars packaged within another application jar) should load more quickly with caching improvements. (#6730, #6734, #6740)
  • 39 issues fixed for 9.2.20.0

Github Issues resolved for 9.2.20.0

JRuby 9.3.1.0

Choose a tag to compare

@enebo enebo released this 13 Oct 17:48

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

JRuby 9.3.x is compatible with Ruby 2.6.x and stays in sync with C Ruby. As always there is a mix of miscellaneous fixes so be sure to read the issue list below.

Thank you to our excellent community of users for their many contributions! JRuby would not be successful without your help: @ahorek, @byteit101, @GabrielNagy, and @jsvd

Standard Library

  • Updated RubyGems to 2.2.29 and Bundler to 3.2.29. (#6890)

23 Issues resolved

  • #6263 - Set jruby-jars gem plugin to use 9.3 release
  • #6679 - [ji] allow Java errors from Ruby threads to reach the handler
  • #6841 - addrinfo - inspect hostname
  • #6842 - Avoid alias warning if target has same reqs
  • #6846 - Unexpected frame in stack trace from `caller` method with create_method invocation
  • #6849 - JRuby 9.3.0.0 Installer for Windows 10 x64 only works with JDK 8 (not JDK 16)
  • #6852 - Fix handling of ENXIO error during resource open
  • #6854 - Unexpected behavior when using `module_function` followed by `define_method`
  • #6855 - Fix #6854
  • #6857 - Process::Waiter is a private_constant on JRuby but not on MRI?
  • #6859 - Refinements vs. respond_to? regression in 9.3.0.0
  • #6860 - Cannot raise `KeyError` without arguments after 9.3.0.0
  • #6861 - Fix KeyError behavior with no arguments
  • #6863 - Fix #6859. respond_to? regression with refinements.
  • #6864 - Calling :include? on an String Range always returns true in 9.3.0.0
  • #6866 - Fix #6864. include? on an String Range always returns true.
  • #6870 - Missing keywords after a second proc call
  • #6874 - Calling exit! within at_exit doesn't "clear" the exception
  • #6876 - Fixes #6870. Missing keywords after a second proc call (full/JIT).
  • #6877 - Fix raw and varargs backtrace elements
  • #6879 - Fix at_exit exception behavior to match CRuby
  • #6886 - Fix and tests for concrete extension #java_class returning the parent
  • #6890 - Update rubygems to 2.2.29 and bundler to 3.2.29

JRuby 9.3.0.0

Choose a tag to compare

@headius headius released this 22 Sep 18:12

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

JRuby 9.3.x is compatible with Ruby 2.6.x and stays in sync with C Ruby. As always there is a mix of miscellaneous fixes so be sure to read the issue list below.

With such a long development cycle, there are bound to be "dot zero" bugs and compatibility gaps, so we plan to release incremental fixes for JRuby 9.3 rapidly. We encourage users to file issues for any problems they encounter and join us in our Matrix chat room

Thank you to our excellent community of users for their many contributions! JRuby would not be successful without your help: @ahorek, @byteit101, @chrisseaton, @deivid-rodriguez, @edipofederle, @JasonLunn, @joshbressers, @k77ch7, @MariuszCwikla, @marshalium, @MikaelUrankar, @mkristian, @nomadium, @olleolleolle, @pirj, @ProfessorEugene, @pzygielo, @T45K, @thbar

These notes may be updated on the JRuby Wiki to include additional information and links to new or updated documentation: JRuby 9.3.0.0 Release Notes

Compatibility

  • Ruby language compatibility is updated to match Ruby 2.6.8. (#5576)
  • The require/load/autoload subsystem has been rewritten to better match Ruby behavior. This improves support for the Zeitwerk loader and fixes many long-standing issues. (#2794, #3656, #5403, #5466, #5590, #5618, #5638, #5717, #5763, #5764, #6347, #6445)
  • Improved logic for handling complex method and constant lookups, such as when prepends, refinements, or super calls are in play. Most known issues with these forms have been fixed. (596, #2155, #4678, #6271, #6712, #6777, #6778, #6785)

Standard Library

  • The standard library has been updated to match Ruby 2.6.8. Several libraries now use the official gems, allowing them to be upgraded independently of JRuby. (#4875, #6150, #6797, #6796, #6795, #6794, #6533, #6802)

Java Integration

  • JRuby supports Java versions 8 through 17, and should work well with any supported build of OpenJDK. Future versions of JRuby may drop support for Java 8 through 10, so we encourage users to upgrade older apps soon.
  • The Java integration logic for extending Java classes from Ruby has been rewritten to better support Java constructors and to reuse more logic from the rest of our Java integration library. This allows users to use those Ruby subclasses with Java frameworks that bootstrap using reflection, such as JavaFX. (#449, #2369, #4165, #5270, #6422)
  • JRuby now ships a new "jruby-base" jar artifact to Maven Central. This artifact provides a bare-bones JRuby jar file with no dependencies or standard libraries included. We may deprecate and remove the "jruby-core" artifact in the future, as it only provides Java dependencies and no standard libraries (users should prefer to build their own with jruby-base or use the jruby-complete artifact). (#6233)

340 Github Issues resolved for 9.3.0.0

  • #449 - support newInstance() with arguments
  • #596 - Adding a method to eigenclass doesn't work properly. Works in cruby
  • #713 - BEGIN/END blocks not executed in main compiled script
  • #985 - Kernel.spawn doesn't support some options (ex: :chdir)
  • #2150 - Dir#glob does not return files with proper cases
  • #2155 - Method#super_method finds something when super is undef'ed
  • #2369 - Can't subclass a Java class that calls an abstract function in its constructor
  • #2794 - Load/require logic lacks path caching and indexing found in MRI
  • #3656 - Autoload is not overwritten by subsequent explicit require
  • #4004 - Migrate Ruboto to JRuby 9K
  • #4165 - java_field causes NPE when using derived class of a java object
  • #4194 - "LoadError: no such file to load" if IOException is raised in loaded file
  • #4678 - Prepending a module to a module extended by a class gives NPE when calling `super`
  • #4688 - RubyEnumerator.SizeFn does not receive enough context
  • #4695 - Super does not mark literal blocks as escaped
  • #4875 - Ruby 2.5 Gemification
  • #4943 - Open3.open2e returns `Errno::ENOENT` in jRuby but runs fine on Ruby
  • #5126 - Status for MRI-related security issues?
  • #5143 - Eliminate static field references to JRuby state
  • #5200 - Core method call missing in exception backtrace on JRuby 9.2.0.0
  • #5219 - [ji] make inspect on Java proxies work
  • #5266 - use of JRUBY_OPTS="-Xreify.classes=true" causes Java::JavaLang::StackOverflowError:
  • #5270 - Concrete JRuby Implementations of Abstract Java Classes Can't be Constructed With Reflection
  • #5381 - only require 'java', users should explicitly require 'jruby'
  • #5401 - Disabling fixnum cache breaks racc JRuby implementation
  • #5403 - `autoload` should delegate to `require`
  • #5419 - Reinstate open-addressing hash to work on concurrency improvements.
  • #5466 - Weird `Kernel.autoload` behavior
  • #5469 - Add Array#difference
  • #5470 - Add Array#union
  • #5494 - Ruby 2.6: Add #to_h with block argument to Array, Enum, ENV, Hash and Struct
  • #5496 - Bump JRuby version and Ruby compat level to 2.6.0
  • #5498 - [ji] change RubyException#toJava to convert by default
  • #5502 - Ruby 2.6: Add a new #filter alias for #select
  • #5508 - Ruby 2.6: Add a new #then alias to Kernel#yield_self
  • #5519 - teardown with threads waiting gets ugly
  • #5530 - Ruby 2.6: Add new method Binding#source_location
  • #5535 - Ruby 2.6: Add Dir instance methods #each_child and #children
  • #5537 - Ruby 2.6: Hash#merge, Hash#merge! and Hash#update now accept multiple arguments
  • #5540 - Ruby 2.6: Add endless range
  • #5549 - Use `invok...
Read more

JRuby 9.2.19.0

Choose a tag to compare

@enebo enebo released this 15 Jun 18:21

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

JRuby 9.2.x is compatible with Ruby 2.5.x and stays in sync with C Ruby. As always there is a mix of miscellaneous fixes so be sure to read the issue list below. All users are encouraged to upgrade.

As we are still actively working on 9.3.0.0 we decided to put out another 9.2.x release to fix some of the more recently reported issues.

Thanks to contributor @ahorek for a couple quick-fix PRs this release!

Native Integration

  • Work around a bug in our backend FFI library, jnr-ffi, that broke calls to getsockopt or setsockopt in --dev mode. (#6714, #6723)

Windows Support

  • Honor the TZ environment variable when applying a timezone to file modification/access/create times. (#6659, #6720)

Github Issues resolved for 9.2.19.0

  • #6714 - getsockopt crashing with 9.2.18.0 and JRUBY_OPTS=--dev flag
  • #6720 - File#mtime fix timezone
  • #6723 - getsockopt crash in --dev mode

JRuby 9.2.18.0

Choose a tag to compare

@enebo enebo released this 08 Jun 19:43

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

JRuby 9.2.x is compatible with Ruby 2.5.x and stays in sync with C Ruby. As always there is a mix of miscellaneous fixes so be sure to read the issue list below. All users are encouraged to upgrade.

As we are still actively working on 9.3.0.0 we decided to put out another 9.2.x release to fix some of the more recently reported issues.

Special thanks to our external contributors this release: @ahorek, @xaptronic

Compatibility

  • Improved support for subprocess launching on pure-Java environments (primarily Windows). (#6654, #6655, #6678, #6685)
  • Concurrency fixes for last match ($~) under concurrent access. Still somewhat unpredictable but behavior matches CRuby. (#6640, #6644, #6647)

Standard Library

Java Integration

Native Integration

  • Improved native support for exotic Linux platforms (mips64el, ppc64, s390x, aarch64). #6674, #6675, #6705
  • 40 issues fixed for 9.2.18.0

Github Issues resolved for 9.2.18.0

  • #3883 - Rinda:RingServer not working (used for spork)
  • #5148 - Data read from a UDP socket retains buffer size causing large memory overhead
  • #6126 - Socket#connect is not interrupted by Timeout#timeout and Thread#kill
  • #6128 - Do all socket connects nonblocking for interrupts
  • #6156 - Socket.gethostname encoding still platform specific
  • #6274 - Always encode gethostname result as UTF-8
  • #6291 - Failed to install bindex on a Windows 10 PC
  • #6366 - Add support for TCP_CORK (experimental)
  • #6372 - move socket message to constants
  • #6384 - [socket] add constants for reserverd ports
  • #6389 - [socket] remove misused SOL_ constants
  • #6399 - Missing TCP_INFO support
  • #6400 - basic TCP_INFO support
  • #6541 - Errno::ENOPROTOOPT when connecting to Redis with JRuby-9.2.14.0
  • #6542 - [socket] improve keep alive support
  • #6595 - Accept numeric host
  • #6637 - Fix issue with JAVA_HOME not being set
  • #6638 - Restore quotes around module detection JAVA_HOME
  • #6639 - Resolve symlinked java command to find home
  • #6640 - java.lang.ClassCastException: org.jruby.RubyNil cannot be cast to org.jruby.RubyMatchData
  • #6644 - Reduce backref usage in split
  • #6647 - Improve concurrency of $~ adjacent methods
  • #6648 - JRuby 9.2.17.0 fails to install sassc on Windows
  • #6649 - Compatibility fixes for open3 on Windows
  • #6654 - Kernel.system leaks ENV on JRuby + Windows
  • #6655 - Do not merge extra env with current env
  • #6664 - Copy 9.3 socket implementation to 9.2
  • #6668 - Comparators (==, <, >, <=, >=) of subclassed Time instance do not call cmp defined on the subclass
  • #6670 - Handle possible ArithmeticException when extending byte store for String
  • #6671 - Array max size auditing and fixes
  • #6674 - Latest JNR libraries for 9.2
  • #6675 - JNR updates
  • #6678 - Regression on Windows test:jruby test_system_with_conflicting_dir
  • #6685 - Also use shell for commands with a space
  • #6689 - Failure to RVM-install JRuby 9.2.{13,17},0 on Ubuntu 20 with JDK 8
  • #6692 - Getting Java::JavaLang::ArrayIndexOutOfBoundsException in compiler internals
  • #6700 - Use cached UTF8 single-char bytelists here
  • #6701 - Update jruby.exe
  • #6704 - Fixes #6692. AIOOBE on evals overflowing closure ids.
  • #6705 - Update JNR deps

JRuby 9.2.17.0

Choose a tag to compare

@enebo enebo released this 29 Mar 19:13

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

JRuby 9.2.x is compatible with Ruby 2.5.x and stays in sync with C Ruby. As always there is a mix of miscellaneous fixes so be sure to read the issue list below. All users are encouraged to upgrade.

As we are still actively working on 9.3.0.0 we decided to put out another 9.2.x release to fix some of the more recently reported issues.

Compatibility

Standard Library

  • RubyGems updated to 3.1.6. (#6294)
  • Build improvements to ensure all parts of default and bundled gems ship in the distribution archives. (#6604, #6609, #6618, #6619)
  • zlib fixed to properly handle extra data in stream after inflate finishes.(#6606, #6612)
  • Minor updates to align standard library with Ruby 2.5.8. (#6611, #6624)

Performance

  • Small optimizations to the dig function. (#6632)
  • Optimized calls to the top-level "java", "javax", "javafx", "org", and "com" packages.(#6635)

Issues Resolved

  • #6294 - [deps] update Rubygems to latest 3.1 (3.1.6)
  • #6592 - Fixes to support Sorbet
  • #6604 - racc default gem bits are not being included in the distribution
  • #6605 - RubySet#newSet should be a static method instead of an instance method
  • #6606 - zlib decompression produces wrong output
  • #6608 - Java::JavaLang::NoClassDefFoundError (java/sql/Date)
  • #6609 - Properly install and package bundled and default gem bits
  • #6612 - Return only inflated content from Zlib.inflate
  • #6615 - Detect modules more robustly
  • #6617 - Update Windows jruby.exe for module detection
  • #6618 - Include only bundled and default gems in stdlib jar
  • #6619 - Only include gems in bundled or default
  • #6624 - Update 2.5.8 stdlib
  • #6627 - GPL-3.0 in the COPYING file
  • #6629 - Unbreak CachingCallSite.isBuiltin
  • #6632 - Dig improvements
  • #6635 - Cache package after acquisition

JRuby 9.2.16.0

Choose a tag to compare

@headius headius released this 04 Mar 21:26

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

JRuby 9.2.x is compatible with Ruby 2.5.x and stays in sync with C Ruby. As always there is a mix of miscellaneous fixes so be sure to read the issue list below. All users are encouraged to upgrade.

As we are still actively working on 9.3.0.0 we decided to put out another 9.2.x release to fix some of the more recently reported issues.

Compatibility

  • Fixed an issue in Kernel#system where subprocesses that daemonize would cause waitpid to hang. (#6579, #6582)

Standard Library

  • Elevated the racc library to a default gem, so it contains all racc sources and can be upgraded. (#6416, #6576, #6581)
  • Added RubyGems configuration to preserve "env shebang" in the gem command when updating RubyGems. (#6586)