<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 <title>JRuby.org News</title>
 <link href="https://www.jruby.org/atom.xml" rel="self"/>
 <link href="https://www.jruby.org"/>
 <updated>2026-03-04T17:10:58+00:00</updated>
 <id>https://www.jruby.org/</id>
 <author>
   <name>The JRuby Team</name>
   <email>team@jruby.org</email>
 </author>
 
 
 <entry>
   <title>JRuby 10.0.4.0 Released</title>
   <link href="https://www.jruby.org/2026/03/04/jruby-10-0-4-0.html"/>
   <updated>2026-03-04T00:00:00+00:00</updated>
   <id>https://www.jruby.org/2026/03/04/jruby-10-0-4-0</id>
   <content type="html">&lt;p&gt;The JRuby community is pleased to announce the release of JRuby 10.0.4.0.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Homepage: &lt;a href=&quot;https://www.jruby.org/&quot;&gt;https://www.jruby.org/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Download: &lt;a href=&quot;https://www.jruby.org/download&quot;&gt;https://www.jruby.org/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JRuby 10.0.4.x targets Ruby 3.4 compatibility.&lt;/p&gt;

&lt;p&gt;Thank you to our contributors this release, you help keep JRuby moving forward! &lt;a href=&quot;https://github.com/evaniainbrooks&quot;&gt;@evaniainbrooks&lt;/a&gt;, &lt;a href=&quot;https://github.com/katafrakt&quot;&gt;@katafrakt&lt;/a&gt;, &lt;a href=&quot;https://github.com/mrnoname1000&quot;&gt;@mrnoname1000&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;standard-library&quot;&gt;Standard Library&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;The syslog library moves to bundled gems. (&lt;a href=&quot;https://github.com/jruby/jruby/pull/9198&quot;&gt;#9198&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;The unicode_normalize library is now thread-safely loaded as an internal library (&lt;a href=&quot;https://github.com/jruby/jruby/issues/9231&quot;&gt;#9231&lt;/a&gt;, &lt;a href=&quot;https://github.com/jruby/jruby/pull/9232&quot;&gt;#9232&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;43-issues-and-prs-resolved-for-10040&quot;&gt;43 Issues and PRs resolved for 10.0.4.0&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;#8697 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8697&quot;&gt;Tracing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:call&lt;/code&gt; doesn’t work if the traced code is running on a different thread&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8876 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8876&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;import_methods&lt;/code&gt; doesn’t allow calling another refined method&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9120 &lt;a href=&quot;https://github.com/jruby/jruby/issues/9120&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;File.path&lt;/code&gt; doesn’t raise &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Encoding::CompatibilityError&lt;/code&gt; for ASCII-incompatible string&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9195 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9195&quot;&gt;Refactor keyword arguments logic&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9198 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9198&quot;&gt;Move syslog to bundled gems&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9206 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9206&quot;&gt;Fix exception message when calling import_methods without a Module&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9208 &lt;a href=&quot;https://github.com/jruby/jruby/issues/9208&quot;&gt;Inconsistency with block parameter default value&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9211 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9211&quot;&gt;Fix block argument destructuring with optional parameters&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9212 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9212&quot;&gt;Fix method owner when using import_methods&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9213 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9213&quot;&gt;Make &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;refine&lt;/code&gt; method of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Module&lt;/code&gt; private&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9214 &lt;a href=&quot;https://github.com/jruby/jruby/issues/9214&quot;&gt;Data.define single-attribute class rejects positional arguments&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9215 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9215&quot;&gt;Ignore empty kwrest in Data subtypes’ constructors&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9217 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9217&quot;&gt;Add an error for running jruby.sh from a broken JRUBY_HOME&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9218 &lt;a href=&quot;https://github.com/jruby/jruby/issues/9218&quot;&gt;JavaFX AnimationTimer + Mutex.synchronize triggers “deadlock; lock already owned by another fiber belonging to the same thread” on JRuby 10.0.3.0&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9222 &lt;a href=&quot;https://github.com/jruby/jruby/issues/9222&quot;&gt;String interpolation of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BasicObject&lt;/code&gt; object raises &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NameError&lt;/code&gt; instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NoMethodError&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9224 &lt;a href=&quot;https://github.com/jruby/jruby/issues/9224&quot;&gt;ClassCastException handling kwargs in Struct&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9225 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9225&quot;&gt;Expand Data initialize empty kwargs fix to Struct&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9226 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9226&quot;&gt;Narrow deadlock check for sibling fibers locking mutex&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9227 &lt;a href=&quot;https://github.com/jruby/jruby/issues/9227&quot;&gt;Version output may not accurately represent JIT mode&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9228 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9228&quot;&gt;Fix version output to reflect current runtime&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9230 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9230&quot;&gt;Use normal call type error for missing dynamic string to_s&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9231 &lt;a href=&quot;https://github.com/jruby/jruby/issues/9231&quot;&gt;Thread safety of require and implications on stdlib string.normalize()&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9232 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9232&quot;&gt;Internalize and threadsafetify String#unicode_normalize&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9237 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9237&quot;&gt;Fix for import_methods does not allow calling another refined method&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9240 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9240&quot;&gt;Fix for File.path doesn’t raise Encoding::CompatibilityError for ASCII incompatible string&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9241 &lt;a href=&quot;https://github.com/jruby/jruby/issues/9241&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Data#to_h&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Data#deconstruct&lt;/code&gt; return values in wrong order when module overrides &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;initialize&lt;/code&gt; in a subclassed Data class&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9242 &lt;a href=&quot;https://github.com/jruby/jruby/issues/9242&quot;&gt;Spurious Struct#initialize keyword argument warning (and crash) with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;...&lt;/code&gt; forwarding through &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;super&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9243 &lt;a href=&quot;https://github.com/jruby/jruby/issues/9243&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Data#==&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Data#eql?&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Struct#eql?&lt;/code&gt; return false when instances are &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;extend&lt;/code&gt;ed in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;initialize&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9244 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9244&quot;&gt;Fix for ClassCastException inside Struct#initialize when delegating … from a prepended module&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9247 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9247&quot;&gt;Fix Array#slice raises a RangeError when the start index is out of range of Fixnum&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9248 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9248&quot;&gt;Additional fixes for import_methods with JIT&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9252 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9252&quot;&gt;Use prepared accessors to retrieve Data fields&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9254 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9254&quot;&gt;Compare “real” classes for Data#== and eql?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9258 &lt;a href=&quot;https://github.com/jruby/jruby/issues/9258&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Kernel#respond_to?&lt;/code&gt; fails if &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#respond_to_missing?&lt;/code&gt; is not defined&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9259 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9259&quot;&gt;Only set locking thread once successful&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9260 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9260&quot;&gt;Restore Cleaner API use for embedding cleanup&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9272 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9272&quot;&gt;Avoid passing bogus -classpath when empty&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9280 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9280&quot;&gt;Check if respond_to_missing? exists before respond_to?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9281 &lt;a href=&quot;https://github.com/jruby/jruby/issues/9281&quot;&gt;unexpected ArgumentError: wrong number of arguments&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9283 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9283&quot;&gt;Only localize TracePoint to thread if specified&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9285 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9285&quot;&gt;Clear callInfo so it does not taint other calls&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9289 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9289&quot;&gt;Include gem extension stubs in stdlib artifacts&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#9290 &lt;a href=&quot;https://github.com/jruby/jruby/pull/9290&quot;&gt;Improve dist verification&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>JRuby 10.0.3.0 Released</title>
   <link href="https://www.jruby.org/2026/02/02/jruby-10-0-3-0.html"/>
   <updated>2026-02-02T00:00:00+00:00</updated>
   <id>https://www.jruby.org/2026/02/02/jruby-10-0-3-0</id>
   <content type="html">&lt;p&gt;The JRuby community is pleased to announce the release of JRuby 10.0.3.0.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Homepage: &lt;a href=&quot;https://www.jruby.org/&quot;&gt;https://www.jruby.org/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Download: &lt;a href=&quot;https://www.jruby.org/download&quot;&gt;https://www.jruby.org/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JRuby 10.0.3.x targets Ruby 3.4 compatibility.&lt;/p&gt;

