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/download
JRuby 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
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/download
JRuby 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
:calldoesn’t work if the traced code is running on a different thread - #8876
import_methodsdoesn’t allow calling another refined method - #9120
File.pathdoesn’t raiseEncoding::CompatibilityErrorfor 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
refinemethod ofModuleprivate - #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
BasicObjectobject raisesNameErrorinstead ofNoMethodError - #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_handData#deconstructreturn values in wrong order when module overridesinitializein a subclassed Data class - #9242 Spurious Struct#initialize keyword argument warning (and crash) with
...forwarding throughsuper - #9243
Data#==/Data#eql?andStruct#eql?return false when instances areextended ininitialize - #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