JRuby 10.0.4.0 Released
Wednesday, March 04 2026
The JRuby community is pleased to announce the release of JRuby 10.0.4.0.
- Homepage:
https://www.jruby.org/ - Download:
https://www.jruby.org/downloadJRuby 10.0.4.x targets Ruby 3.4 compatibility.
Thank you to our contributors this release, you help keep JRuby moving forward! @evaniainbrooks, @katafrakt, @mrnoname1000
Standard Library
- The syslog library moves to bundled gems. (#9198)
- The unicode_normalize library is now thread-safely loaded as an internal library (#9231, #9232)
43 Issues and PRs resolved for 10.0.4.0
#8697 Tracing :call doesn't work if the traced code is running on a different thread
#8876 import_methods doesn't allow calling another refined method
#9120 File.path doesn't raise Encoding::CompatibilityError for ASCII-incompatible string
#9195 Refactor keyword arguments logic
#9198 Move syslog to bundled gems
#9206 Fix exception message when calling import_methods without a Module
#9208 Inconsistency with block parameter default value
#9211 Fix block argument destructuring with optional parameters
#9212 Fix method owner when using import_methods
#9213 Make refine method of Module private
#9214 Data.define single-attribute class rejects positional arguments
#9215 Ignore empty kwrest in Data subtypes' constructors
#9217 Add an error for running jruby.sh from a broken JRUBY_HOME
#9218 JavaFX AnimationTimer + Mutex.synchronize triggers "deadlock; lock already owned by another fiber belonging to the same thread" on JRuby 10.0.3.0
#9222 String interpolation of BasicObject object raises NameError instead of NoMethodError
#9224 ClassCastException handling kwargs in Struct
#9225 Expand Data initialize empty kwargs fix to Struct
#9226 Narrow deadlock check for sibling fibers locking mutex
#9227 Version output may not accurately represent JIT mode
#9228 Fix version output to reflect current runtime
#9230 Use normal call type error for missing dynamic string to_s
#9231 Thread safety of require and implications on stdlib string.normalize()
#9232 Internalize and threadsafetify String#unicode_normalize
#9237 Fix for import_methods does not allow calling another refined method
#9240 Fix for File.path doesn't raise Encoding::CompatibilityError for ASCII incompatible string
#9241 Data#to_h and Data#deconstruct return values in wrong order when module overrides initialize in a subclassed Data class
#9242 Spurious Struct#initialize keyword argument warning (and crash) with ... forwarding through super
#9243 Data#==/Data#eql? and Struct#eql? return false when instances are extended in initialize
#9244 Fix for ClassCastException inside Struct#initialize when delegating … from a prepended module
#9247 Fix Array#slice raises a RangeError when the start index is out of range of Fixnum
#9248 Additional fixes for import_methods with JIT
#9252 Use prepared accessors to retrieve Data fields
#9254 Compare "real" classes for Data#== and eql?
#9258 Kernel#respond_to? fails if #respond_to_missing? is not defined
#9259 Only set locking thread once successful
#9260 Restore Cleaner API use for embedding cleanup
#9272 Avoid passing bogus -classpath when empty
#9280 Check if respond_to_missing? exists before respond_to?
#9281 unexpected ArgumentError: wrong number of arguments
#9283 Only localize TracePoint to thread if specified
#9285 Clear callInfo so it does not taint other calls
#9289 Include gem extension stubs in stdlib artifacts
#9290 Improve dist verification
--