Releases: jruby/jruby
JRuby 10.1.0.0
The JRuby community is pleased to announce the release of JRuby 10.1.0.0.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
JRuby 10.1.0.x targets Ruby 4.0 compatibility.
Thank you to our contributors this release, you help keep JRuby moving forward!
JRuby 10.1: Experimenting and Evolving
JRuby 10.1.0.0 is our first major release since catching up with Ruby compatibility. We have used this opportunity to explore many experimental optimizations and improvements we have been chasing for many years. Ruby 4.0 compatibility is largely complete, but there will be additional features added in update releases. We also plan to continue with large scale experiments in subsequent updates, and recommend production users continue to use JRuby 10.0 while we work toward stabilization of the 10.1 series.
Here's an overview of the major enhancments already in JRuby 10.1.0.0 and others planned for update releases in the coming months.
Reduced Object Size
In JRuby 10.1 all objects have been reduced in size by 8 bytes, bringing the base object size down from 32 bytes to 24 bytes. This translates into smaller objects across the system, reduced GC load, higher allocation throughput, and better cache locality.
On JVM versions that support Compact Object Headers (JEP 450: "Project Lilliput") the base object size can be further reduced to 16 bytes, 40% smaller than objects in the standard Ruby implememtation.
Evolving Strings, Arrays, and Hashes
During the upcoming JRuby 10.1 update releases, we plan to introduce new versions of String, Array, and Hash that are optimized for memory compactness, concurrency, or integration with other JVM languages. To support these features, we have made the internal implementations RubyArray and RubyHash into abstract classes and deprecated the direct constructors for RubyString. Please test your JRuby extension code and make sure it does not call abstract or deprecated constructors.
Smaller Numeric Representations
JRuby's internal class for representing 64-bit signed Integer values, RubyFixnum, has been split into two versions: LongFixnum and ShortFixnum. Combined with the reduced size of objects overall, this reduces the size of these long and short-ranged Integer objects from 40 bytes to 32 bytes or 24 bytes (24 bytes or 16 bytes if using Compact Object Headers). The size of Float objects have similarly been reduced from 40 bytes to 32 bytes. These size reductions help improve the performance of numeric algorithms and reduce impact to the heap and GC of boxing numeric values.
Cross-platform Prism Parser
JRuby 10.1 ships with support for the Prism Ruby parser, packaged as a set of pre-optimized native builds (for Windows, Linux, and MacOS on x86_64 or arm64) or as a WASM build on other platforms. We're still working out a few remaining features, but we encourage experimenters to enable it by passing -Xparser.prism to JRuby. We plan to make this the default parser once the remaining issues are solved.
Direct Argument Passing
We have also laid the groundwork to start passing all forms of method arguments on the call stack, avoiding boxed collections for most optional and keyword arguments. In upcoming JRuby 10.1 releases, we will begin to connect these call paths up for both pure-Ruby and native (Java) method targets, eliminating box allocation and drastically improving the peformance of such forms. Watch this space for rapid improvements.
New Policy for EOL and LTS Releases
With the release of JRuby 10.1, we are moving JRuby 9.4 into a "soft" EOL status. This means we will no longer be doing regular OSS release updates of JRuby 9.4, but users may get in contact with us to sponsor continued support. JRuby 10.0 will be our stable LTS release until April 2028 and we recommend all users upgrade or get in contact with us for assistance. JRuby 10.1 will be our "tip" release line, with many exciting optimizations and enhancements due to land over the next several months.
Going forward, we will provide a new LTS baseline release every two years, starting in spring of 2027, and alternating years will be considered as edge or development versions without LTS guarantees. This will allow us a free hand to keep bringing you more experimental features while still providing a stable baseline for more conservative users.
Try JRuby Today!
Users can install JRuby 10.1 through the usual means, and we encourage you to give it a try and let us know how it handles your applications and libraries. We have much more planned for the 10.1 updates and hope to move fast and push the edges of what's possible with Ruby on the JVM.
59 Issues and PRs resolved for 10.1.0.0
- #8716 dup a lot
- #8747 Launcher script chokes on GraalVM release file
- #9055 Array experiments
- #9066 Move Set to a core class [Ruby 4.0]
- #9069 Implement Ruby 4.0 support
- #9074 Avoid array allocation for *nil, by not calling nil.to_a
- #9075 Selective inspect of instance variables
- #9077 No numbered parameters in Binding#local_variables
- #9078 Add Math.{expm1,log1p}
- #9079 Align IO.select timeout logic with CRuby
- #9083 Implement missing raise features
- #9085 Specialize Fixnum
- #9090 Reduce the size of the varTableStamp
- #9091 Shrink varTableStamp
- #9095 Eliminate global flags
- #9096 Cache object ID and hash in low-count immediate values
- #9102 Add a fast path for hashing numerics and immediates
- #9113 Performance regression in RubyHash for large hashes (~8-10x slower than JRuby 1.7)
- #9119 Implement fast-path builtin method flags
- #9123 Fast builtin validation experiment
- #9124 Reduce load factor for Hash from 5 to 2
- #9136 Marshal.load 2.9x regression vs JRuby 1.7
- #9143 Cache both hash forms for FString
- #9148 Allow logical ops to begin on beginning of next line
- #9154 Mask internal Ruby backtrace elements like native masking
- #9156 Small marshal fixes
- #9174 Add complete thread-local builtin tracking system (Issues #9116, #9119)
- #9180 [Implement implicit param logic for Binding][#9180]
- #9181 [Fix Data subclasses with ivars][#9181]
- #9202 [A Data object should be frozen even if it has no members][#9202]
- #9209 [Add ruby_bug for spec of Data with no members being frozen][#9209]
- #9210 [Remove Process::Status#& and Process::Status#>>][#9210]
- #9233 [Load boot scripts from classloader URI][#9233]
- #9235 [Use capitalized Class and Module for frozen errors][#9235]
- #9236 [Properly handle keywords in {Kernel|Thread|Fiber}#raise][#9236]
- #9238 [Cloned class's singleton class has too many classes in hierarchy][#9238]
- #9239 [Fix for cloned class singleton class has too many ancestors][#9239]
- #9250 [Update Unicode to Version 17.0.0 and Emoji Version 17.0][#9250]
- #9262 [Abstract RubyHash][#9262]
- #9263 [Implicit param fixes for proc and binding][#9263]
- #9266 [Endless method with modifier method does not parse][#9266]
- #9273 [Cleanup recursion guards][#9273]
- #9277 [Use live counts for event hook stats][#9277]
- #9279 [Move fiddle back to default temporarily for resolv][#9279]
- #9286 [Proposing RISC-V architecture support][#9286]
- #9287 [Add riscv64 platform support][#9287]
- #9298 [Ensure we have a classloader to boot from][#9298]
- #9299 [Delete methods deprecated prior to JRuby 9.4.0.0][#9299]
- #9300 [Replace now-deprecated wait_timeout][#9300]
- #9313 [Time being returned as ASCII-8BIT encoding in JRuby 10][#9313]
- #9318 [
Process.detachraises ArrayIndexOutOfBoundsException if called from a thread that is not the main thread][#9318] - #9325 [[fix] NullPointerException from closed IO][#9325]
- #9362 [Allow endless methods to be an argument to methods like visibity][#9362]
- #9365 [Marshal load perf][#9365]
- #9371 [Deprecate all public RubyString constructors][#9371]
- #9374 [Integrate WASM-based Prism parser into standard build][#9374]
- #9383 [Disable IntFixnum][#9383]
- #9384 [Set.new(a_set) throws LocalJumpError][#9384]
- #9385 [Fixes #9384. Set.new(a_set) throws LocalJumpError][#9385]
JRuby 10.0.5.0
The JRuby community is pleased to announce the release of JRuby 10.0.5.0.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
JRuby 10.0.5.x targets Ruby 3.4 compatibility.
Thank you to our contributors this release, you help keep JRuby moving forward! @evaniainbrooks, @kares, @chadlwilson, #jimtng
Compatibility
- Fixed: Two bugs in the JIT compiler that broke certain super calls and defined_method yields. (#8944, #8946, #9310, #9349)
- Fixed: Fiber#raise left the fiber in an resumable state by not correctly transfering control. (#9297, #9356)
- Fixed: Connecting a socket using nonblocking operations failed to complete the establishment of the connection. This affected Redis users, among other cases. (#9304, #9305)
- Fixed: Process#detach raised a NullPointerException if called from a non-main thread. (#9314, #9311)
JVM Integration
- Java 26 is officially supported. (#9332)
Platform Integration
- New platform support: The native library backend for JRuby, JNR, has been updated to include support for the RISCv64 architecture.
- Fixed on Windows: File#flock used unsupported native operations on Windows, causing it to raise errors. This affected the "logger" library, among other cases. (#9347, #9348)
- Fixed on Windows: IO#popen failed to pass keyword arguments if also given a leading environment hash. (#9351, #9352)
Stability
- Fixed: Several memory leaks that affected users running multiple JRuby instances in a single process. (#9070, #9092, #9187, #9359)
43 Issues and PRs resolved for 10.0.5.0
- #4213 squiggly heredoc strip space between interpolation and line connector by mistake
- #8944 Double unresolved super from aliased method when compiled with indy
- #8946 define_method conversion fails to yield after indy JIT
- #9070 Memory leak in jruby within openhab
- #9092 ThreadLocal Memory Leak in JRuby 10.0.2.0 with ScriptingContainer
- #9187 Memory leak running RubyGems in separate runtimes in a loop
- #9261 Fix Time subsecond precision loss from floating point arithmetic
- #9292 Reduce BigInteger construction
- #9293 Incorrect caller_locations line for multi-line call with unless
- #9297 Different behaviour than MRI on Fiber#raise
- #9302 review call-info reset
- #9304 Socket.tcp does not complete connection
- #9305 Ensure connectable sockets finish
- #9307 Time being returned as ASCII-8BIT encoding in JRuby 10
- #9310 [fix] define_method captured block propagation in JIT mode
- #9311 Push a frame for thread toplevel
- #9312 Construct xmlschema string as US-ASCII
- #9314
Process.detachraises ArrayIndexOutOfBoundsException if called from a thread that is not the main thread - #9316 [10.0] build: bump maven from 3.9.11 to 3.9.14 via script-only style
- #9317 [10.0] build: improve build/maven consistency / bump github actions
- #9322 Fix prepended module initialize not called for Ruby classes rooted in a Java superclass
- #9323 [deps] bump jruby-openssl to latest
- #9324 NPE retrieving IO channel
- #9326 [fix] NullPointerException from closed IO
- #9330 Sync with prism update so we can compile jruby-prism using 10.0
- #9332 Support Java 26
- #9334 [fix] Exception#dup: copy cause to the duplicated exception
- #9335 [fix] MatchData#deconstruct_keys: include non-participating captures
- #9336 [fix] Bignum#eql?: use type-strict comparison (not ==)
- #9337 [fix] Bignum comparison with Float in <=> and ==
- #9338 [fix] Bignum: use correct site for coerced comparisons
- #9339 [fix] IO#reopen: copy encoding from source IO
- #9340 Hash#rehash corrupts insertion-order when deduplicating keys
- #9341 [fix] Hash#rehash: fix deduplicating keys (#9340)
- #9343 [compat] Thread#native_thread_id: using Java thread-id
- #9344 [fix] Digest::Base: synchronize MessageDigest mutation
- #9345 [fix] Encoding.compatible?: check when swapping args
- #9347 Use JDK for File#flock on Windows
- #9348 ruby/logger gem broken after version 1.6.3 using JRuby on Windows
- #9349 Disable AliasMethod direct binding for now
- #9352 Issue with calling IO.popen(env, cmd, opts) on Windows
- #9351 Fix non-native IO.popen env + kwargs handling
- #9354 Update JNR dependencies
- #9355 Propagate newline from if to bodies
- #9356 Properly complete Fiber#raise transfer
- #9359 Leak fixes redux
- #9364 [fix] TCPServer#initialize: close channel on bind/init failure
JRuby 10.0.4.0
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
JRuby 10.0.3.0
layout: post
title: JRuby 10.0.3.0 Released
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][#9059]
- #9063 [Hash's compare_by_identity state does not marshal][#9063]
- #9065 [Preserve compare_by_identity for marshaled Hash][#9065]
- #9068 [Windows CI spec runs][#9068]
- #9073 [fix: Permit overriding of JSA file location using ENV variable][#9073]
- #9084 [object_id improvements][#9084]
- #9094 [Implement GC.config [Ruby 3.4]][#9094]
- #9097 [Update jruby-openssl to v0.15.5 to resolve BouncyCastle 1.79 vulnerability (sonatype-2025-001911).][#9097]
- #9098 [Fix CoverageData.mergeLines when coverage increases][#9098]
- #9101 [Cached fixnums for immediate values][#9101]
- #9103 [Update jruby-openssl to 0.15.5][#9103]
- #9106 [Use smaller default size for many collections][#9106]
- #9107 [Separate Java version out of rbconfig 'arch'][#9107]
- #9108 [Tidy up default gems][#9108]
- #9109 [Switch to syslog gem][#9109]
- #9110 [Calling
inspecton proc resets line insource_location][#9110] - #9112 [Prevent modifying state in RubyProc][#9112]
- #9117 [Add file path to error message when unlinking non-existing file][#9117]
- #9122 [Unexpected jruby.sh error messages on Windows][#9122]
- #9127 [fix(launcher): correct parsing of java release files under Bash/msys2 etc on Windows][#9127]
- #9138 [Copy Data type's var table manager with new realClass][#9138]
- #9141 [refactorings and cleanup motivated by error-prone][#9141]
- #9142 [Change GC's methods from module_function to metaclass methods][#9142]
- #9145 [Never trust external content for FString][#9145]
- #9152 [Marshal.dump corruption for large Array structures][#9152]
- #9157 [bump included gems][#9157]
- #9158 [Use same key match for containsKey][#9158]
- #9159 [Update strscan to 3.1.7][#9159]
- #9182 [Fix NoMethodError when encoding with invalid: :replace option][#9182]
- #9188 [Different arguments for each.map vs each and map alone (10.0)][#9188]
- #9189 [Fixes #8952. Nest
itshould be differentits][#9189] - #9190 [Backport implicit local variable fixes from 10.1][#9190]
- #9191 [Fixes #8952. Nested 'it' behavior broken][#9191]
- #9192 [Stab at Fixing #8976][#9192]
- #9194 [
BigDecimal#+,#-,#add,#subalways try to cast result of coercion toRubyBigDecimal][#9194] - #9196 [
require "bigdecimal"does not installBigDecimal()if it was called previously][#9196] - #9199 [Output formatting differences between jRuby 10.0.0.1 and Ruby 3.4 when converting Float to JSON][#9199]
- #9200 [Extract float formatting into a static method to use with to_json][#9200]
- #9203 [Invalidate method caches from generated populators][#9203]
- #9204 [Fix BigDecimal#+, #-, #add, #sub failing when coercing doesn't return a BigDecimal][#9204]
- #9205 [Fix encoding fallback error handling and error message formatting][#9205]
JRuby 9.4.14.0 Released
The JRuby community is pleased to announce the release of JRuby 9.4.14.0.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
JRuby 9.4.14.x targets Ruby 3.1 compatibility.
Thank you to our contributors this release, you help keep JRuby moving forward! @matthias-fratz-bsz, @ikaronen-relex, @ylecuyer
Compatibility
- Ruby version is now 3.1.7. (#8966)
Libraries
- strscan is updated to 3.1.5. (#8897)
- cgi is updated to 0.3.7 to resolve CVE-2025-27220 and CVE-2025-27219 (#8954, #8966)
- uri is updated to 0.12.4. (#8966)
- net-smtp is updated to 0.3.1.1. (#8966)
- rss is updated to 0.3.1. (#8966)
- Non-gem stdlib has been updated to Ruby 3.1.7 sources. (#8966)
Build
- jruby-maven-plugins is updated to 3.0.6 to resolve issues with garbled gem poms. (#8898)
- The stdlib build scripts have been modified to work with latest polyglot-ruby. (#8634, #8963)
Usability
- bin/ruby and bin/ruby.bat are now shipped in the distribution, to make installation simpler. (#8875)
29 Issues and PRs resolved for 9.4.14.0
- #8422 ConcurrentLocalContextProvider leaks memory per thread
- #8634 9.4.12.0 unable to build itself
- #8670 Setting system property 'jruby.gem.home' works but outputs a warning
- #8779
Marshal.dump(binding)behavior differs from CRuby - #8823 Failure in
StringScanner#scan_integerwhen running the HexaPDF test suite - #8859
bundle gemdoes not fully run - #8866 JRuby 9.4.13.0 introduces
LoadError: no such file to load -- Win32APIvia stdlib/net/http on Windows - #8875 Pregenerate bin/ruby and bin/ruby.bat
- #8883 Normalize arch to universal-java-version
- #8884 Require the correct case for this library
- #8885 Coerce the chdir for popen
- #8897 Update strscan to fix number scanning at nonzero offset
- #8898 Update maven plugins to latest
- #8902 Sporadic failure in TestArray#test_insert under indy
- #8904 Always check array insert pos
- #8909 Make Binding unmarshalable
- #8918 Don't set callInfo when target does not use kwargs
- #8919 Update vendored cgi gem
- #8933 Output buffer size calculation for unpack('m') and unpack('u') can overflow for long inputs
- #8936 Fix integer overflow in buffer length calculation for unpack('m') and unpack('u')
- #8954 Secuity: Bump cgi to 0.4.2. CVE-2025-27220 CVE-2025-27219
- #8961 Fix index -1 error while searching for feature path
- #8963 Upgrade polyglot and remove openssl lib hack
- #8966 Update stdlib to 3.1.7
- #8968 Pass multi-elt array key for to_h using yieldArray
- #8969 Fix memory leak in Concurrent/ThreadSafeLocalContextProvider
- #8970 Move jruby.gem.home and jruby.gem.path to Options
- #8973 Pathname::glob behavior changed with 9.4.13.0 and later
- #8980 Additional fixes for scheme-based globbing (9.4)
JRuby 10.0.2.0
The JRuby community is pleased to announce the release of JRuby 10.0.2.0.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
JRuby 10.0.2.x targets Ruby 3.4 compatibility.
Thank you to our contributors this release, you help keep JRuby moving forward!
7 Issues and PRs resolved for 10.0.2.0
- #8920 KWargs issue with mustermann gem preventing JRuby 10.0.1.0 upgrade
- #8922 Don't clear callInfo for Ruby methods
- #8929 Update ArgumentError for missing file to match CRuby
- #8930 Run specs repeatedly with forced JIT
- #8943 Make closure to method conversion more conservative
- #8948 SassC - array size too big
- #8950 Fixes #8948. SassC - array size too big
JRuby 10.0.1.0
The JRuby community is pleased to announce the release of JRuby 10.0.1.0.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
JRuby 10.0.1.x targets Ruby 3.4 compatibility.
Thank you to our contributors this release, you help keep JRuby moving forward!
Compatibility
Libraries
62 Issues and PRs resolved for 10.0.1.0
- #6781 Remaining Zeitwerk fixes
- #8624 Inconsistent String behavior between MRI and JRuby
- #8690 Using JSR223 ScriptEngine interface has no way to clean up resources
- #8740 JRuby10: BigDecimal("0").to_java => Java::JavaLang::Long
- #8767
itspecial block variable hides local variable sometimes - #8769 Fix
sprinfwith explicit zero precision and zero value - #8772 parameterless blocks must check for
itoutside the block in case it exists already - #8776 False positive syntax error on endless method definition on 10.0
- #8777 Something wrong with requires on 10.0 (broken dry-validation gem for example)
- #8778 == and === need to support endless method definitions
- #8780 Fiddle test failing with JRuby 10
- #8781 ffi LONG/ULONG call different value methods
- #8782
Date::ErrorwithDate.parseand JRuby 10 - #8783 Failure in ruby/pp CI in JRuby 10
- #8785 Rearrange kwargs logic
- #8787 Frozen string literal warning with FFI and JRuby 10
- #8788
Time.newnanosecond parsing - #8793 Fix more corner cases of kwargs from MRI test suite
- #8796 Jruby 10.0:
itis not working in REPL (irb/pry) - #8798 Keyword arguments arity error in drb tests
- #8799
itbroken in irb. Used wrong scope type field in parser. - #8800 Improve docs and some minor warns from IDE dealt with
- #8802 Fixes to improve DRb tests
- #8803 9-digit rational needs to be multiplied by 9 digits
- #8826 Update net-imap from 0.5.4 to 0.5.8
- #8828 Update to net-imap 0.5.8 for security fixes
- #8829 Data fixes and improvements
- #8831 Tweaks to further improve startup speed and memory use
- #8833 Missing splatNode creation
- #8840 Possible bugs found by SAST (Svace)
- #8846 Deadlock occurs between main and Ruby-0-JIT-1 threads
- #8847 Java::JavaLang::ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String
- #8848 Improvements for dynamic string invokedynamic site
- #8850 single value makes kwargs hash. Mark it as such
- #8852 Fixes to improve Zeitwerk support
- #8853 NameError: uninitialized constant MyGem::Foo::Bar when using Zeitwerk
- #8854 Java::JavaLang::NullPointerException: Unable to find org.jruby.RubyTime.initialize(RubyTime.java to read failed line
- #8856 Native (and fast) Time#xmlschema (iso8601)
- #8858 Fix
Time.newwhen using (empty) keywords (2 issues) - #8860 Time.new gives unexpected value
- #8861 Using a string that has been mutated seems to result in a variable containing an unexpected value
- #8863 Order-dependent Zeitwerk failures
- #8864 [deps] update joda-time to 2.14.0
- #8865 [deps] update bundler and rubygems to latest
- #8867 Object.const_defined? not respecting namespace check.
- #8868 Update snapshot deploy to use new maven infrastructure
- #8871 Always remove the lock from pool on failure
- #8872 String#encode replace option incorrectly handles value
- #8873 Handle simple transcoding replacement correctly
- #8874 Update to jruby-maven-plugins 3.0.6
- #8877 Time fixes
- #8878 Some specs fixes in ruby/spec/language
- #8880 Time.new with Rational seconds performs invalid rounding to the next second
- #8881 fix #8880. Added a second with Rational
- #8882 Always set chilled strings as sharing bytelist
- #8890 Fix Time.new parsing (time/new_tags.txt)
- #8895 Improvements based on SAST null reference reports
- #8896 Fix an additional dstring indy optimization long bitfield bug
- #8905 Implement ruby2_keywords_hash dumping
- #8907 Symbol table tweaks
- #8908 Update Hash#inspect logic for multibyte keys
- #8912 Don't include Object for pathed constant searches
JRuby 9.4.13.0
The JRuby community is pleased to announce the release of JRuby 9.4.13.0.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
JRuby 9.4.13.x targets Ruby 3.1 compatibility.
Thank you to our contributors this release, you help keep JRuby moving forward!
Stability
- Fixed a slow memory leak in subclass management. (#8842, #8844)
- Fixed a potential deadlock during multi-threaded boot and concurrent JIT compilation. (#8845, #8849)
Usability
- Backported JRuby .sh launcher features from JRuby 10, including AppCDS flags for improved startup time. (#8565, #8625, #8626, #8652, #8653, #8656, #8754)
56 Issues and PRs resolved for 9.4.13.0
- #8351 Zlib::GzipReader missing each_char iterator
- #8426 Dir[] vs "../../"
- #8506 Test new version of resolv
- #8526 obj.first caused Java::JavaUtil::NoSuchElementException on an empty Java21 ArrayList
- #8542 Fix Dir.glob ../ and cases
- #8565 JRuby native launcher seems to get confused when both --dev and -Xcompile.mode=JIT are applied
- #8574 Improvements to support json library
- #8577
ArgumentError: unknown keywordfor required keyword argument - #8599 Fixes #8577. kwargs checking: Use bits instead of index
- #8608 add zlib each_char
- #8611 Setting an instance var on a Java object no longer warns
- #8613 Warn when creating a new ivar table on JavaProxy wrapper
- #8623 Installing sassc broke on jruby-head on Windows
- #8625 Add --cache flag to regenerate AppCDS
- #8626 Fix default arguments for generating AppCDS flag
- #8635 Fix
tr!andreverse!on ByteList view with non-zero begin index - #8643 Fixes to get stringio tests and specs green
- #8645 Update stringio to 3.1.5
- #8648 Handle errors whe looking for Java executable
- #8652 Use set -u to avoid accessing uninitialized variables
- #8653 Align 9.4 launcher with 10
- #8654 fix glob dir on windows
- #8655 Make some private helpers for glob
- #8656 Additional fixes for jruby.sh
- #8661 Update Unicode to 15.0
- #8663 copy-rename-maven-plugin version
- #8667 Update jcodings to 1.0.62 and joni to 2.2.4
- #8671 fix a regression in KDDI transcoding
- #8681 Update MRI core tests and tag failures
- #8686 rbByteEncode fails to no-op when encodings are the same
- #8687 Handle encoding checks as in strTranscode
- #8688 Tracing
:callwith TracePoint (and --debug flag) makes kwargs unusable - #8691 Implement AutoCloseable on JRubyEngine
- #8692 Save original callers callInfo in tracepoint
- #8696 New restriction warnings on Java 24
- #8715 Fix missing 2 arg for IO#readline
- #8728 Incorrect warning: given block not used
- #8731 [ji] avoid false duplicate method warning
- #8733 Remove this warning to match standard set.rb
- #8754 Backport jruby.sh from JRuby 10
- #8755 Update uri to version 0.12.3 in JRuby 9.4
- #8789 Dir.glob and Dir[] on existing file URL raises error
- #8795 Possible typo in lib/ruby/stdlib/jruby/compiler.rb:61
- #8805 Possible NPE in RubyModule:searchWithCacheMiss() found by SAST
- #8806 Possible NPE in StringSupport:rbStrEnumerateLines() found by SAST
- #8820 Fix recent potential NPE reports
- #8821 Always cache undef along these paths
- #8825 Update net-imap from 0.2.3 to 0.2.5
- #8827 Update to net-imap 0.2.5 for security fixes
- #8830 Splat with multi-line expression improperly expands
- #8834 Missing splatNode creation
- #8842 Metaspace leak in 9.4
- #8844 Use a normal ClassValue for all such cases
- #8845 Fix locking of stable class values for JI proxies
- #8849 Clean up some locking around hierarchy modification
- #8857 Migrate to the new Maven Central publishing system
JRuby 10.0.0.1 Released
The JRuby community is pleased to announce the release of JRuby 10.0.0.1.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
We've jumped to Ruby 3.4 compatibility and Java 21 minimum to bring you the best Ruby on JVM experience possible. We are confident this is the most compatible and stable major release we've ever had.
Security
- jruby-openssl has been updated to 0.15.4, which re-enables hostname verification by default. This addresses CVE-2025-46551 and GHSA-72qj-48g4-5xgx.
JRuby 9.4.12.1 Released
The JRuby community is pleased to announce the release of JRuby 9.4.12.1.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
JRuby 9.4.12.x targets Ruby 3.1 compatibility.
Security
- jruby-openssl has been updated to 0.15.4, which re-enables hostname verification by default. This addresses CVE-2025-46551 and GHSA-72qj-48g4-5xgx.