Releases: jruby/jruby
JRuby 9.2.16.0
The JRuby community is pleased to announce the release of JRuby 9.2.16.0
- Homepage: http://www.jruby.org/
- Download: http://www.jruby.org/download
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
JRuby 9.2.15.0
The JRuby community is pleased to announce the release of JRuby 9.2.15.0
- Homepage: http://www.jruby.org/
- Download: http://www.jruby.org/download
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
- Several issues were fixed in process management, to avoid raising unexpected errors, properly launch executables on Windows, and preserve quoting when also doing a chdir. (#6466, #6477, #6489, #6516, #6532, #6536, #6546, #6565, #6568)
- Error and interrupt handling inside fibers has been improved to avoid leaking fibers and enumerators. (#6309, #6538)
- An incompatibility between the Synchronized module and refinements caused the i18n gem's deep_merge refinement to break method lookup and prevent Rails apps from starting up. (#6547, #6549)
- IO.copy_stream attempted to write the same content twice when copying to an IO-like object that did not report having written all requested bytes. (#6555, #6557)
- Bare super calls (aka "zsuper") gathered arguments incorrectly to support define_method, which broke dynamic finders in recent Rails versions. (#6563, #6571)
Standard Library
- The racc library was updated to 1.5.2 (#6507, #6517, #6537)
- Failed UNIX socket connects were leaking an open file descriptor. (#6529, #6531)
Performance
- A bug in setting up block yields using invokedynamic led to excessively deep call stacks and slow execution. (#6260)
JRuby 9.2.14.0
The JRuby community is pleased to announce the release of JRuby 9.2.14.0
- Homepage: http://www.jruby.org/
- Download: http://www.jruby.org/download
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.
Security
- The WEBrick HTTP server has been updated to 1.6.1 to address CVE-2020-25613. (#6462, #6463)
Standard Library
- did_you_mean was updated to 1.2.1 to remove some Creative Commons licensed content. (#6471, #6473)
- jruby-openssl was updated to 0.10.5 to eliminate some Java module warnings and improve compatibility. (#6423)
Concurrency
- A race in storing the lock a thread has just acquired was fixed, preventing that lock from being left locked if the thread dies prematurely. (#6326, #6405, #6407)
Performance
- Call sites bound using invokedynamic were not inlining due to a quirk of classloading on OpenJDK. This has been fixed so such calls inline properly. (#6280)
Native Integration
- The Java Native Runtime used to integrate with native system code has been updated to latest versions to improve compatibility. (#6482)
JRuby 9.2.13.0 Released
The JRuby community is pleased to announce the release of JRuby 9.2.13.0
- Homepage: http://www.jruby.org/
- Download: http://www.jruby.org/download
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.
Security
- An alias-expansion bug reported in CVE-2017-18640 has been patched
by upgrading the Psych YAML library to use a newer version of SnakeYAML. (#6320,
#6332, ruby/psych#457)
Concurrency
- Internal structures used to optimize Ruby code have been made more thread-safe. Previously, these optimizations could
be seen across threads in a partially-complete state, leading to errors in JRuby's core runtime.
(#6319, #6323,
#6337)
Ruby Compatibility
- IO.copy_stream has been fixed to ensure all read bytes are written. Previously, partial writes would leave some
read bytes in limbo, leading to hangs in net/http among other libraries.
(#6078, #6348) - Fixed a regression from 9.2.12.0 in how we translate JDK socket errors to Ruby's Errno on Windows.
(#6322, #6328)
FFI
JRuby 9.2.12.0 Released
The JRuby community is pleased to announce the release of JRuby 9.2.12.0
- Homepage: http://www.jruby.org/
- Download: http://www.jruby.org/download
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.
Java Integration
- The last remaining triggers of the "Illegal access" warnings and errors in JRuby core have been fixed. JRuby will avoid accessing Java modules and packages that have not been exported or opened. (#6195, #6287, #6298, #6299)
- A new option is added to work around the OpenJDK URLClassLoader concurrency bug we recently reported. Set Java property
jruby.ji.close.classloadertofalsewhen embedding JRuby in a JVM application to avoid "zip file closed" errors. This will be the default setting in JRuby 9.3. (#6218, #6307) - Support for calling Kotlin has improved, avoiding warniings for companion objects. This also avoids a warning when accessing Java code where a static final field is named the same as an inner class. (#6196, #6289)
Concurrency
- An issue affecting concurrent generation of Java interface implementations has been fixed. (#6160, #6167)
- Internal optimization of Ruby code has been improved to avoid concurrency issues. (6210, #6230, #6275, 6282, #6288)
Security
A few minor security issues have been fixed. We do not consider them high risk, but we recommend users update. (#6304)
- Numeric objects now use a per-runtime random seed to generate hash values (CVE-2011-4815). The existing JRuby property
jruby.consistent.hashingcan be set totrueto restore predictable hash values, as for other core types. (6305) - String#unpack raised the wrong error for invalid input related to CVE-2018-8778. There was no security issue. (#6306)
- The WEBrick HTTP server provided in the Ruby standard library has been updated to 1.6.0, to address two issues with response-splitting and header injection (CVE-2017-17742 and CVE-2019-16254). This server is not typically used in production, so the exposure is limited. (#6308)
24 Github Issues resolved for 9.2.12.0
- #6308 - Update WEBrick to 1.6.0
- #6307 - Only close temporary jars to avoid poisoning global jar file cache
- #6306 - Raise RangeError for out of bounds unpack_at
- #6305 - Mimic CRuby's numeric hashing
- #6304 - Align behavior with CRuby for security specs
- #6299 - Reflective access on Java 11
- #6298 - Do not bind methods from classes that are not exported
- #6289 - Only define static field constant when inner class collides
- #6288 - Always treat non-full IC as not having protocol
- #6287 - com.sun.javafx.collections not exported in javafx.base
- #6285 - Backport 9.3 fixes for 9.2.12
- #6282 - NPE in ruby block called concurrently from Java
- #6275 - Do lazy instruction deserialization against dup'ed reader
- #6256 - Raise proper error for missing URLResource target
- #6230 - CompiledScript throws weird exception that doesn't happen with Invocable
- #6219 - JRuby thrown NullPointerException on File.open of nonexistent uri
- #6218 - Errors running multiple independent ScriptingContainers in parallel
- #6210 - Multithreaded code with function calls fail in precompiled JRuby classes
- #6196 - "warning: already initialized constant Companion" with Kotlin companion objects
- #6195 - Use all the tricks to properly eliminate illegal access warnings
- #6167 - [fix][ji] handle concurrent proxy iface impl init
- #6160 - interface proxy generation is race-y
- #6112 - [fix] Enumerable#any? does not require an arg
- #5968 - Enumerator#any? is wrong for sequence of empty arrays
JRuby 9.2.11.1 Released
The JRuby community is pleased to announce the release of JRuby 9.2.11.1
- Homepage: http://www.jruby.org/
- Download: http://www.jruby.org/download
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 actively working on 9.3.0.0 we decided to put out a mini release which fixes a single issue.
- sprintf substring string formatting with precision may expose characters (#6137)
If you format a string using a precision specifier (e.g. %.1s) AND you pass in a substring of a larger string, you may see some of the larger string's characters in the formatted result. This is due to a bug in the handling of internal String data that causes the result to contain more characters than requested.
long_string = "aabbccddhelloddccbbaa"
start_index = 8
sub_str_length = 5
precision = 3
sub_string = long_string[start_index, sub_str_length]
puts sprintf("%.#{precision}s", sub_string)
# => helloddccbbThis bug could potentially expose sensitive content from the original String. It is unlikely to affect most users, but you are still encouraged to upgrade.
Github Issues resolved for 9.2.11.1
JRuby 9.2.11.0 Released
The JRuby community is pleased to announce the release of JRuby 9.2.11.0
- Homepage: http://www.jruby.org/
- Download: http://www.jruby.org/download
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.
Java Integration
- Gems and gem paths packaged inside jar files will properly load now. This 9.2.10.0 regression was caused by a change in RubyGems 3 that exposed a bug in JRuby. (#6060, #6082, #6083, #6084)
Performance Improvements
- Fixed a major performance and memory bottleneck in backtrace generation, used by
Kernel#callerand friends. This was a regression in 9.2.10.0. (#6089)
Github Issues resolved for 9.2.11.0
- #6097 - CGI.escapeHTML restore the original encoding
- #6093 - CGI.escapeHTML crashes on invalid byte sequence where CRuby does not
- #6091 - Check arity earlier in JavaConstructor#new_instance
- #6090 - [9.2.10.0] bogus revision regression
- #6089 - Pontential performance issue
- #6084 - Use expand_path logic for Dir.glob base path
- #6083 - Basic smoke test with warbler no longer works with jruby-jars-9.2.10
- #6082 - Upgrade to 9.2.10.0 breaks project using asciidoctor-maven-plugin
- #6081 - Dependency convergence errors in 9.2.10.0
- #6079 - newInstance on protected/private classes sometimes give an Index OOB Exception
- #6060 - Globbed jar contents with expand path failing in RubyGems
JRuby 9.2.10.0 Released
The JRuby community is pleased to announce the release of JRuby 9.2.10.0
- Homepage: http://www.jruby.org/
- Download: http://www.jruby.org/download
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.
Ruby Core
- Kernel#send and BasicObject#__send__ will now honor refinements used in the surrounding scopes. (#5945, #6045)
- Kernel#eval will now honor refinements used in a given binding. (#6017)
- Process#spawn now correctly processes environment variables for the child process. (#3428, #5907)
Ruby Standard Library
- RubyGems has been updated to version 3.0.6. (#5995, #5996)
- The jruby-openssl library has been updated to 0.10.4. This release improves support for newer forms of ciphers and cryptographic keys and reduces the number of Java module warnings displayed. (#6077)
- The compatibility of the fiddle library has been improved. (#5955, #5956, #5960)
Java Support
- Java methods looked up one-at-a-time using
java_methodand friends now honor Java modules. This fixes some
illegal access errors introduced in JRuby 9.2.9.0. (#5894, #5969, #6043, #6069, #6072) - More illegal access warnings have been cleaned up in JRuby and the jruby-openssl extension.
Native FFI Improvements
- The native subsystem has been rebuilt on MacOS to avoid security warnings due to the old toolchain originally used to build it. (#6044, #6074)
- Native constants have been updated for Windows to better support the Ruby socket API. (#5656, #6070, #6071)
Performance Improvements
- Several improvements to the method invocation pipeline and JVM bytecode output to improve JIT optimizations. (#5958, #5959, #5978, #5992, #6005)
- Several core methods used by Rails and the internal handling of exception backtraces have been optimized. (#5952, #5961, #5965, #5972, #6014, #6015, #6031, #6067)
JRuby Launcher
- Java options dotfiles accidentally omitted in the JRuby 9.2.9.0 release have been restored in the bin directory.
- The bash-based launcher script has been cleaned up and optimized for cross-platform compatibility. (#5977, #6007, #6016)
Thank You!
The JRuby project would not be possible without contributions from you!
This release includes pull requests or major contributions from the following Github users (in no particular order): @matthewd, @fidothe, @MariuszCwikla, @ahorek, @deivid-rodriguez, @pythias, @rotty3000, @rmannibucau, @mrnoname1000, @kares, @mkristian, @eregon
Github Issues resolved for 9.2.10.0
JRuby 9.0.5.0
The JRuby community is pleased to announce the release of JRuby 9.0.5.0
- Homepage: 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.2.x and stay in sync with C Ruby. JRuby 9.0.5.0 is our latest release...
Major features of JRuby 9000:
- Ruby 2.2 compatibility
- A new optimizing runtime based on a traditional compiler design
- New POSIX-friendly IO and Process
- 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. 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.4.0
- Fixed leaks in IO.select and IO.copy_stream.
- Implemented DATA support lost in 9k.
- Fixed regression breaking empty-body define_method methods.
- Windows stat crashing on 32 bit JVMs
- 53 issues fixed for 9.0.5.0
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.0.5.0
- #3609 - Incompatible method lookup under Kernel.load(file,true), aka wrap, on 9.x
- #3602 - Fix cache-constructed-proxies
- #3599 - jrubyc won't compile a file with method in outer scope (NoMethodError: undefined method `new_method' for nil:NilClass)
- #3597 - Fix SizedQueue#num_waiting regression
- #3591 - Unhandled Java exception: java.lang.ArrayIndexOutOfBoundsException: -3
- #3590 - IO.copy_stream leaves opened files in ObjectSpace
- #3588 - Leak in select for a UNIXSocket (at least)
- #3586 - org.jruby.runtime.load.ClassExtensionLibrary.tryFind fails on certain classnames
- #3581 - Cache proxies of newly constructed Java objects
- #3579 - JRuby doesn't support DATA and __END__
- #3577 - Block call IR optimization failures by 0d35995
- #3576 - ConstructorInvoker isn't storing the proxy in the ObjectProxyCache
- #3574 - autoload + const_defined? inconsistent with Ruby 2.0+
- #3573 - MRI 2.2.2 / JRuby 9.0.4.0 difference given explicit `self` receiver for private method call.
- #3564 - Rational suffix doesn't work with 0
- #3563 - jdk9 produces warning on launcher
- #3558 - case doesn't match empty array
- #3542 - StopIteration does not propagate a result
- #3540 - Fix Enumerable#{min_by, max_by} with nil
- #3539 - Prevent to make subclass of Class
- #3538 - Regexp match raises java.lang.ArrayIndexOutOfBoundsException in numbered backreference
- #3537 - Fix Array#collect! that returns a sized enumerator as Array#map!
- #3530 - Calling IO.console twice raises NoMethodError for `#open?`
- #3527 - BigDecimal.new("5-6").to_i returns 0 on 9k where 1.7 and MRI returns 5
- #3520 - Having Problems With Celluloid::IO / Nonblocking IO
- #3494 - Proper support for UNIXSocket.for_fd
- #3493 - Wrong name mangling. V8Utils => v8utils instead of v8.utils
- #3492 - UNIXSocket#recv_io, UNIXSocket#send_io implementation using JNR
- #3488 - forcing a nil (no) backtrace with Java APIs
- #3483 - define_method with empty body throws RuntimeError in interpreter
- #3478 - Print warning when JRuby.objectspace is enabled
- #3472 - Hash keys should only be deduplicated for direct literal forms
- #3453 - AOT compile of method with conditional return results in "is not compiled Ruby; use java_import to load normal classes"
- #3452 - AOT compile of empty module results in NullPointerException
- #3437 - Fix for issue 3402: String#encode with :replace option does not return correct value
- #3433 - Getting back different values between Time#to_r and Time#to_i
- #3412 - [Truffle] make j+tr part of the distribution
- #3411 - Convert chinese encoding GB18030 to UTF-8 doesn't work
- #3405 - Hash has bug to set encoding into key string wrongly when the key string is used once with different encoding
- #3402 - String.encode :replace option does not work when encoding to UTF8
- #3331 - Fix 3303 refactor zoneHelper into getRubyTimeZoneName
- #3328 - remove support for aliasing Java indexed getters as Ruby readers
- #3262 - jruby 9.0.0.0 Java::JavaLang::Character.name
- #3209 - Correct a format string in Signal#trap.
- #3208 - Trapping reserved signals doesn't print a meaningful message
- #3193 - Java::JavaLang::StackOverflowError running spec which works on 2.2.1
- #3121 - jruby 9.0.0.0.rc1 performance regressions
- #3120 - Add some more tests for bignum pow
- #3119 - Fix date.rewrite_frags
- #2149 - Failing DateTime.strptime for weird dates near epoch
- #2142 - Struct#inspect does not produce the same output as MRI 2.2
- #940 - Implement UNIXServer and UNIXSocket.for_fd
- #455 - RubyUDPSocket swallows exceptions