&lt;p&gt;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&lt;/p&gt;

&lt;h2 id=&quot;compatibility&quot;&gt;Compatibility&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;JRuby now reports &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RbConfig::CONFIG[&apos;arch&apos;]&lt;/code&gt; without a version number, as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;universal-java&lt;/code&gt;. This allows using different JDK versions without triggering RubyGems missing extension warnings for installed gems. The host Java version is still available as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RbConfig::CONFIG[&apos;arch_version&apos;]&lt;/code&gt;. &lt;a href=&quot;https://github.com/jruby/jruby/pull/9107&quot;&gt;#9107&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;standard-library&quot;&gt;Standard Library&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;The non-gem standard library is upgraded to Ruby 3.4.5 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8967&quot;&gt;#8967&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;rexml is updated to 3.4.4 to address CVE-2025-58767. &lt;a href=&quot;https://github.com/jruby/jruby/pull/9011&quot;&gt;#9011&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;syslog is moved to a default gem at version 0.4.0. The syslog gem now includes JRuby support. &lt;a href=&quot;https://github.com/jruby/jruby/pull/9109&quot;&gt;#9109&lt;/a&gt;, &lt;a href=&quot;https://github.com/ruby/syslog/1&quot;&gt;ruby/syslog#1&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;strscan is updated to 3.1.7. &lt;a href=&quot;https://github.com/jruby/jruby/pull/9159&quot;&gt;#9159&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;documentation&quot;&gt;Documentation&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Ruby ri documentation for core and standard library are now included in the release distribution. &lt;a href=&quot;https://github.com/jruby/jruby/issues/9049&quot;&gt;#9049&lt;/a&gt;, &lt;a href=&quot;https://github.com/jruby/jruby/pull/9052&quot;&gt;#9052&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;all-issuesprs&quot;&gt;All Issues/PRs&lt;/h2&gt;

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

</content>
 </entry>
 
 <entry>
   <title>JRuby 9.4.14.0 Released</title>
   <link href="https://www.jruby.org/2025/08/28/jruby-9-4-14-0.html"/>
   <updated>2025-08-28T00:00:00+00:00</updated>
   <id>https://www.jruby.org/2025/08/28/jruby-9-4-14-0</id>
   <content type="html">&lt;p&gt;The JRuby community is pleased to announce the release of JRuby 9.4.14.0.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Homepage: &lt;a href=&quot;https://www.jruby.org/&quot;&gt;https://www.jruby.org/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Download: &lt;a href=&quot;https://www.jruby.org/download&quot;&gt;https://www.jruby.org/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JRuby 9.4.14.x targets Ruby 3.1 compatibility.&lt;/p&gt;

&lt;p&gt;Thank you to our contributors this release, you help keep JRuby moving forward! &lt;a href=&quot;https://github.com/matthias-fratz-bsz&quot;&gt;@matthias-fratz-bsz&lt;/a&gt;, &lt;a href=&quot;https://github.com/ikaronen-relex&quot;&gt;@ikaronen-relex&lt;/a&gt;, &lt;a href=&quot;https://github.com/ylecuyer&quot;&gt;@ylecuyer&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;compatibility&quot;&gt;Compatibility&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Ruby version is now 3.1.7. (&lt;a href=&quot;https://github.com/jruby/jruby/pull/8966&quot;&gt;#8966&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;libraries&quot;&gt;Libraries&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;strscan is updated to 3.1.5. (&lt;a href=&quot;https://github.com/jruby/jruby/pull/8897&quot;&gt;#8897&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;cgi is updated to 0.3.7 to resolve CVE-2025-27220 and CVE-2025-27219 (&lt;a href=&quot;https://github.com/jruby/jruby/pull/8954&quot;&gt;#8954&lt;/a&gt;, &lt;a href=&quot;https://github.com/jruby/jruby/pull/8966&quot;&gt;#8966&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;uri is updated to 0.12.4. (&lt;a href=&quot;https://github.com/jruby/jruby/pull/8966&quot;&gt;#8966&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;net-smtp is updated to 0.3.1.1. (&lt;a href=&quot;https://github.com/jruby/jruby/pull/8966&quot;&gt;#8966&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;rss is updated to 0.3.1. (&lt;a href=&quot;https://github.com/jruby/jruby/pull/8966&quot;&gt;#8966&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Non-gem stdlib has been updated to Ruby 3.1.7 sources. (&lt;a href=&quot;https://github.com/jruby/jruby/pull/8966&quot;&gt;#8966&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;build&quot;&gt;Build&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;jruby-maven-plugins is updated to 3.0.6 to resolve issues with garbled gem poms. (&lt;a href=&quot;https://github.com/jruby/jruby/pull/8898&quot;&gt;#8898&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;The stdlib build scripts have been modified to work with latest polyglot-ruby. (&lt;a href=&quot;https://github.com/jruby/jruby/issues/8634&quot;&gt;#8634&lt;/a&gt;, &lt;a href=&quot;https://github.com/jruby/jruby/pull/8963&quot;&gt;#8963&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;usability&quot;&gt;Usability&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;bin/ruby and bin/ruby.bat are now shipped in the distribution, to make installation simpler. (&lt;a href=&quot;https://github.com/jruby/jruby/pull/8875&quot;&gt;#8875&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;29-issues-and-prs-resolved-for-94140&quot;&gt;29 Issues and PRs resolved for 9.4.14.0&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;#8422 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8422&quot;&gt;ConcurrentLocalContextProvider leaks memory per thread&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8634 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8634&quot;&gt;9.4.12.0 unable to build itself&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8670 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8670&quot;&gt;Setting system property  ‘jruby.gem.home’ works but outputs a warning&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8779 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8779&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Marshal.dump(binding)&lt;/code&gt; behavior differs from CRuby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8823 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8823&quot;&gt;Failure in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;StringScanner#scan_integer&lt;/code&gt; when running the HexaPDF test suite&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8859 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8859&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle gem&lt;/code&gt; does not fully run&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8866 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8866&quot;&gt;JRuby 9.4.13.0 introduces &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LoadError: no such file to load -- Win32API&lt;/code&gt; via stdlib/net/http on Windows&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8875 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8875&quot;&gt;Pregenerate bin/ruby and bin/ruby.bat&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8883 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8883&quot;&gt;Normalize arch to universal-java-version&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8884 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8884&quot;&gt;Require the correct case for this library&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8885 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8885&quot;&gt;Coerce the chdir for popen&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8897 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8897&quot;&gt;Update strscan to fix number scanning at nonzero offset&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8898 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8898&quot;&gt;Update maven plugins to latest&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8902 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8902&quot;&gt;Sporadic failure in TestArray#test_insert under indy&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8904 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8904&quot;&gt;Always check array insert pos&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8909 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8909&quot;&gt;Make Binding unmarshalable&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8918 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8918&quot;&gt;Don’t set callInfo when target does not use kwargs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8919 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8919&quot;&gt;Update vendored cgi gem&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8933 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8933&quot;&gt;Output buffer size calculation for unpack(‘m’) and unpack(‘u’) can overflow for long inputs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8936 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8936&quot;&gt;Fix integer overflow in buffer length calculation for unpack(‘m’) and unpack(‘u’)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8954 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8954&quot;&gt;Secuity: Bump cgi to 0.4.2. CVE-2025-27220 CVE-2025-27219&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8961 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8961&quot;&gt;Fix index -1 error while searching for feature path&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8963 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8963&quot;&gt;Upgrade polyglot and remove openssl lib hack&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8966 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8966&quot;&gt;Update stdlib to 3.1.7&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8968 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8968&quot;&gt;Pass multi-elt array key for to_h using yieldArray&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8969 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8969&quot;&gt;Fix memory leak in Concurrent/ThreadSafeLocalContextProvider&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8970 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8970&quot;&gt;Move jruby.gem.home and jruby.gem.path to Options&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8973 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8973&quot;&gt;Pathname::glob behavior changed with 9.4.13.0 and later&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8980 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8980&quot;&gt;Additional fixes for scheme-based globbing (9.4)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>JRuby 10.0.2.0 Released</title>
   <link href="https://www.jruby.org/2025/08/07/jruby-10-0-2-0.html"/>
   <updated>2025-08-07T00:00:00+00:00</updated>
   <id>https://www.jruby.org/2025/08/07/jruby-10-0-2-0</id>
   <content type="html">&lt;p&gt;The JRuby community is pleased to announce the release of JRuby 10.0.2.0.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Homepage: &lt;a href=&quot;https://www.jruby.org/&quot;&gt;https://www.jruby.org/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Download: &lt;a href=&quot;https://www.jruby.org/download&quot;&gt;https://www.jruby.org/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JRuby 10.0.2.x targets Ruby 3.4 compatibility.&lt;/p&gt;

