Releases: jruby/jruby
JRuby 9.3.10.0
The JRuby community is pleased to announce the release of JRuby 9.3.10.0
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
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 community members who contributed pull requests for this release: @ahorek
Ruby Compatibility
- Various small compatibility fixes. See the issues list.
Platform Support
Regexp Regression Fix
- Fixed regression which caused longer strings to match slower. (#7484)
Issues resolved for 9.3.10.0
- #5588 - OpenSSL::PKey::RSA.new without password results in terminal input failure
- #6821 - Possible unpacking issue on current 9.3.0.0 with arm64 arch
- #7260 - JRuby supports a new architecture
- #7484 - Regression for non matching Regexp in
9.3.4
- #7514 - [fix] java_alias-ing for interface methods
- #7542 - specs for pack/unpack with
j
andJ
formats failing on 32-bit platforms - #7545 - public_method_defined? changed value after prepend unrelated module
- #7546 - Method overriding new does not have super_method from Class
- #7548 - cannot use T::Struct from sorbet-runtime due to exception
- #7554 - 1 << (2**40) returns 1 on JRuby
- #7555 - UnboundMethod#bind should introduce include class
- #7558 - Raise NoMemoryError for lshift > int max
- #7559 - Etc#sysconf errors when it shouldn't
- #7560 - Improvements and greening of 9.3 CI
- #7562 - Use latest mysql like sequel HEAD
- #7565 - Process#spawn should call #to_io on non-IO file descriptor objects
- #7575 - Fix Method#super_method.owner pointing at wrong class
- #7577 - Fix public_method_defined in presence of prepend
- #7581 - Use platform bit width for J/j pack directive
- #7590 - backport Update JNR dependencies
- #7596 - Java::JavaLang::ClassCastException when initializing instance variable
- #7598 - instance_eval, module_eval, class_eval cannot yield to block
- #7605 - Also include frame's block for instance_eval
- #7608 - Support for LoongArch64
JRuby 9.4.0.0
The JRuby community is pleased to announce the release of JRuby 9.4.0.0.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
The release of JRuby 9.4 represents a leap forward to Ruby 3.1 compatibility, which would not have been possible without help from the excellent contributors in our JRuby community: @k77ch7, @PurityLake, @ahorek, @byteit101, @mrnoname1000, @edipofederle, @chadlwilson, @philr, @gtback.
A special shout out goes to Kiichi Hiromasa (@k77ch7) for submitting dozens of feature and fix PRs and to Patrick Plenefisch (@byteit101) for his work on the libfixposix-powered subspawn gem.
We plan to put out several maintenance updates in the next few months. To help us improve compatibility and performance, we encourage you to try your apps and libraries on JRuby 9.4 and report any issues you find.
- Issue tracker: https://github.com/jruby/jruby/issues
- Matrix chat: https://matrix.to/#/#jruby:matrix.org
- Twitter: @jruby
- Mastodon: @jruby@ruby.social
- Mailing list: jruby@ruby-lang.org
Ruby Compatibility
- Compatibility is updated to Ruby 3.1 level. This includes all Ruby 2.7, 3.0, and 3.1 features except where noted below. (#6464, #6878, #7015)
- Ractor is not yet supported. JRuby users can achieve better parallelism by using threaded libraries and frameworks.
- The scheduler interface for IO, locks, and fibers is not yet supported. It will be added in an update release.
- Nearly all features from CRuby's NEWS file have been implemented. Most new tests and specs pass.
- Remaining 3.0 and 3.1 features will be implemented in an update release. See [#7459] and [#7460].
Standard Library
- Much of the standard library has moved out to gems, and JRuby supports a large subset of these gems. See lib/pom.rb for the complete list of default and bundled gems.
- Greatly improved PTY and spawn support thanks to the subspawn gem, which is included as part of the standard library. [#7393]
JVM Integration
- Java setFoo methods that do not match JavaBean standards (return value other than void, for example) will now also generate a foo= method when imported into Ruby. ([#7340], [#7352])
Platform Support
- The JRuby launcher script has been ported to POSIX shell (/bin/sh) and no longer requires Bash. (#7024)
- Initial support for the LoongArch64 platform has been inherited from the Java Native Runtime libraries.
Third-party Libraries and Frameworks
- Initial support for Rails 7. SQLite and MySQL are largely functional, but work remains to update them and PostgreSQL.
[#7223]...
JRuby 9.3.9.0
The JRuby community is pleased to announce the release of JRuby 9.3.9.0
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
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.
Thanks to our contributors this cycle for helping to improve stability and compatibility of JRuby 9.3: @chadlwilson, @coheigea
Standard Library
- rdoc has been updated to 6.3.3 to fix all known CVEs. (#7396, #7404)
- rexml has been updated to 3.2.5 to fix all known CVEs. (#7395, #7405)
- jruby-openssl has been updated to 0.14.0 to fix weak HMAC key hashing in bouncycastle, which itself is updated to 1.71. (#7335, #7385, #7399)
- psych has been updated to 3.3.4 to fix CVE-2022-38752 in the SnakeYAML library, which itself is updated to 1.33. (#7386, #7388, #7400)
- rubygems has been updated to 3.2.33 and bundler updated to 2.2.33 to address CVE-2021-43809. (#7397, #7401)
Github Issues resolved for 9.3.9.0
- #5588 - OpenSSL::PKey::RSA.new without password results in terminal input failure
- #7335 - Upgrade jruby-openssl to 0.14.0
- #7367 - StringIO ignores external encoding on Windows
- #7380 - [Tiny issue] swing2.rb example at https://github.com/jruby/jruby/blob/master/samples/swing2.rb has a warning, "swing.rb:4: warning: import is deprecated; use java_import"
- #7385 - Updating jruby-openssl to 0.14.0
- #7386 - Update SnakeYaml to 1.32+ due to CVE-2022-38752
- #7388 - Update to Psych 3.3.4
- #7395 - Update embedded rexml in jruby-complete
- #7396 - Update rdoc in jruby-complete
- #7397 - Update bundler in jruby-complete
- #7399 - Update bouncycastle in jruby-complete
- #7400 - Update snakeyaml in jruby-complete
- #7401 - [deps] update Bundler/Rubygems to latest patch
- #7404 - Update rdoc to 6.3.3 to fix known CVEs
- #7405 - Update rexml to 3.2.5 to fix known CVEs
- #7406 - Time.at with fractional seconds and :in doubles timezone offset
- #7407 - Better match CRuby zone negotiation
- #7416 - Regexp new none option
JRuby 9.3.8.0
The JRuby community is pleased to announce the release of JRuby 9.3.8.0
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
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.
Thanks to our contributors this cycle for helping to improve stability and compatibility of JRuby 9.3: @ahorek, @ccutrer, @evaniainbrooks, @naveensrinivasan
Ruby Compatibility
- Altering the visibility of an included module method no longer changes what super method gets called. (#7240, #7343, #7344, #7356)
- Thread termination at shutdown is more robust and visits all non-main threads. (#7351)
Standard Library
- csv has been updated to 3.2.5 to pick up a fix that eliminates fiber use for simple parse_line calls. (#7346, #7348)
- psych has been updated to 3.3.3 to address CVE-2022-25857, an element-nesting DoS. (#7342)
Experimental Features
- Fibers can now be configured to use OpenJDK Project Loom's virtual threads, which are lightweight and do not consume a native platform thread. Virtual threads make it possible for JRuby applications to create thousands of concurrently-executing fibers. Enable this feature on Java 19 using the JVM flag
--enable-preview
. (#7328)
27 Github Issues resolved for 9.3.8.0
- #7240 - Changing method visibility changes behavior for module-inherited methods
- #7257 - chore: Set permissions for GitHub actions
- #7262 - jar-dependencies cannot be updated out-of-band from jruby
- #7265 - Time.at argument handling
- #7303 - Fix included_modules method to not return wrapped modules
- #7316 - Incompatible error when nested
LoadError
- #7317 - Oddity with the jruby parser: it warns me about "warning: found = in conditional, should be =="
- #7321 - Fix issue #7316 runtime error when nested raise
- #7324 - Time::at with BigDecimal emits Java Negative Exponent exception
- #7325 - Fix negative scale BigDecimal#to_r
- #7326 - sum method - undefined method 'last' for 1:Integer
- #7328 - Use vthreads when available
- #7332 - defined reified classes with their parent class's classloader as parent
- #7333 - fix Enumberable sum when elements are array
- #7334 - fix zlib encoding
- #7338 - InstanceConfiguration extra loaders not thread safe
- #7342 - Update SnakeYaml to 1.31+ due to CVE-2022-25857
- #7343 - Fix for changing method visibility changes behavior for module-inherited methods
- #7344 - Changing method visibility changes super_method for module-inherited methods
- #7345 - Use thread-safe COW lists here
- #7346 - Iterating over
CSV.parse_line
causes an explosion of threads/fibers - #7348 - Update CSV to 3.2.5
- #7351 - Avoid accidentally killing the teardown thread
- #7354 - Fix 7317 it warns me about "warning: found = in conditional, should be =="
- #7356 - Fix for method visibility changes super_method for module-inherited methods
- #7358 - Update polyglot-maven and commit updated XMLs
- #7359 - Fixes Time.at argument handling (#7265)
JRuby 9.3.7.0
The JRuby community is pleased to announce the release of JRuby 9.3.7.0
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
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.
Thanks to our contributors this cycle for helping to improve stability and compatibility of JRuby 9.3: [@evaniainbrooks], [@k77ch7], [@ccutrer], [@jimtng]
22 Github Issues resolved for 9.3.7.0
- #7120 - Gem.install caused a BootstrapMethodError
- #7185 - Spurious constant replacement warning when using include_package
- #7211 - require_relative doesn't work inside Jar with 9.3.4.0
- #7218 - Empty rescue block returns exception object instead of nil
- #7264 - update jar-dependencies gem hooks
- #7267 - Circular exception handling can cause infinite loop since 9.3.4.0
- #7268 - com.sun.nio.file.ExtendedOpenOption not available in OSGi bundles on Windows since JRuby 9.3.0.0
- #7271 - Fix BootstrapMethodError in runtime helpers
- #7279 - simple timeout script does not work
- #7280 - Eliminate JI-specific const replacement warning
- #7281 - Use the wide versions of these functions always
- #7282 - Fixes #7218. Empty rescue block returns exception object instead of nil.
- #7288 - Clear errinfo after each finalizer runs
- #7289 - Revert "update jar-dependencies gem hooks"
- #7291 - update jar-dependencies 0.4.2 reference in lib/pom.rb
- #7292 - Always pass filename into AOT root scope creation
- #7298 - Revert "update jar-dependencies 0.4.2 reference in lib/pom.rb"
- #7299 - Fix for issue 7256: Undefined constants when including a module that has been prepended
- #7302 - Fix for issue 7256 (jruby-9.3)
- #7304 - Only use NOSHARE_DELETE if accessible
- #7306 - Syntax Error occurs in regex
- #7314 - Fix parsing Regexp for #7306
JRuby 9.3.6.0
The JRuby community is pleased to announce the release of JRuby 9.3.6.0
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
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.
Thanks to our contributors this cycle for helping to improve stability and compatibility of JRuby 9.3: @ahorek, @keimar, @k77ch7
Ruby Compatibility
- Fixed a leak in the frozen string cache and now ensure frozen strings are reused correctly without reencoding. (#7166, #7229, #7242)
Java Integration
JRuby 9.2.21.0
The JRuby community is pleased to announce the release of JRuby 9.2.21.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.
Thanks to our contributors this cycle for helping to maintain and improve JRuby 9.2: @dee-see, @edipofederle, @DirkMahler
Ruby Compatibility
- Fixes for a memory leak in the frozen string cache have been backported. (#7021)
Java Integration
- The internal cache for nested jar file contents has been optimized and a new option added for cache expiration. (#7225, #7232, #7259)
Hardware Support
- Support for Apple's M processors has been backported. It has not been heavily tested, but it has been confirmed working by users. (#6953, #6965, #6985)
Standard Library
- jruby-openssl update to 0.12.2. (#7140)
JRuby 9.3.4.0
The JRuby community is pleased to announce the release of JRuby 9.3.4.0
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
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.
Thanks to our contributors this cycle for helping to improve compatibility: @ahorek, @byteit101, @k77ch7
Ruby Compatibility
define_singleton_method
now always uses public visibility. This simplifies its implementation and eliminates warnings when aliasing it, as in the ostruct gem. (ruby/ostruct#40, #7031, #7055)
Java Integration
- The
import
method for importing Java classes remains deprecated for removal in 9.4, but now provides a better warning with a source location. (#6976) - Ruby subclasses of Java classes and Ruby classes converted into Java classes can now include instance variables that are accessible from Java as normal fields. This improves integration with Java frameworks that use reflection to access object state. (#7012)
Hardware Support
- Generated make files now properly set the platform architecture when running on Linux/aarch64 and Apple's M1 family of CPUs. This allows sassc and other non-extension C-based gems to build and install properly. (sass/sassc-ruby#231, #7132, #7133)
Standard Library
- ostruct is updated to 0.5.1, which fixes warnings in verbose mode loading the json library. ([#6831], [#6963])
- logger is updated to 1.5.1, which fixes a log rotation locking issue on Windows. (ruby/logger#67, ruby/logger#68, #7038)
- Socket IPv6 constants are now always defined regardless of platform support, matching CRuby and JRuby 9.2. (#7069, #7071)
33 Github Issues resolved for 9.3.4.0
- #6976 - [Better error/notification message] "calling java_import on a non-Module object is deprecated"
- #7009 - Break in block passed to Thread doesn't cause LocalJumpError
- #7012 - Allow reified classes to store instance variables in raw fields
- #7016 - Compile splatted rescue as splat
- #7018 - New string literals are marked as tainted if previously equal tainted strings were read from a file
- #7020 - Avoid interning tainted strings
- #7029 - Handle unrooted break jumps in Thread
- #7031 - warning: OpenStruct#define_singleton_method accesses caller method's state and should not be aliased
- #7035 - Circular exception causes break JRuby
- #7038 - Log rotation inter-process lock failed, Issue occurs in JRuby 9.3.0.0 and Windows
- #7055 - Explicitly use public visibility for define_singleton_method
- #7056 - Restore 9.2 collect signature and add more API
- #7069 - Socket::PF_INET6 is nil on 9.3 when ipv6 is not available, unlike with MRI and 9.2
- #7070 - Regression: 9.3 converts LoadError to NameError when autoloading repeatedly and loading fails and file being loaded is not in current directory
- #7071 - revert ipv6 availability
- #7074 - Remove the require lock on LoadError
- #7102 - ArgumentError re-splatting empty keyword arguments
- #7104 - Integer#to_s, Integer#to_json includes null character(\x00, \u0000) on JRuby 9.3.*
- #7111 - Fix #7104
- #7117 - java_signature throws NPE when using positional annotation arguments
- #7131 - More checking for null fd
- #7132 - Architecture tweaks for JRuby on M1
- #7133 - [aarch64] fix unrecognized command -m64 for native extensions
- #7137 -
Range#===
should not accept range argument - #7138 - Use non-range cover logic for eqq and include
- #7139 - [deps] bump jruby-openssl to latest (0.12.2)
- #7142 - Update jcodings
- #7143 - Better warnings for deprecated java_import forms
- #7145 - Disallow circular causes
- #7146 - Revert ivar Java fields to fix remaining issues
- #7147 - Fixes #7102. ArgumentError re-splatting empty keyword arguments
- #7150 - Allow reified classes to store instance variables in raw fields (fixed)
- #7153 - Ripper.sexp throws error while parsing 'ö'
JRuby 9.3.3.0
The JRuby community is pleased to announce the release of JRuby 9.3.3.0
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
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
- #6813 - File.directory? returns false on macOS M1 for a directory
- #6831 - require "json" outputs warnings
- #6853 - Getting "io/console on JRuby shells out to stty for most operations" on Jruby 9.3 with JDK17
- #6935 - RuntimeError: Found multiple supers in java ctor
- #6957 - Make split-super errors slightly more user friendly
- #6963 - Update ostruct to 0.5.1
- #6968 - Calling super() in a reopened Java subclass method triggers NPE in IRRuntimeHelpers.javaProxySuper
- #6974 - Dir.mktmpdir errors on apple-silicon native JDK
- #6977 - gem install error "Permission denied" for jruby 9.3.2.0 [darwin-aarch64] (Apple M1)
- #6981 - JRuby 9.3.2.0 case/when array comparison differs from CRuby 2.6.9
- #6983 - Wrong file mode/permission when opening/creating a new file [Apple Silicon, arm64, aarch64]
- #6984 - Java::JavaLang::ArrayIndexOutOfBoundsException on jruby-9.3.2.0
- #6986 - Merge 9.2 for JNR update and Symbol fix
- #6989 - case when with an empty array
- #6991 - Fix #9684. AIIOBE when files >16bit lines and using coverage
- #6993 - Possible memory leak from
instance_eval
with jruby 9.3 - #6994 - Fixes #6993. Evals cause memory leak.
- #6996 - Do not cache non-"once" dregexp
- #7004 - Module check mishandles bash operator precedence
- #7006 - Fixes to run tests on Apple Silicon
- #7007 - Java class reopened to add a super call should dispatch normally
- #7010 - Avoid subshell for module check
JRuby 9.3.2.0
The JRuby community is pleased to announce the release of JRuby 9.3.2.0
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
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-baseddate
extension, which JRuby does not use, but JRuby's own implementation ofdate
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
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
- #5729 - Check to see if we can do single nanosecond level math
- #6813 - File.directory? returns false on macOS M1 for a directory
- #6843 - move syslog constants to jnr-constants
- #6889 - Also print causes of bubbled-out exceptions
- #6895 - JRuby 9.3 Hash eats key String subclass instance variables
- #6896 - JRuby 9.3 singleton_class bug
- #6899 - Do not deduplicate strings with ivars
- #6900 - Skip prepend wrappers in each_object(Module)
- #6924 - java.lang.Iterable object has Enumerable ancestor but map cannot be called (jruby-9.3.x)
- #6942 - New strftime
- #6943 - Honor the requested address even given hostname
- #6945 - Socket fixes for GHA CI
- #6952 - Limit Date.parse input length and make interruptible
- #6954 - Fix 6924
- #6956 - Improve Performance of Time#strftime