Author: The JRuby Team
Source
The JRuby community is pleased to announce the release of JRuby 9.4.4.0.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
JRuby 9.4.x targets Ruby 3.1 compatibility.
Thank you to our contributors this release, you help keep JRuby moving forward! @ahorek, @chadlwilson, @k77ch7, @kares, @mrnoname1000, @ntkme, @skmp
Ruby Compatibility
Standard Library
- Default gem updates:
- jruby-openssl 0.14.2. #7886
- psych is updated to 5.1.1.1, which uses SnakeYAML and exposes Psych::Parser.code_point_limit= for globally setting the code point limit.
- bigdecimal is now a default gem (3.1.4) for the pure-Ruby portions; the extension remains part of JRuby itself. #7925
- stringio is updated to 3.0.8. #7881
Platform Support
- This release includes native support for Windows on the AArch64 (ARM64) platform. #7843, #7936, #7937, #7941, #7945, #7960
- The
jruby
shell script gains support for ksh93, meaning that essentially all Bourne-compatible shells can run it. #7870
JVM Integration
- Virtual thread use in Fiber can now be disabled using the
jruby.fiber.vthread=false
property (or JRuby flag-Xfiber.vthread=false
). #7907 - Multiple small bugs in JVM bytecode generation and invokedynamic logic were discovered and fixed. #7913
Build and Distribution
- The JRuby/Maven stack of plugins used to integrate Ruby and Maven artifacts have been updated to the latest versions, now using JRuby 9.4.3.0 for builds and avoiding the use of deprecated rubygems.org APIs. #7872
Performance
- Conditional assignment of instance variables now requires only a single lookup, and optimizes to a simple read after assignment. #7891, #7896
78 Github Issues and PRs resolved for 9.4.4.0
- #7430 – Rails fails to boot under Java 19
- #7470 – OpenJ9 failing -Ptest
- #7623 – setup and fix issues reported by error-prone compiler
- #7649 – Infinite loop in StringScanner regex
- #7815 – NullPointerException for compiled code with for loop
- #7839 – `clone’: wrong number of arguments (given 1, expected 0) (ArgumentError) in JRuby 9.4.x
- #7843 – FFI Support for aarch64-windows
- #7847 – File subclass doesn’t pass arguments from open to new properly
- #7848 – Wrong interpretation of multi-expression when clause
- #7849 – Fixes #7848. Wrong interpretation of multi-expr when clause
- #7850 – Fixes #7847. File subclass passes args from open to new wrong
- #7851 – @JRubyMethod minimum argument not enforced in 9.4.3.0
- #7852 – Array#intersect? incompatibility
- #7853 – Fix #7839. `clone’: wrong number of arguments
- #7854 – Pattern matching with an empty hash should result in no match
- #7855 – eval vs lvars scope
- #7857 – Fixes #7855. pattern assoc assigns should scope
- #7858 – Fixes #7854. Pattern matching with an empty hash should not match
- #7859 – Coverage library returns incorrect info for hash literal constants
- #7860 – Restore arity-checking with an opt-out flag
- #7861 – org.jruby.RubyLoadError getCause returns itself
- #7863 – Fixes #7859. Coverage returns incorrect info for hash literal constants
- #7864 – –help and other output does not check TTY
- #7866 – Recursive hashing corrupts shared hash buffer
- #7867 – [deps] update jruby-openssl to 0.14.2
- #7868 – Expanding on an older method of putting call linenums in right place
- #7869 – Make sure Ruby exception does not provide itself as cause.
- #7870 – Launcher tweaks
- #7872 – Migrate to new mavengem
- #7875 – always_verify_ssl_certificates causes class cast error
- #7881 – Update StringIO and reenable specs
- #7882 – [fix] duplicate hash key literal removal
- #7886 – Update jruby-openssl
- #7887 – Fix BigDecimal#power with negative integer
- #7888 – Fix dynscopes
- #7890 – Fix BigDecimal#eql? when an argument is Rational
- #7891 – Conditional assignment of field does two lookups
- #7892 – Fix BigDecimal#quo with prec and without prec
- #7893 – Add INT64_MAX, INT64_MIN, UINT64_MAX, LLONG_MAX, LLONG_MIN and ULLONG_MAX to RbConfig::LIMITS
- #7894 – Fix BigDecimal#div when an argument is object
- #7895 – Fix BigDecimal.allocate to raise TypeError
- #7896 – Optimize
@a ||= x and defined?(@a)
- #7897 – Update test_bigdecimal.rb and fix a few failures
- #7898 – Marshal.dump with frozen string literals differs on –debug flag
- #7899 – Call-site cache remaining callMethod in Set
- #7901 – Protect cached threadlocal in recursive hash
- #7903 – Move frozen string debug fields into subclass
- #7904 – invokedynamic makes Concurrent::TimerTask.execute reliably result in
java.lang.invoke.WrongMethodTypeException
- #7905 – RubyArray: Fix intersect? for small arrays
- #7911 – multiple applications in tomcat and jruby 9.4.3.0 com.headius.invokebinder.InvalidTransformException: java.lang.IllegalAccessException
- #7913 – Multiple fixes for forced JIT and indy-based Java dispatch
- #7918 – Unexpected ArgumentError calling Forwardable delegated single splat method with keyword arguments
- #7922 – Addrinfo
- #7923 – add Addrinfo#ipv6_unique_local?
- #7924 – (master) frozen string errors with
--debug
- #7925 – Switch to bigdecimal gem
- #7926 – Proc.new with no args no longer supported in 3.1
- #7927 – Fixes #7649. Infinite loop in StringScanner regex
- #7928 – More frozen string tweaks
- #7929 – Fixes #7918. Error with single splat method with keyword arguments
- #7931 – Store absolute path of main at load time
- #7936 – Update jnr stack
- #7937 – File.chown throws “SystemCallError:Unknown error (SystemCallError)” at Windows11 on Arm64
- #7940 – More testing with Java 21
- #7941 – Update ffi to 1.16.1
- #7942 – fnmatch not matching glob syntax in 9.3.8 but it did in 9.2.20.1
- #7945 – Update ffi to 1.16.2
- #7946 – In some cases sorting using String.casecmp results in Comparison method violates its general contract!
- #7947 – fnmatch not matching glob syntax
- #7948 – Fix #7815. NullPointerException for compiled code with for loop
- #7949 – Use a lookup() for field access in static constant
- #7950 – Convert to lower, not upper, for casecmp
- #7952 – Avoid ANSI formatting when not on a TTY
- #7955 – Misc regex and strscan improvements
- #7956 – Re-enable J9 test in CI
- #7957 – Use new GHA M1 runner
- #7960 – Update ffi to 1.16.3
- #7966 – Update to psych 5.1.1.1