&lt;p&gt;Thank you to our contributors this release, you help keep JRuby moving forward!&lt;/p&gt;

&lt;h3 id=&quot;7-issues-and-prs-resolved-for-10020&quot;&gt;7 Issues and PRs resolved for 10.0.2.0&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;#8920 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8920&quot;&gt;KWargs issue with mustermann gem preventing JRuby 10.0.1.0 upgrade&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8922 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8922&quot;&gt;Don’t clear callInfo for Ruby methods&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8929 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8929&quot;&gt;Update ArgumentError for missing file to match CRuby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8930 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8930&quot;&gt;Run specs repeatedly with forced JIT&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8943 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8943&quot;&gt;Make closure to method conversion more conservative&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8948 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8948&quot;&gt;SassC - array size too big&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8950 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8950&quot;&gt;Fixes #8948. SassC - array size too big&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>JRuby 10.0.1.0 Released</title>
   <link href="https://www.jruby.org/2025/07/17/jruby-10-0-1-0.html"/>
   <updated>2025-07-17T00:00:00+00:00</updated>
   <id>https://www.jruby.org/2025/07/17/jruby-10-0-1-0</id>
   <content type="html">&lt;p&gt;The JRuby community is pleased to announce the release of JRuby 10.0.1.0.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Homepage: &lt;a href=&quot;https://www.jruby.org/&quot;&gt;https://www.jruby.org/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Download: &lt;a href=&quot;https://www.jruby.org/download&quot;&gt;https://www.jruby.org/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JRuby 10.0.1.x targets Ruby 3.4 compatibility.&lt;/p&gt;

&lt;p&gt;Thank you to our contributors this release, you help keep JRuby moving forward! &lt;a href=&quot;https://github.com/PChambino&quot;&gt;@PChambino&lt;/a&gt;, &lt;a href=&quot;https://github.com/kares&quot;&gt;@kares&lt;/a&gt;, &lt;a href=&quot;https://github.com/Earlopain&quot;&gt;@Earlopain&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;compatibility&quot;&gt;Compatibility&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Zeitwerk is now fully supported. (&lt;a href=&quot;https://github.com/jruby/jruby/issues/6781&quot;&gt;#6781&lt;/a&gt;, &lt;a href=&quot;https://github.com/jruby/jruby/pull/8852&quot;&gt;#8852&lt;/a&gt;, &lt;a href=&quot;https://github.com/jruby/jruby/issues/8853&quot;&gt;#8853&lt;/a&gt;, &lt;a href=&quot;https://github.com/jruby/jruby/issues/8863&quot;&gt;#8863&lt;/a&gt;, &lt;a href=&quot;https://github.com/jruby/jruby/issues/8777&quot;&gt;#8777&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;libraries&quot;&gt;Libraries&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;The net-imap library is updated from 0.5.4 to 0.5.8 (&lt;a href=&quot;https://github.com/jruby/jruby/issues/8826&quot;&gt;#8826&lt;/a&gt;, &lt;a href=&quot;https://github.com/jruby/jruby/pull/8828&quot;&gt;#8828&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;62-issues-and-prs-resolved-for-10010&quot;&gt;62 Issues and PRs resolved for 10.0.1.0&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;#6781 &lt;a href=&quot;https://github.com/jruby/jruby/issues/6781&quot;&gt;Remaining Zeitwerk fixes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8624 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8624&quot;&gt;Inconsistent String behavior between MRI and JRuby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8690 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8690&quot;&gt;Using JSR223 ScriptEngine interface has no way to clean up resources&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8740 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8740&quot;&gt;JRuby10: BigDecimal(“0”).to_java =&amp;gt; Java::JavaLang::Long&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8767 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8767&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;it&lt;/code&gt; special block variable hides local variable sometimes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8769 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8769&quot;&gt;Fix &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sprinf&lt;/code&gt; with explicit zero precision and zero value&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8772 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8772&quot;&gt;parameterless blocks must check for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;it&lt;/code&gt; outside the block in case it exists already&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8776 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8776&quot;&gt;False positive syntax error on endless method definition on 10.0&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8777 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8777&quot;&gt;Something wrong with requires on 10.0 (broken dry-validation gem for example)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8778 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8778&quot;&gt;== and === need to support endless method definitions&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8780 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8780&quot;&gt;Fiddle test failing with JRuby 10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8781 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8781&quot;&gt;ffi LONG/ULONG call different value methods&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8782 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8782&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Date::Error&lt;/code&gt; with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Date.parse&lt;/code&gt; and JRuby 10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8783 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8783&quot;&gt;Failure in ruby/pp CI in JRuby 10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8785 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8785&quot;&gt;Rearrange kwargs logic&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8787 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8787&quot;&gt;Frozen string literal warning with FFI and JRuby 10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8788 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8788&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Time.new&lt;/code&gt; nanosecond parsing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8793 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8793&quot;&gt;Fix more corner cases of kwargs from MRI test suite&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8796 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8796&quot;&gt;Jruby 10.0: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;it&lt;/code&gt; is not working in REPL (irb/pry)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8798 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8798&quot;&gt;Keyword arguments arity error in drb tests&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8799 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8799&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;it&lt;/code&gt; broken in irb. Used wrong scope type field in parser.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8800 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8800&quot;&gt;Improve docs and some minor warns from IDE dealt with&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8802 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8802&quot;&gt;Fixes to improve DRb tests&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8803 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8803&quot;&gt;9-digit rational needs to be multiplied by 9 digits&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8826 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8826&quot;&gt;Update net-imap from 0.5.4 to 0.5.8&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8828 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8828&quot;&gt;Update to net-imap 0.5.8 for security fixes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8829 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8829&quot;&gt;Data fixes and improvements&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8831 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8831&quot;&gt;Tweaks to further improve startup speed and memory use&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8833 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8833&quot;&gt;Missing splatNode creation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8840 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8840&quot;&gt;Possible bugs found by SAST (Svace)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8846 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8846&quot;&gt;Deadlock occurs between main and Ruby-0-JIT-1 threads&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8847 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8847&quot;&gt;Java::JavaLang::ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8848 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8848&quot;&gt;Improvements for dynamic string invokedynamic site&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8850 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8850&quot;&gt;single value makes kwargs hash.  Mark it as such&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8852 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8852&quot;&gt;Fixes to improve Zeitwerk support&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8853 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8853&quot;&gt;NameError: uninitialized constant MyGem::Foo::Bar when using Zeitwerk&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8854 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8854&quot;&gt;Java::JavaLang::NullPointerException: Unable to find org.jruby.RubyTime.initialize(RubyTime.java to read failed line&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8856 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8856&quot;&gt;Native (and fast) Time#xmlschema (iso8601)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8858 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8858&quot;&gt;Fix &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Time.new&lt;/code&gt; when using (empty) keywords (2 issues)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8860 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8860&quot;&gt;Time.new gives unexpected value&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8861 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8861&quot;&gt;Using a string that has been mutated seems to result in a variable containing an unexpected value&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8863 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8863&quot;&gt;Order-dependent Zeitwerk failures&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8864 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8864&quot;&gt;[deps] update joda-time to 2.14.0&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8865 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8865&quot;&gt;[deps] update bundler and rubygems to latest&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8867 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8867&quot;&gt;Object.const_defined? not respecting namespace check.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8868 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8868&quot;&gt;Update snapshot deploy to use new maven infrastructure&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8871 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8871&quot;&gt;Always remove the lock from pool on failure&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8872 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8872&quot;&gt;String#encode replace option incorrectly handles value&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8873 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8873&quot;&gt;Handle simple transcoding replacement correctly&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8874 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8874&quot;&gt;Update to jruby-maven-plugins 3.0.6&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8877 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8877&quot;&gt;Time fixes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8878 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8878&quot;&gt;Some specs fixes in ruby/spec/language&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8880 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8880&quot;&gt;Time.new with Rational seconds performs invalid rounding to the next second&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8881 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8881&quot;&gt;fix #8880.  Added a second with Rational&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8882 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8882&quot;&gt;Always set chilled strings as sharing bytelist&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8890 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8890&quot;&gt;Fix Time.new parsing (time/new_tags.txt)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8895 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8895&quot;&gt;Improvements based on SAST null reference reports&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8896 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8896&quot;&gt;Fix an additional dstring indy optimization long bitfield bug&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8905 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8905&quot;&gt;Implement ruby2_keywords_hash dumping&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8907 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8907&quot;&gt;Symbol table tweaks&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8908 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8908&quot;&gt;Update Hash#inspect logic for multibyte keys&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8912 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8912&quot;&gt;Don’t include Object for pathed constant searches&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>JRuby 9.4.13.0 Released</title>
   <link href="https://www.jruby.org/2025/06/10/jruby-9-4-13-0.html"/>
   <updated>2025-06-10T00:00:00+00:00</updated>
   <id>https://www.jruby.org/2025/06/10/jruby-9-4-13-0</id>
   <content type="html">&lt;p&gt;The JRuby community is pleased to announce the release of JRuby 9.4.13.0.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Homepage: &lt;a href=&quot;https://www.jruby.org/&quot;&gt;https://www.jruby.org/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Download: &lt;a href=&quot;https://www.jruby.org/download&quot;&gt;https://www.jruby.org/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JRuby 9.4.13.x targets Ruby 3.1 compatibility.&lt;/p&gt;

