JRuby 10.0.3.0 Released
Monday, February 02 2026
The JRuby community is pleased to announce the release of JRuby 10.0.3.0.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
JRuby 10.0.3.x targets Ruby 3.4 compatibility.
Thank you to our contributors this release, you help keep JRuby moving forward! @mrnoname1000, @ngr-ilmarh, @Earlopain, @philr, @jotamartos, @kares, @aleksandrs-ledovskis, @trinistr, @katafrakt, @chadlwilson, @khasinski, @evaniainbrooks
Compatibility
- JRuby now reports
RbConfig::CONFIG['arch'] without a version number, as universal-java. This allows using different JDK versions without triggering RubyGems missing extension warnings for installed gems. The host Java version is still available as RbConfig::CONFIG['arch_version']. #9107
Standard Library
- The non-gem standard library is upgraded to Ruby 3.4.5 #8967
- rexml is updated to 3.4.4 to address CVE-2025-58767. #9011
- syslog is moved to a default gem at version 0.4.0. The syslog gem now includes JRuby support. #9109, ruby/syslog#1
- strscan is updated to 3.1.7. #9159
Documentation
- Ruby ri documentation for core and standard library are now included in the release distribution. #9049, #9052
All Issues/PRs
- #8707 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
- #8727 Cannot install latest
rubocop
- #8730 Launcher: Defensive fixes
- #8758 Require is not working for .class file if the class is inside a module since 9.3.0
- #8810 Possible fix for 8809
- #8923
NameError for autoloaded constant with private_constant
- #8934 JRuby under Java 22+ always thinks it’s running under a TTY
- #8940 Verify to_s is string or fall back on anyToString
- #8947 New check for System.console tty on JDK 22+
- #8955 Range#count always returns size for Integer bounds
- #8956 Handle argument or block passed to Range#count
- #8958 Concurrent requires can lead to StringIndexOutOfBoundsException
- #8960 Fix index -1 error while searching for feature path
- #8962 Upgrade polyglot and remove openssl lib hack
- #8967 Update stdlib to 3.4.5 and clean up old files
- #8975 Use RuboCop to clean up poms (10.x)
- #8976 Regression in keyword argument matching in JRuby v10.0.1.0
- #8978 Additional fixes for scheme-based globbing
- #8984 glob refactoring
- #8985 Fix language spec where error string changed
- #8987 InvokeDynamicSupport.findVirtual fails with IllegalAccessException: symbolic reference class is not accessible
- #8989 Explicitly request access before Lookup.find*
- #8994 autoload + private_constant do not play well together
- #8995 private_constant should just update existing autoload
- #8996 Avoid binding unreadable modules’ classes
- #8998 Time#localtime incorrectly treats zero offset as UTC (regression in v10.0.2.0)
- #9006 Consider .class a source extension during search
- #9007 Handle
warn(foo, uplevel: nil)
- #9009 Encoding a string with undefined chars fails with NoMethodError
- #9010 Fix “+00:00” and 0 being treated as UTC by Time#localtime and Time.at
- #9011 Update rexml gem to solve CVE-2025-58767
- #9016 [fix] regression calling static hash() method on Java proxy
- #9017 can not use Java class with static hash() method
- #9018 Parser does not convert newlines reading \r\n on Windows
- #9019 We need to remove \r from heredoc strings
- #9021 Retire safe double processing utilities
- #9024 Move all main classes to org.jruby.main package
- #9027 Add “since” to bare Deprecated annotations
- #9035 IO#read does not clear code-range for buffer argument
- #9036 fix: clear code-range when re-using a string buffer
- #9038 Add opens and native access to all jar manifests
- #9039 Update all jnr dependencies
- #9041 Migrate .java-version contents to .jruby.release
- #9049 ri docs are not available for core
- #9050 Marshal fails to load an encoding with an encoding ivar
- #9051 Ignore encoding when unmarshaling an Encoding
- #9052 Download and include in dist CRuby’s rdoc data
- #9058 Implement efficient unshifting
- #9059 Reserve extra space before elements when unshifting
- #9063 Hash’s compare_by_identity state does not marshal
- #9065 Preserve compare_by_identity for marshaled Hash
- #9068 Windows CI spec runs
- #9073 fix: Permit overriding of JSA file location using ENV variable
- #9084 object_id improvements
- #9094 Implement GC.config [Ruby 3.4]
- #9097 Update jruby-openssl to v0.15.5 to resolve BouncyCastle 1.79 vulnerability (sonatype-2025-001911).
- #9098 Fix CoverageData.mergeLines when coverage increases
- #9101 Cached fixnums for immediate values
- #9103 Update jruby-openssl to 0.15.5
- #9106 Use smaller default size for many collections
- #9107 Separate Java version out of rbconfig ‘arch’
- #9108 Tidy up default gems
- #9109 Switch to syslog gem
- #9110 Calling
inspect on proc resets line in source_location
- #9112 Prevent modifying state in RubyProc
- #9117 Add file path to error message when unlinking non-existing file
- #9122 Unexpected jruby.sh error messages on Windows
- #9127 fix(launcher): correct parsing of java release files under Bash/msys2 etc on Windows
- #9138 Copy Data type’s var table manager with new realClass
- #9141 refactorings and cleanup motivated by error-prone
- #9142 Change GC’s methods from module_function to metaclass methods
- #9145 Never trust external content for FString
- #9152 Marshal.dump corruption for large Array structures
- #9157 bump included gems
- #9158 Use same key match for containsKey
- #9159 Update strscan to 3.1.7
- #9182 Fix NoMethodError when encoding with invalid: :replace option
- #9188 Different arguments for each.map vs each and map alone (10.0)
- #9189 Fixes #8952. Nest
it should be different its
- #9190 Backport implicit local variable fixes from 10.1
- #9191 Fixes #8952. Nested ‘it’ behavior broken
- #9192 Stab at Fixing #8976
- #9194
BigDecimal#+, #-, #add, #sub always try to cast result of coercion to RubyBigDecimal
- #9196
require "bigdecimal" does not install BigDecimal() if it was called previously
- #9199 Output formatting differences between jRuby 10.0.0.1 and Ruby 3.4 when converting Float to JSON
- #9200 Extract float formatting into a static method to use with to_json
- #9203 Invalidate method caches from generated populators
- #9204 Fix BigDecimal#+, #-, #add, #sub failing when coercing doesn’t return a BigDecimal
- #9205 Fix encoding fallback error handling and error message formatting
The JRuby community is pleased to announce the release of JRuby 10.0.3.0.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
JRuby 10.0.3.x targets Ruby 3.4 compatibility.
Thank you to our contributors this release, you help keep JRuby moving forward! @mrnoname1000, @ngr-ilmarh, @Earlopain, @philr, @jotamartos, @kares, @aleksandrs-ledovskis, @trinistr, @katafrakt, @chadlwilson, @khasinski, @evaniainbrooks
Compatibility
- JRuby now reports
RbConfig::CONFIG['arch']without a version number, asuniversal-java. This allows using different JDK versions without triggering RubyGems missing extension warnings for installed gems. The host Java version is still available asRbConfig::CONFIG['arch_version']. #9107
Standard Library
- The non-gem standard library is upgraded to Ruby 3.4.5 #8967
- rexml is updated to 3.4.4 to address CVE-2025-58767. #9011
- syslog is moved to a default gem at version 0.4.0. The syslog gem now includes JRuby support. #9109, ruby/syslog#1
- strscan is updated to 3.1.7. #9159
Documentation
- Ruby ri documentation for core and standard library are now included in the release distribution. #9049, #9052
All Issues/PRs
- #8707 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
- #8727 Cannot install latest
rubocop - #8730 Launcher: Defensive fixes
- #8758 Require is not working for .class file if the class is inside a module since 9.3.0
- #8810 Possible fix for 8809
- #8923
NameErrorfor autoloaded constant withprivate_constant - #8934 JRuby under Java 22+ always thinks it’s running under a TTY
- #8940 Verify to_s is string or fall back on anyToString
- #8947 New check for System.console tty on JDK 22+
- #8955 Range#count always returns size for Integer bounds
- #8956 Handle argument or block passed to Range#count
- #8958 Concurrent requires can lead to StringIndexOutOfBoundsException
- #8960 Fix index -1 error while searching for feature path
- #8962 Upgrade polyglot and remove openssl lib hack
- #8967 Update stdlib to 3.4.5 and clean up old files
- #8975 Use RuboCop to clean up poms (10.x)
- #8976 Regression in keyword argument matching in JRuby v10.0.1.0
- #8978 Additional fixes for scheme-based globbing
- #8984 glob refactoring
- #8985 Fix language spec where error string changed
- #8987 InvokeDynamicSupport.findVirtual fails with IllegalAccessException: symbolic reference class is not accessible
- #8989 Explicitly request access before Lookup.find*
- #8994 autoload + private_constant do not play well together
- #8995 private_constant should just update existing autoload
- #8996 Avoid binding unreadable modules’ classes
- #8998 Time#localtime incorrectly treats zero offset as UTC (regression in v10.0.2.0)
- #9006 Consider .class a source extension during search
- #9007 Handle
warn(foo, uplevel: nil) - #9009 Encoding a string with undefined chars fails with NoMethodError
- #9010 Fix “+00:00” and 0 being treated as UTC by Time#localtime and Time.at
- #9011 Update rexml gem to solve CVE-2025-58767
- #9016 [fix] regression calling static hash() method on Java proxy
- #9017 can not use Java class with static hash() method
- #9018 Parser does not convert newlines reading \r\n on Windows
- #9019 We need to remove \r from heredoc strings
- #9021 Retire safe double processing utilities
- #9024 Move all main classes to org.jruby.main package
- #9027 Add “since” to bare Deprecated annotations
- #9035 IO#read does not clear code-range for buffer argument
- #9036 fix: clear code-range when re-using a string buffer
- #9038 Add opens and native access to all jar manifests
- #9039 Update all jnr dependencies
- #9041 Migrate .java-version contents to .jruby.release
- #9049 ri docs are not available for core
- #9050 Marshal fails to load an encoding with an encoding ivar
- #9051 Ignore encoding when unmarshaling an Encoding
- #9052 Download and include in dist CRuby’s rdoc data
- #9058 Implement efficient unshifting
- #9059 Reserve extra space before elements when unshifting
- #9063 Hash’s compare_by_identity state does not marshal
- #9065 Preserve compare_by_identity for marshaled Hash
- #9068 Windows CI spec runs
- #9073 fix: Permit overriding of JSA file location using ENV variable
- #9084 object_id improvements
- #9094 Implement GC.config [Ruby 3.4]
- #9097 Update jruby-openssl to v0.15.5 to resolve BouncyCastle 1.79 vulnerability (sonatype-2025-001911).
- #9098 Fix CoverageData.mergeLines when coverage increases
- #9101 Cached fixnums for immediate values
- #9103 Update jruby-openssl to 0.15.5
- #9106 Use smaller default size for many collections
- #9107 Separate Java version out of rbconfig ‘arch’
- #9108 Tidy up default gems
- #9109 Switch to syslog gem
- #9110 Calling
inspecton proc resets line insource_location - #9112 Prevent modifying state in RubyProc
- #9117 Add file path to error message when unlinking non-existing file
- #9122 Unexpected jruby.sh error messages on Windows
- #9127 fix(launcher): correct parsing of java release files under Bash/msys2 etc on Windows
- #9138 Copy Data type’s var table manager with new realClass
- #9141 refactorings and cleanup motivated by error-prone
- #9142 Change GC’s methods from module_function to metaclass methods
- #9145 Never trust external content for FString
- #9152 Marshal.dump corruption for large Array structures
- #9157 bump included gems
- #9158 Use same key match for containsKey
- #9159 Update strscan to 3.1.7
- #9182 Fix NoMethodError when encoding with invalid: :replace option
- #9188 Different arguments for each.map vs each and map alone (10.0)
- #9189 Fixes #8952. Nest
itshould be differentits - #9190 Backport implicit local variable fixes from 10.1
- #9191 Fixes #8952. Nested ‘it’ behavior broken
- #9192 Stab at Fixing #8976
- #9194
BigDecimal#+,#-,#add,#subalways try to cast result of coercion toRubyBigDecimal - #9196
require "bigdecimal"does not installBigDecimal()if it was called previously - #9199 Output formatting differences between jRuby 10.0.0.1 and Ruby 3.4 when converting Float to JSON
- #9200 Extract float formatting into a static method to use with to_json
- #9203 Invalidate method caches from generated populators
- #9204 Fix BigDecimal#+, #-, #add, #sub failing when coercing doesn’t return a BigDecimal
- #9205 Fix encoding fallback error handling and error message formatting