Author: The JRuby Team
Source
Sponsored:
Atlas of AI: Power, Politics, and the Planetary Costs of Artificial Intelligence - Audiobook

Uncover the true cost of artificial intelligence.
Listen now, and see the system behind the screens before the future listens to you. = > Atlas of AI $0.00 with trial. Read by Larissa Gallagher
The JRuby community is pleased to announce the release of JRuby 9.4.6.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! @evaniainbrooks, @ahorek, @kares, @most00, @ntkme, @sk757a
Ruby Compatibility
- Support for the new Prism parser for Ruby code has been merged in. A blog post will follow soon. #8103
 - IO#fcntl had inverted logic for setting O_NONBLOCK (setting it cleared the value, etc). [#8081], [#8090]
 - Many fixes to language and core class compatibility, see issue list.
 - Warnings should match verbosity levels of CRuby, with many unwanted warnings now properly omitted without verbose enabled. #7183, #8071
 
Standard Library
- json is updated to 2.7.1. #7752, #7954
 - io-console is updated to 0.7.2. This version fixes IRB on Apple M-series by using stty for console manipulation. #8012
 - nkf is now supported by gem version 0.2.0. #8077
 - strscan is updated to 3.1.0. #8074, [#8086]
 - reline is updated to 0.4.2 #8102
 - jruby-openssl is updated to 0.14.3 #8107
 
JVM Integration
- Ruby Symbols can be use as arguments to JVM methods that receive Java String. #8015, #8057
 - Starting with Java 17, package-private methods will no longer be bound automatically even if they can be made visible. #8061, #8093
 
Native Integration
- The subsystem used for native calls has been updated to support RHEL/CentOS 7 and the Java 9+ Cleaner API. [#8104]
 
Performance
- Performance of keyword argument handling has been improved. #8021
 - Pattern matching is now supported in JRuby’s JIT compiler. #8026, #8027
 
77 Github Issues resolved for 9.4.6.0
- #4808 Rework global variables, caching to eliminate race conditions
 - #6430 Using <internal: for core library methods defined in Ruby
 - #7151 File.identical? should use stat to compare files
 - #7183 Various alias forms warn on redefine when they should not
 - #7523 Define IO::READABLE, WRITABLE, PRIORITY for IO#wait
 - #7695 jffi ships with binaries requiring glibc 2.27
 - #7721 jirb on win10 : The signal TSTP is in use by the JVM and will not work correctly on this platform
 - #7729 Sock fixes
 - #7752 Update JSON gem to not use Bigdecimal.new
 - #7759 irb on CentOS7, JRuby 9.4.2.0 , and JDK 1.8
 - #7760 Failure to load FFI gives an outdated message
 - #7845 Including a module again after prepending another module to it isn’t idempotent
 - #7862 Ruby 2.7 conformance: ObjectSpace::WeakMap is broken for FixNum keys
 - #7939 Yaml exception when trying to install rdoc-data
 - #7954 Update json for BigDecimal.new fix
 - #7958 Prepend internal marker to internal sources
 - #7974 [ji] support java_alias with constructor
 - #7981 Less instrs
 - #7996 Add %aA for printf and friends
 - #8001 Fix various specs
 - #8002 Time spec fixes
 - #8003 Fix issues in global variable thread-safety
 - #8005 New MRI test failures on less common architectures
 - #8007 Fix intermittent fails in CI
 - #8009 Expand WeakMap to allow floats and fixnums
 - #8010 Kernel#send does not strip off empty keywords hashes before calling eventual method
 - #8011 Fixes #8010. Kernel#send + empty kwargs hash error
 - #8012 Update io-console
 - #8013 Tag sweep2
 - #8014 Fixes language specs involving blocks/yield
 - #8015 Java method lookup for arity-1 method with inexact argument fails in the presence of arity-2 method with same name
 - #8016 Lang specs
 - #8021 Reduce overhead of kwargs for no-arg methods and blocks
 - #8022 Remove implicit prologue state to methods/blocks if that state is unused
 - #8026 Full JIT support for pattern matching
 - #8027 Pattern jit
 - #8031 Reuse thread-local jump exceptions to avoid construction
 - #8033 Implement 
Exception.to_tty? - #8039 Implement 
Exception.to_tty? - #8040 Match 
Exception#full_messagewith MRI 3.2 - #8045 Try to find class resource to avoid exception
 - #8046 Socket::IFF_* are missing
 - #8047 add socket flags for zeroconf
 - #8048 Try and make UDP look a little more like MRI (and hopefully make it more functional)
 - #8049 Fix String#unpack from using capacity() and causing wrong error
 - #8050 Various cleanups for String operations
 - #8052 ignore codes logic was not doing anything in unpack
 - #8053 More arity splitting
 - #8054 A bit confusing error: “FrozenError: can’t modify frozen NilClass”
 - #8055 override getDelegate in PrependedModule to return origin
 - #8056 Add hex exponential notation for Kernel::Float
 - #8057 recognize RubySymbol as assignable to String
 - #8060 Inspect frozen object for error
 - #8061 
enumerable.mapraise wrong number of arguments only when Ruby script is executed from Gradle using JDK 21 - #8063 Fix typos in cli options
 - #8070 Attribute definition on singleton should call singleton_method_added
 - #8071 Update some warnings to deprecated
 - #8072 Added Module#refinements and Refinement#refined_class
 - #8074 Update strscan to fix improper sharing
 - #8077 Switch to default gem for nkf
 - #8080 [fix] avoid Class#subclasses deprecation with class.rb ext
 - #8083 (master) rdoc test suite failing with Java::JavaLang::ArrayIndexOutOfBoundsException
 - #8088 Update strscan to 3.1.0 for OOB fix
 - #8091 Ripper is not returning unary minus with proper symbol
 - #8093 Rework visibility checks for Java integration
 - #8095 Tweak kwargs logic to improve JIT inlining
 - #8099 [ji] fix java_import when constant exists in Object
 - #8100 Extra splat instr which did nothing
 - #8101 Flip File.identical? logic to try native first
 - #8102 Update reline to 0.4.2
 - #8103 Prism pluggable integration work
 - #8105 Update JNR dependencies
 - #8107 update jruby-openssl to 0.14.3
 - #8108 fix undef_method error message
 - #8109 Simple error string mismatch. Also corrected for m17n naming to prin…
 - #8110 Re-arrange indexerror string when matching group name cannot be found
 - #8111 NameError and NoMethodError should be dup’ing receiver
 
					