&lt;p&gt;Thank you to our contributors this release, you help keep JRuby moving forward!&lt;/p&gt;

&lt;h2 id=&quot;stability&quot;&gt;Stability&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Fixed a slow memory leak in subclass management. (#8842, #8844)&lt;/li&gt;
  &lt;li&gt;Fixed a potential deadlock during multi-threaded boot and concurrent JIT compilation. (#8845, #8849)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;usability&quot;&gt;Usability&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Backported JRuby .sh launcher features from JRuby 10, including AppCDS flags for improved startup time. (#8565, #8625, #8626, #8652, #8653, #8656, #8754)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;56-issues-and-prs-resolved-for-94130&quot;&gt;56 Issues and PRs resolved for 9.4.13.0&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;#8351 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8351&quot;&gt;Zlib::GzipReader missing each_char iterator&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8426 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8426&quot;&gt;Dir[] vs “../../”&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8506 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8506&quot;&gt;Test new version of resolv&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8526 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8526&quot;&gt;obj.first caused Java::JavaUtil::NoSuchElementException on an empty Java21 ArrayList&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8542 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8542&quot;&gt;Fix Dir.glob ../ and cases&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8565 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8565&quot;&gt;JRuby native launcher seems to get confused when both –dev and -Xcompile.mode=JIT are applied&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8574 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8574&quot;&gt;Improvements to support json library&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8577 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8577&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ArgumentError: unknown keyword&lt;/code&gt; for required keyword argument&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8599 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8599&quot;&gt;Fixes #8577. kwargs checking: Use bits instead of index&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8608 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8608&quot;&gt;add zlib each_char&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8611 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8611&quot;&gt;Setting an instance var on a Java object no longer warns&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8613 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8613&quot;&gt;Warn when creating a new ivar table on JavaProxy wrapper&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8623 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8623&quot;&gt;Installing sassc broke on jruby-head on Windows&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8625 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8625&quot;&gt;Add –cache flag to regenerate AppCDS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8626 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8626&quot;&gt;Fix default arguments for generating AppCDS flag&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8635 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8635&quot;&gt;Fix &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tr!&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;reverse!&lt;/code&gt; on ByteList view with non-zero begin index&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8643 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8643&quot;&gt;Fixes to get stringio tests and specs green&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8645 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8645&quot;&gt;Update stringio to 3.1.5&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8648 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8648&quot;&gt;Handle errors whe looking for Java executable&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8652 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8652&quot;&gt;Use set -u to avoid accessing uninitialized variables&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8653 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8653&quot;&gt;Align 9.4 launcher with 10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8654 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8654&quot;&gt;fix glob dir on windows&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8655 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8655&quot;&gt;Make some private helpers for glob&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8656 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8656&quot;&gt;Additional fixes for jruby.sh&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8661 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8661&quot;&gt;Update Unicode to 15.0&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8663 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8663&quot;&gt;copy-rename-maven-plugin version&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8667 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8667&quot;&gt;Update jcodings to 1.0.62 and joni to 2.2.4&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8671 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8671&quot;&gt;fix a regression in KDDI transcoding&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8681 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8681&quot;&gt;Update MRI core tests and tag failures&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8686 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8686&quot;&gt;rbByteEncode fails to no-op when encodings are the same&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8687 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8687&quot;&gt;Handle encoding checks as in strTranscode&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8688 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8688&quot;&gt;Tracing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:call&lt;/code&gt; with TracePoint (and –debug flag) makes kwargs unusable&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8691 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8691&quot;&gt;Implement AutoCloseable on JRubyEngine&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8692 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8692&quot;&gt;Save original callers callInfo in tracepoint&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8696 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8696&quot;&gt;New restriction warnings on Java 24&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8715 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8715&quot;&gt;Fix missing 2 arg for IO#readline&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8728 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8728&quot;&gt;Incorrect warning: given block not used&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8731 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8731&quot;&gt;[ji] avoid false duplicate method warning&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8733 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8733&quot;&gt;Remove this warning to match standard set.rb&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8754 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8754&quot;&gt;Backport jruby.sh from JRuby 10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8755 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8755&quot;&gt;Update uri to version 0.12.3 in JRuby 9.4&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8789 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8789&quot;&gt;Dir.glob and Dir[] on existing file URL raises error&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8795 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8795&quot;&gt;Possible typo in lib/ruby/stdlib/jruby/compiler.rb:61&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8805 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8805&quot;&gt;Possible NPE in RubyModule:searchWithCacheMiss() found by SAST&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8806 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8806&quot;&gt;Possible NPE in StringSupport:rbStrEnumerateLines() found by SAST&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8820 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8820&quot;&gt;Fix recent potential NPE reports&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8821 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8821&quot;&gt;Always cache undef along these paths&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8825 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8825&quot;&gt;Update net-imap from 0.2.3 to 0.2.5&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8827 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8827&quot;&gt;Update to net-imap 0.2.5 for security fixes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8830 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8830&quot;&gt;Splat with multi-line expression improperly expands&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8834 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8834&quot;&gt;Missing splatNode creation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8842 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8842&quot;&gt;Metaspace leak in 9.4&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8844 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8844&quot;&gt;Use a normal ClassValue for all such cases&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8845 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8845&quot;&gt;Fix locking of stable class values for JI proxies&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8849 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8849&quot;&gt;Clean up some locking around hierarchy modification&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8857 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8857&quot;&gt;Migrate to the new Maven Central publishing system&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>JRuby 9.4.12.1 Released</title>
   <link href="https://www.jruby.org/2025/05/07/jruby-9-4-12-1.html"/>
   <updated>2025-05-07T00:00:00+00:00</updated>
   <id>https://www.jruby.org/2025/05/07/jruby-9-4-12-1</id>
   <content type="html">&lt;p&gt;The JRuby community is pleased to announce the release of JRuby 9.4.12.1.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Homepage: &lt;a href=&quot;https://www.jruby.org/&quot;&gt;https://www.jruby.org/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Download: &lt;a href=&quot;https://www.jruby.org/download&quot;&gt;https://www.jruby.org/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JRuby 9.4.12.x targets Ruby 3.1 compatibility.&lt;/p&gt;

&lt;h2 id=&quot;security&quot;&gt;Security&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;jruby-openssl has been updated to 0.15.4, which re-enables hostname verification by default. This addresses &lt;a href=&quot;https://github.com/jruby/jruby-openssl/security/advisories/GHSA-72qj-48g4-5xgx&quot;&gt;CVE-2025-46551 and GHSA-72qj-48g4-5xgx&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>JRuby 10.0.0.1 Released</title>
   <link href="https://www.jruby.org/2025/05/07/jruby-10-0-0-1.html"/>
   <updated>2025-05-07T00:00:00+00:00</updated>
   <id>https://www.jruby.org/2025/05/07/jruby-10-0-0-1</id>
   <content type="html">&lt;p&gt;The JRuby community is pleased to announce the release of JRuby 10.0.0.1.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Homepage: &lt;a href=&quot;https://www.jruby.org/&quot;&gt;https://www.jruby.org/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Download: &lt;a href=&quot;https://www.jruby.org/download&quot;&gt;https://www.jruby.org/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2 id=&quot;security&quot;&gt;Security&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;jruby-openssl has been updated to 0.15.4, which re-enables hostname verification by default. This addresses &lt;a href=&quot;https://github.com/jruby/jruby-openssl/security/advisories/GHSA-72qj-48g4-5xgx&quot;&gt;CVE-2025-46551 and GHSA-72qj-48g4-5xgx&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>JRuby 10.0.0.0 Released</title>
   <link href="https://www.jruby.org/2025/04/14/jruby-10-0-0-0.html"/>
   <updated>2025-04-14T00:00:00+00:00</updated>
   <id>https://www.jruby.org/2025/04/14/jruby-10-0-0-0</id>
   <content type="html">&lt;p&gt;The JRuby community is pleased to announce the release of JRuby 10.0.0.0.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Homepage: &lt;a href=&quot;https://www.jruby.org/&quot;&gt;https://www.jruby.org/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Download: &lt;a href=&quot;https://www.jruby.org/download&quot;&gt;https://www.jruby.org/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JRuby 10 is finally here! 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.&lt;/p&gt;

&lt;p&gt;Our blog post on JRuby 10 provides a high-level overview of the major changes, with some additional details below. We will update the blog post with additional detailed articles over the coming weeks: &lt;a href=&quot;https://blog.jruby.org/2025/04/jruby-10-part-1-whats-new&quot;&gt;https://blog.jruby.org/2025/04/jruby-10-part-1-whats-new&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As with any “dot zero” release, we are planning a series of quick updates to address any last-minute issues that snuck into the release. Please file bugs for any issues you see while testing JRuby 10.0: &lt;a href=&quot;https://github.com/jruby/jruby/issues&quot;&gt;https://github.com/jruby/jruby/issues&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;contributors&quot;&gt;Contributors&lt;/h2&gt;

&lt;p&gt;The JRuby core team today includes Charles Oliver Nutter (&lt;a href=&quot;https://github.com/headius&quot;&gt;@headius&lt;/a&gt;), Thomas Enebo (&lt;a href=&quot;https://github.com/enebo&quot;&gt;@enebo&lt;/a&gt;), and Karol Bucek (&lt;a href=&quot;https://github.com/kares&quot;&gt;@kares&lt;/a&gt;). Over the past year we have been honored to accept contributions from many other developers, and JRuby 10 would not be as stable or complete without their help:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/andsel&quot;&gt;@andsel&lt;/a&gt;, &lt;a href=&quot;https://github.com/mrnoname1000&quot;&gt;@mrnoname1000&lt;/a&gt;, &lt;a href=&quot;https://github.com/ahorek&quot;&gt;@ahorek&lt;/a&gt;, &lt;a href=&quot;https://github.com/evaniainbrooks&quot;&gt;@evaniainbrooks&lt;/a&gt;, &lt;a href=&quot;https://github.com/edipofederle&quot;&gt;@edipofederle&lt;/a&gt;, &lt;a href=&quot;https://github.com/ccutrer&quot;&gt;@ccutrer&lt;/a&gt;, &lt;a href=&quot;https://github.com/danini-the-panini&quot;&gt;@danini-the-panini&lt;/a&gt;, &lt;a href=&quot;https://github.com/ntkme&quot;&gt;@ntkme&lt;/a&gt;, &lt;a href=&quot;https://github.com/andrykonchin&quot;&gt;@andrykonchin&lt;/a&gt;, &lt;a href=&quot;https://github.com/mohamedhafez&quot;&gt;@mohamedhafez&lt;/a&gt;, &lt;a href=&quot;https://github.com/jsvd&quot;&gt;@jsvd&lt;/a&gt;, &lt;a href=&quot;https://github.com/jpcamara&quot;&gt;@jpcamara&lt;/a&gt;, &lt;a href=&quot;https://github.com/mullermp&quot;&gt;@mullermp&lt;/a&gt;, &lt;a href=&quot;https://github.com/ikaronen-relex&quot;&gt;@ikaronen-relex&lt;/a&gt;, &lt;a href=&quot;https://github.com/jimtng&quot;&gt;@jimtng&lt;/a&gt;, &lt;a href=&quot;https://github.com/ryannevell&quot;&gt;@ryannevell&lt;/a&gt;, &lt;a href=&quot;https://github.com/eregon&quot;&gt;@eregon&lt;/a&gt;, &lt;a href=&quot;https://github.com/moste00&quot;&gt;@moste00&lt;/a&gt;, &lt;a href=&quot;https://github.com/sk757a&quot;&gt;@sk757a&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;ruby-compatibility&quot;&gt;Ruby Compatibility&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Ruby compatibility has been updated to Ruby 3.4. We consider this release equivalent to Ruby 3.4.2.&lt;/li&gt;
  &lt;li&gt;Most features of Ruby 3.2, 3.3, 3.4 are complete, but some are still in progress. See our checklists based on CRuby’s release notes: &lt;a href=&quot;https://github.com/jruby/jruby/issues/7517&quot;&gt;Ruby 3.2&lt;/a&gt;, &lt;a href=&quot;https://github.com/jruby/jruby/issues/8029&quot;&gt;Ruby 3.3&lt;/a&gt;, &lt;a href=&quot;https://github.com/jruby/jruby/issues/8395&quot;&gt;Ruby 3.4&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Except where a more recent gem was available or a library is unsupported by JRuby, we have included the same standard libraries as Ruby 3.4.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;java-21&quot;&gt;Java 21&lt;/h2&gt;

&lt;p&gt;After nearly a decade of supporting Java 8, the JRuby team decided it’s time for us to move to a more modern version of Java. The new requirement of Java 21 will allow us to take advantage of many features that were impossible to utilize while simultaneously supporting Java 8:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;On-by-default optimization using &lt;a href=&quot;https://wiki.openjdk.org/display/HotSpot/Method+handles+and+invokedynamic&quot;&gt;InvokeDynamic&lt;/a&gt;, which has significantly improved since Java 8.&lt;/li&gt;
  &lt;li&gt;Support for thousands of Fibers using the lightweight virtual thread support from &lt;a href=&quot;https://openjdk.org/projects/loom/&quot;&gt;Project Loom&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Fast native function calling and native memory management using &lt;a href=&quot;https://openjdk.org/projects/panama/&quot;&gt;Project Panama&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Greatly improved startup time using &lt;a href=&quot;https://openjdk.org/jeps/310&quot;&gt;Application Class Data Store&lt;/a&gt;, enabled by default by our launcher executables.&lt;/li&gt;
  &lt;li&gt;Easier access to post-Java 21 features like the Ahead-of-time compiler cache in &lt;a href=&quot;https://openjdk.org/projects/leyden/&quot;&gt;Project Leyden&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;upgrading-to-jruby-10&quot;&gt;Upgrading to JRuby 10&lt;/h2&gt;

&lt;p&gt;This release marks a big leap forward for JRuby users, and we are standing by to help with your transition from JRuby 9.x or migration from CRuby. Support services are available to help migrate your critical applications. Many existing users trust &lt;a href=&quot;https://www.headius.com/jruby-support.html&quot;&gt;JRuby Support by Headius Enterprises&lt;/a&gt; to keep their applications in peak condition and to prepare for future updates.&lt;/p&gt;

&lt;h2 id=&quot;issues-and-pull-requests&quot;&gt;Issues and Pull Requests&lt;/h2&gt;

&lt;p&gt;There are hundreds of closed issues and merged pull requests in this release. Visit the &lt;a href=&quot;https://github.com/jruby/jruby/milestone/95?closed=1&quot;&gt;JRuby 10.0.0.0 milestone&lt;/a&gt; for the full list.&lt;/p&gt;

&lt;h3 id=&quot;201-issues-and-prs-resolved-for-10000&quot;&gt;201 Issues and PRs resolved for 10.0.0.0&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;#6094 &lt;a href=&quot;https://github.com/jruby/jruby/issues/6094&quot;&gt;Less modes to run JRuby, and one single mode to benchmark JRuby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#6598 &lt;a href=&quot;https://github.com/jruby/jruby/pull/6598&quot;&gt;Modularize all the things&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#7516 &lt;a href=&quot;https://github.com/jruby/jruby/pull/7516&quot;&gt;Improvements to instance variable shaping&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#7638 &lt;a href=&quot;https://github.com/jruby/jruby/pull/7638&quot;&gt;  Add support for Ruby 3.2 attached_object&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#7646 &lt;a href=&quot;https://github.com/jruby/jruby/pull/7646&quot;&gt;Add Integer#ceildiv&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#7788 &lt;a href=&quot;https://github.com/jruby/jruby/pull/7788&quot;&gt;Add support for a rescue trace event&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#7871 &lt;a href=&quot;https://github.com/jruby/jruby/pull/7871&quot;&gt;Ruby 3.2 - Remove deprecated methods: trust/taint and friends&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#7909 &lt;a href=&quot;https://github.com/jruby/jruby/issues/7909&quot;&gt;Intermittent failure on duped pipe tests JDK 19+&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#7973 &lt;a href=&quot;https://github.com/jruby/jruby/pull/7973&quot;&gt;Use gem for tempfile&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8058 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8058&quot;&gt;Ruby 3.3 support: Queue#freeze now raises TypeError&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8059 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8059&quot;&gt;Ruby 3.3 support: add symbolize_names kwarg to MatchData#named_captures&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8084 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8084&quot;&gt;remove JRuby-specific (deprecated) Class#subclasses(arg)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8143 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8143&quot;&gt;Remove versioned methods&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8145 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8145&quot;&gt;Refactor external API to ease extension porting&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8152 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8152&quot;&gt;New parser&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8153 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8153&quot;&gt;Update parser to 3.4&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8154 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8154&quot;&gt;Update and run CRuby 3.4 tests&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8159 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8159&quot;&gt;Fix last obvious syntax problem (involving nested pattern kwargs going off rails)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8160 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8160&quot;&gt;Proc#{dup,clone} should be like other objs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8161 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8161&quot;&gt;Finalizers also are on cloned/duped objects&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8162 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8162&quot;&gt;Finalizers also are on cloned/duped objects&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8163 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8163&quot;&gt;tracepoint only runs in thread it was enabled on&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8164 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8164&quot;&gt;{,Unbound}Method#{proc,dup} need to be more like other Ruby objects&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8165 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8165&quot;&gt;Add MatchData#deconstruct…&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8168 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8168&quot;&gt;First stab at Err#typeError in api&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8169 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8169&quot;&gt;Update json to eliminate references to “19” methods&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8170 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8170&quot;&gt;Implement block_given? call as optimized instruction&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8172 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8172&quot;&gt;Optimized &lt;strong&gt;method&lt;/strong&gt; and &lt;strong&gt;callee&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8174 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8174&quot;&gt;Unify call paths for most framed scopes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8175 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8175&quot;&gt;These may have been hanging due to a block_given? bug&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8176 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8176&quot;&gt;Simplify fixnum and string ranges&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8177 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8177&quot;&gt;A few frozen string and symbol optimizations&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8180 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8180&quot;&gt;Optimizations for dynamic string building&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8181 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8181&quot;&gt;Add ability to generically optimize instr during LOP&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8214 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8214&quot;&gt;Disable eager constants in JRuby 10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8223 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8223&quot;&gt;Make Exception#detailed_message,full_message pass specs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8226 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8226&quot;&gt;Implement “chilled” Strings&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8227 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8227&quot;&gt;Narrow frame name optimization to method scopes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8228 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8228&quot;&gt;IO#readlines accepts another arg&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8229 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8229&quot;&gt;Fix full_message formatting and Throwable impl&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8230 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8230&quot;&gt;More frame name fixes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8233 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8233&quot;&gt;Implement Regexp#linear_time?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8236 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8236&quot;&gt;More string interpolation optimizations&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8238 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8238&quot;&gt;Implement regexp timeout&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8240 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8240&quot;&gt;Fix IO#each_line specs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8249 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8249&quot;&gt;Reduce deopt from print use of $_&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8253 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8253&quot;&gt;Optimize literal fixnum and float arrays&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8259 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8259&quot;&gt;Improved representation of JRuby for JVM tools&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8260 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8260&quot;&gt;Rewrite Marshal.dump logic for efficiency&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8262 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8262&quot;&gt;Proc spreading changed in 3.2 with kwrest&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8263 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8263&quot;&gt;Implement Coverage::supported?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8266 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8266&quot;&gt;Enable invokedynamic by default&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8267 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8267&quot;&gt;Print out paths for syntax errors&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8268 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8268&quot;&gt;Unbound method&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8276 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8276&quot;&gt;Struct specs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8277 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8277&quot;&gt;Time#new spec fixes.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8279 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8279&quot;&gt;Reduce overhead of ObjectSpace#each_object when disabled&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8291 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8291&quot;&gt;Fix remaining copy stream specs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8293 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8293&quot;&gt;Eliminate last consumers of Variable logic&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8295 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8295&quot;&gt;3 new Convert API methods&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8297 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8297&quot;&gt;Make common method for handling to_r calls in Rational&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8298 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8298&quot;&gt;Api changes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8299 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8299&quot;&gt;Linkage errors from java_import are lazy&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8300 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8300&quot;&gt;Do initialize classes during java_import&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8301 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8301&quot;&gt;Decode ByteList properly for toString&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8304 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8304&quot;&gt;Eager initialize java_import’ed classes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8317 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8317&quot;&gt;New asFixnum, asBoolean, asString in Convert&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8330 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8330&quot;&gt;Eliminate dynscope for leaf blocks with break/return&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8375 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8375&quot;&gt;Revisit chilled strings and pass all specs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8376 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8376&quot;&gt;Get most Enumerator::Product specs passing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8377 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8377&quot;&gt;No backtick in errors&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8378 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8378&quot;&gt;Update to latest CRuby 3.4 tests and stdlib&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8390 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8390&quot;&gt;Fix foreach with mode: kwarg&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8402 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8402&quot;&gt;Hash#inspect: no arrow for symbol keys.  add spacing to match C Ruby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8410 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8410&quot;&gt;Permute indy invoke paths to reduce uncached stack&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8414 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8414&quot;&gt;Pre-generate specialized object shapes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8418 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8418&quot;&gt;Some small refactoring while looking for example snippet code of new API&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8420 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8420&quot;&gt;A bunch of new API calls and new JRubyAPI annotation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8430 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8430&quot;&gt;More dogfooding of new API&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8432 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8432&quot;&gt;argumentError API conversions with a lot of runtime to tc replacement&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8437 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8437&quot;&gt;context through RubyArray using more API&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8444 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8444&quot;&gt;Nearly all newArray is converted to API&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8450 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8450&quot;&gt;Enable invokedynamic by default&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8452 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8452&quot;&gt;newFixnum,Symbol,Float are unified with asXXX. &lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8454 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8454&quot;&gt;more api conversion around Time+&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8459 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8459&quot;&gt;API: Nearly all remaining newArgumentError to argumentError&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8460 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8460&quot;&gt;more newSymbols made into asSymbol&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8461 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8461&quot;&gt;new runtimeError api&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8467 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8467&quot;&gt;api: new rangeError, indexError &lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8468 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8468&quot;&gt;to_s with TC. new dupString api&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8470 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8470&quot;&gt;Inspect wrong object when symbol/string wanted in error&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8471 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8471&quot;&gt;more illegal formatting added to printf/format&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8472 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8472&quot;&gt;Add new Check#checkEmbeddedNulls to replace StringSupport method&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8473 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8473&quot;&gt;Make Time load its Ruby-impl side&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8474 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8474&quot;&gt;Create#newEmptyString&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8475 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8475&quot;&gt;Create#new{,Small}Hash&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8484 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8484&quot;&gt;Various array optimizations&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8485 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8485&quot;&gt;Fixes for MRI tests&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8489 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8489&quot;&gt;Bind directly to all supported arities of native methods&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8490 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8490&quot;&gt;New define API&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8491 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8491&quot;&gt;Make hash() always call to hash(ThreadContext) and deprecate&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8492 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8492&quot;&gt;Make Numeric#coerce use TC with deprecated fallback&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8493 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8493&quot;&gt;is_zero+zero_p TCification&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8494 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8494&quot;&gt;TCification of isPositive&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8495 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8495&quot;&gt;TCification of isNegative&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8496 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8496&quot;&gt;Make initialize_copy use TC&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8498 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8498&quot;&gt;See how dot format is for specs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8507 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8507&quot;&gt;Eliminate use of unsafe in StringSupport&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8508 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8508&quot;&gt;Replace Unsafe byte[] long-walking with VarHandle&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8514 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8514&quot;&gt;Move to simple Access apis (context available)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8517 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8517&quot;&gt;Add trace instr for rescue when trace enabled&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8518 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8518&quot;&gt;Switch more error backquotes to single&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8519 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8519&quot;&gt;inspect() -&amp;gt; inspect(ThreadContext)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8520 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8520&quot;&gt;All String JRuby Methods use context now&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8521 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8521&quot;&gt;Make all jruby methods use context in Array&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8522 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8522&quot;&gt;context for all numeric types jruby methods&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8524 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8524&quot;&gt;context for all Struct methods&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8525 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8525&quot;&gt;Warn api&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8529 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8529&quot;&gt;Data fixes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8530 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8530&quot;&gt;Update gem_prelude from Ruby 3.4&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8531 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8531&quot;&gt;getSingletonClass() replaced with singleonClass(context)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8532 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8532&quot;&gt;Deprecate defineOrGetClassUnder&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8533 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8533&quot;&gt;Fixes and impls for Ruby 3.4 specs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8534 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8534&quot;&gt;Last boostrapping classes/modules decoupled from non-boot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8537 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8537&quot;&gt;We should always have a valid staticScope&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8541 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8541&quot;&gt;most of constant settin and RubyModule to be TCified&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8543 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8543&quot;&gt;allocate() needs ThreadContext&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;
    &lt;table&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td&gt;#8544 [Extra “” around singleton in {Name&lt;/td&gt;
          &lt;td&gt;No}MethodError]&lt;a href=&quot;https://github.com/jruby/jruby/pull/8544&quot;&gt;#8544&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/li&gt;
  &lt;li&gt;#8545 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8545&quot;&gt;Reduce getRuntime() and make alloc use TC&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8546 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8546&quot;&gt;Fix specs involving comments in unpack format strings&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8547 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8547&quot;&gt;Fix failing specs for chilled symbols&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8548 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8548&quot;&gt;tcification of regex&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8549 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8549&quot;&gt;Remove more use of getRuntime()&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8551 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8551&quot;&gt;More removal of getRuntime() from non-deprecated code paths&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8552 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8552&quot;&gt;more API usage and some runtime removal&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8553 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8553&quot;&gt;More API work: toInt, toInteger, toLong, asLong, asInt&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8554 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8554&quot;&gt;Fix arity specs for blocks in language&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8556 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8556&quot;&gt;Rest args dup keyword hash&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8558 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8558&quot;&gt;More API conversion&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8564 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8564&quot;&gt;Eliminate exact math and reduce allocations&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8576 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8576&quot;&gt;Force a Thread’s block to optimize eagerly&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8580 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8580&quot;&gt;Implement **nil&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8581 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8581&quot;&gt;implement restriction on aryset to not allow blocks or kwargs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8582 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8582&quot;&gt;Update Ruby 3.4 gems from release&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8587 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8587&quot;&gt;Add warning for ::Ruby = as reserved constant&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8588 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8588&quot;&gt;Implement MatchData#byte{beg,end}&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8589 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8589&quot;&gt;Change singleton_method to look at extend/prepend&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8616 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8616&quot;&gt;Eiminate last uses of UnsafeHolder&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8617 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8617&quot;&gt;Reduce RubyModule/RubyClass size and creation overhead&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8618 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8618&quot;&gt;Improve performance of CI test suites&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8619 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8619&quot;&gt;Eliminate fillnil from newArray&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8622 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8622&quot;&gt;Move specs toward green&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8628 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8628&quot;&gt;Integer spec fixes for JRuby 10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8629 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8629&quot;&gt;Fix Range specs for JRuby 10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8631 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8631&quot;&gt;unused warnings became useless warnings&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8633 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8633&quot;&gt;Fiber specs for JRuby 10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8636 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8636&quot;&gt;Remove upfront fillNill in Array&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8637 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8637&quot;&gt;We should only warn on actual modification of singleton&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8639 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8639&quot;&gt;Remove raw array methods and helpers with fillnil changed&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8646 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8646&quot;&gt;More work on numeric API&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8647 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8647&quot;&gt;Previous changes from raw array and I put in wrong field name&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8650 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8650&quot;&gt;Depre warns&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8664 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8664&quot;&gt;Unicode 15.0&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8668 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8668&quot;&gt;Propagate Java throwables during load without wrapping&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8673 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8673&quot;&gt;parser passes block node vs only single last value to when&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8674 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8674&quot;&gt;Ruby 3.4 seems to have simplified ruby2_keywords_hash&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8676 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8676&quot;&gt;JRuby 9.4 to_s() signatures must be kept in 10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8677 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8677&quot;&gt;FString logic cleanup&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8678 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8678&quot;&gt;Symbol type calculation tweaks&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8679 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8679&quot;&gt;Implement Data natively&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8683 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8683&quot;&gt;New marshal could break ext authors using old one&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8684 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8684&quot;&gt;Deprecation problems + new reporting system&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8685 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8685&quot;&gt;Additional improvements to new marshal logic&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8689 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8689&quot;&gt;MarshalLoader to match dumper&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8693 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8693&quot;&gt;Cleaning up MRI excludes and fixing some stuff&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8695 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8695&quot;&gt;Update stdlib from Ruby 3.4.2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8698 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8698&quot;&gt;JRuby 10: incorrect &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Method#arity&lt;/code&gt; with keyword arguments&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8699 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8699&quot;&gt;optimist gem specs get StackOverflowError on JRuby 10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8702 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8702&quot;&gt;was recursively warning on itself&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8706 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8706&quot;&gt;Add missing logic I added for procs to methods for ruby-facing arity&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8708 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8708&quot;&gt;Refactor launcher AppCDS logic&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8709 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8709&quot;&gt;JRuby HEAD &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Exception#full_message&lt;/code&gt; fails with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uninitialized constant ErrorHighlight::RubyVM&lt;/code&gt; for Exceptions thrown from JRrubyVM&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8710 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8710&quot;&gt;Encoding error with bad raise message in StringIO&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8711 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8711&quot;&gt;Less eager coderange when converting Java String&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8712 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8712&quot;&gt;JRuby10 inline bundler error&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8713 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8713&quot;&gt;Negative capa&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8718 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8718&quot;&gt;Apply Java version-specific flags in launcher script&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8721 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8721&quot;&gt;Restructure gem_prelude to fit JRuby’s needs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8723 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8723&quot;&gt;JRuby10: an existing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;it&lt;/code&gt; variable inside a block caused SyntaxError: ordinary parameter is defined&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8725 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8725&quot;&gt;nonsense error check for ‘it’ in parser&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8729 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8729&quot;&gt;spec fixed at some point in past&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8735 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8735&quot;&gt;JRuby10: (NameError) undefined local variable or method ‘it’ in eval&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8737 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8737&quot;&gt;Fixes #8735.  it in eval broken&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8741 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8741&quot;&gt;NUMERIC_TO_OBJECT was making BigDecimal a Long&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8742 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8742&quot;&gt;A few micro optimizations&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8744 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8744&quot;&gt;Use platform line separator for backtrace output&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8745 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8745&quot;&gt;Updates from CRuby 3.4.2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8748 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8748&quot;&gt;Reduce overhead of indy plumbing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8751 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8751&quot;&gt;Update URI gem to 1.0.3 in JRuby 10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8753 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8753&quot;&gt;Java version detection improvements&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8759 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8759&quot;&gt;Fixed enough javadoc “errors” where it no longer stops build&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>JRuby 9.4.12.0 Released</title>
   <link href="https://www.jruby.org/2025/02/11/jruby-9-4-12-0.html"/>
   <updated>2025-02-11T00:00:00+00:00</updated>
   <id>https://www.jruby.org/2025/02/11/jruby-9-4-12-0</id>
   <content type="html">&lt;p&gt;The JRuby community is pleased to announce the release of JRuby 9.4.12.0.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Homepage: &lt;a href=&quot;https://www.jruby.org/&quot;&gt;https://www.jruby.org/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Download: &lt;a href=&quot;https://www.jruby.org/download&quot;&gt;https://www.jruby.org/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JRuby 9.4.12.x targets Ruby 3.1 compatibility.&lt;/p&gt;

&lt;p&gt;Thank you to our contributors this release, you help keep JRuby moving forward!&lt;/p&gt;

&lt;h2 id=&quot;critical-fixes&quot;&gt;Critical Fixes&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Added additional locking to the new Class#subclasses implementation to fix a concurrent modification error. &lt;a href=&quot;https://github.com/jruby/jruby/issues/8602&quot;&gt;#8602&lt;/a&gt;, &lt;a href=&quot;https://github.com/jruby/jruby/pull/8603&quot;&gt;#8603&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;standard-library&quot;&gt;Standard Library&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;jar-dependencies upgraded to 0.5.4 to fix an issue parsing Maven output on Java versions 9 and higher. &lt;a href=&quot;https://github.com/jruby/jruby/issues/8606&quot;&gt;#8606&lt;/a&gt;, &lt;a href=&quot;https://github.com/jruby/jruby/pull/8615&quot;&gt;#8615&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;4-issues-and-prs-resolved-for-94120&quot;&gt;4 Issues and PRs resolved for 9.4.12.0&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;#8602 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8602&quot;&gt;ConcurrentModificationException in subclasses map&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8603 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8603&quot;&gt;Ensure subclass set prevents concurrent modification&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8606 &lt;a href=&quot;https://github.com/jruby/jruby/issues/8606&quot;&gt;No such file or directory &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;snakeyaml-engine-2.9.jar&lt;/code&gt; in JRuby 9.4.11.0&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;#8615 &lt;a href=&quot;https://github.com/jruby/jruby/pull/8615&quot;&gt;Use jar-dependencies 0.5.4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
</feed>
