{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreiekc7o6cjsnlw4gtkp7ua7hi5boqp74mafobu7hlou4b3vetlfpbe",
"uri": "at://did:plc:kfvfl6lsmxg64yzszmfotdq2/app.bsky.feed.post/3mktkjdjo75y2"
},
"path": "/t/ruby-talk-444806-ann-jruby-10-1-0-0-released/76760#post_1",
"publishedAt": "2026-04-21T13:59:49.000Z",
"site": "https://rubytalk.org",
"tags": [
"https://www.jruby.org/",
"Downloads — JRuby.org",
"(click for more details)"
],
"textContent": "The JRuby community is pleased to announce the release of JRuby 10.1.0.0.\n\n- Homepage: https://www.jruby.org/\n- Download: Downloads — JRuby.org\n\nJRuby 10.1.0.x targets Ruby 4.0 compatibility.\n\nThank you to our contributors this release, you help keep JRuby moving\nforward!\nJRuby 10.1: Experimenting and Evolving\n\nJRuby 10.1.0.0 is our first major release since catching up with Ruby\ncompatibility. We have used this opportunity to explore many experimental\noptimizations and improvements we have been chasing for many years. Ruby\n4.0 compatibility is largely complete, but there will be additional\nfeatures added in update releases. We also plan to continue with large\nscale experiments in subsequent updates, and recommend production users\ncontinue to use JRuby 10.0 while we work toward stabilization of the 10.1\nseries.\n\nHere’s an overview of the major enhancments already in JRuby 10.1.0.0 and\nothers planned for update releases in the coming months.\n\nReduced Object Size\n\nIn JRuby 10.1 all objects have been reduced in size by 8 bytes, bringing\nthe base object size down from 32 bytes to 24 bytes. This translates into\nsmaller objects across the system, reduced GC load, higher allocation\nthroughput, and better cache locality.\n\nOn JVM versions that support Compact Object Headers (JEP 450: “Project\nLilliput”) the base object size can be further reduced to 16 bytes, 40%\nsmaller than objects in the standard Ruby implememtation.\n\nEvolving Strings, Arrays, and Hashes\n\nDuring the upcoming JRuby 10.1 update releases, we plan to introduce new\nversions of String, Array, and Hash that are optimized for memory\ncompactness, concurrency, or integration with other JVM languages. To\nsupport these features, we have made the internal implementations RubyArray\nand RubyHash into abstract classes and deprecated the direct constructors\nfor RubyString. Please test your JRuby extension code and make sure it does\nnot call abstract or deprecated constructors.\n\nSmaller Numeric Representations\n\nJRuby’s internal class for representing 64-bit signed Integer values,\nRubyFixnum, has been split into two versions: LongFixnum and ShortFixnum.\nCombined with the reduced size of objects overall, this reduces the size of\nthese long and short-ranged Integer objects from 40 bytes to 32 bytes or 24\nbytes (24 bytes or 16 bytes if using Compact Object Headers). The size of\nFloat objects have similarly been reduced from 40 bytes to 32 bytes. These\nsize reductions help improve the performance of numeric algorithms and\nreduce impact to the heap and GC of boxing numeric values.\n\nCross-platform Prism Parser\n\nJRuby 10.1 ships with support for the Prism Ruby parser, packaged as a set\nof pre-optimized native builds (for Windows, Linux, and MacOS on x86_64 or\narm64) or as a WASM build on other platforms. We’re still working out a few\nremaining features, but we encourage experimenters to enable it by passing\n-Xparser.prism to JRuby. We plan to make this the default parser once the\nremaining issues are solved.\n\nDirect Argument Passing\n\nWe have also laid the groundwork to start passing all forms of method\narguments on the call stack, avoiding boxed collections for most optional\nand keyword arguments. In upcoming JRuby 10.1 releases, we will begin to\nconnect these call paths up for both pure-Ruby and native (Java) method\ntargets, eliminating box allocation and drastically improving the\npeformance of such forms. Watch this space for rapid improvements.\nNew Policy for EOL and LTS Releases\n\nWith the release of JRuby 10.1, we are moving JRuby 9.4 into a “soft” EOL\nstatus. This means we will no longer be doing regular OSS release updates\nof JRuby 9.4, but users may get in contact with us to sponsor continued\nsupport. JRuby 10.0 will be our stable LTS release until April 2028 and we\nrecommend all users upgrade or get in contact with us for assistance. JRuby\n10.1 will be our “tip” release line, with many exciting optimizations and\nenhancements due to land over the next several months.\n\nGoing forward, we will provide a new LTS baseline release every two years,\nstarting in spring of 2027, and alternating years will be considered as\nedge or development versions without LTS guarantees. This will allow us a\nfree hand to keep bringing you more experimental features while still\nproviding a stable baseline for more conservative users.\nTry JRuby Today!\n\nUsers can install JRuby 10.1 through the usual means, and we encourage you\nto give it a try and let us know how it handles your applications and\nlibraries. We have much more planned for the 10.1 updates and hope to move\nfast and push the edges of what’s possible with Ruby on the JVM.\n\n59 Issues and PRs resolved for 10.1.0.0\n#8716 dup a lot\n#8747 Launcher script chokes on GraalVM release file\n#9055 Array experiments\n#9066 Move Set to a core class [Ruby 4.0]\n#9069 Implement Ruby 4.0 support\n#9074 Avoid array allocation for *nil, by not calling nil.to_a\n#9075 Selective inspect of instance variables\n#9077 No numbered parameters in Binding#local_variables\n#9078 Add Math.{expm1,log1p}\n#9079 Align IO.select timeout logic with CRuby\n#9083 Implement missing raise features\n#9085 Specialize Fixnum\n#9090 Reduce the size of the varTableStamp\n#9091 Shrink varTableStamp\n#9095 Eliminate global flags\n#9096 Cache object ID and hash in low-count immediate values\n#9102 Add a fast path for hashing numerics and immediates\n#9113 Performance regression in RubyHash for large hashes (~8-10x\nslower than JRuby 1.7)\n#9119 Implement fast-path builtin method flags\n#9123 Fast builtin validation experiment\n#9124 Reduce load factor for Hash from 5 to 2\n#9136 Marshal.load 2.9x regression vs JRuby 1.7\n#9143 Cache both hash forms for FString\n#9148 Allow logical ops to begin on beginning of next line\n#9154 Mask internal Ruby backtrace elements like native masking\n#9156 Small marshal fixes\n#9174 Add complete thread-local builtin tracking system (Issues #9116,\n#9119)\n#9180 Implement implicit param logic for Binding\n#9181 Fix Data subclasses with ivars\n#9202 A Data object should be frozen even if it has no members\n#9209 Add ruby_bug for spec of Data with no members being frozen\n#9210 Remove Process::Status#& and Process::Status#»\n#9233 Load boot scripts from classloader URI\n#9235 Use capitalized Class and Module for frozen errors\n#9236 [Properly handle keywords in {Kernel Thread Fiber}#raise]#9236\n#9238 Cloned class’s singleton class has too many classes in hierarchy\n#9239 Fix for cloned class singleton class has too many ancestors\n#9250 Update Unicode to Version 17.0.0 and Emoji Version 17.0\n#9262 Abstract RubyHash\n#9263 Implicit param fixes for proc and binding\n#9266 Endless method with modifier method does not parse\n#9273 Cleanup recursion guards\n#9277 Use live counts for event hook stats\n#9279 Move fiddle back to default temporarily for resolv\n#9286 Proposing RISC-V architecture support\n#9287 Add riscv64 platform support\n#9298 Ensure we have a classloader to boot from\n#9299 Delete methods deprecated prior to JRuby 9.4.0.0\n#9300 Replace now-deprecated wait_timeout\n#9313 Time being returned as ASCII-8BIT encoding in JRuby 10\n#9318 Process.detach raises ArrayIndexOutOfBoundsException if called\nfrom a thread that is not the main thread\n#9325 [fix] NullPointerException from closed IO\n#9362 Allow endless methods to be an argument to methods like visibity\n#9365 Marshal load perf\n#9371 Deprecate all public RubyString constructors\n#9374 Integrate WASM-based Prism parser into standard build\n#9383 Disable IntFixnum\n#9384 Set.new(a_set) throws LocalJumpError\n#9385 Fixes #9384. Set.new(a_set) throws LocalJumpError\n\n··· (click for more details)",
"title": "[ruby-talk:444806] [ANN] JRuby 10.1.0.0 Released"
}