<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git, branch v4.0.2</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>v4.0.2</title>
<updated>2026-03-16T22:47:54+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-03-16T22:47:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d3da9fec828481422cc4084892454bf572d7af5a'/>
<id>d3da9fec828481422cc4084892454bf572d7af5a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Bump Prism to v1.8.1</title>
<updated>2026-03-16T22:46:12+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-03-16T22:46:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=3fd1181a9d81cc7eed8ddfe262d97035d6e1b321'/>
<id>3fd1181a9d81cc7eed8ddfe262d97035d6e1b321</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/prism] Fix not binding power in endless methods [Backport #21097]</title>
<updated>2026-03-16T19:24:01+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-03-16T19:24:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=6b47e3f82cfb52d41fef8882d7e132f43a7611d6'/>
<id>6b47e3f82cfb52d41fef8882d7e132f43a7611d6</id>
<content type='text'>
Change rescue modifier binding power from PM_BINDING_POWER_COMPOSITION
to PM_BINDING_POWER_MATCH + 1, so that `x = a rescue b in c` is parsed
as `(x = (a rescue b)) in c` and `def f = a rescue b in c` is parsed
as `(def f = (a rescue b)) in c`.

https://github.com/ruby/prism/commit/7e797f59ae
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change rescue modifier binding power from PM_BINDING_POWER_COMPOSITION
to PM_BINDING_POWER_MATCH + 1, so that `x = a rescue b in c` is parsed
as `(x = (a rescue b)) in c` and `def f = a rescue b in c` is parsed
as `(def f = (a rescue b)) in c`.

https://github.com/ruby/prism/commit/7e797f59ae
</pre>
</div>
</content>
</entry>
<entry>
<title>Update pstore to 0.2.1 [Backport #21880]</title>
<updated>2026-03-16T19:02:55+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-03-16T19:02:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=901966d7621bfdfe520c5b65649c7e6bacaad6ff'/>
<id>901966d7621bfdfe520c5b65649c7e6bacaad6ff</id>
<content type='text'>
Fix ultra_safe mode of pstore bundled with Ruby 4.0.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix ultra_safe mode of pstore bundled with Ruby 4.0.
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 08372635f7ec09f7115bd254246ebd637499651c: [Backport #21926]</title>
<updated>2026-03-16T18:57:04+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-03-16T18:57:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a601b899a35c796775309dca01a6d5e64be14c44'/>
<id>a601b899a35c796775309dca01a6d5e64be14c44</id>
<content type='text'>
	Fix race condition right after ubf registration

	Fixes [Bug #21926]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	Fix race condition right after ubf registration

	Fixes [Bug #21926]
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) f315d250b44e75a1a69f4a05b293dcc701377689: [Backport #21947]</title>
<updated>2026-03-16T18:56:14+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-03-16T18:56:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=f808ff5fc15690338dcb6530e4d3df760d8721f3'/>
<id>f808ff5fc15690338dcb6530e4d3df760d8721f3</id>
<content type='text'>
	[ruby/timeout] Compatibility with Fiber scheduler.
	(https://github.com/ruby/timeout/pull/97)

	[Bug #21947]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[ruby/timeout] Compatibility with Fiber scheduler.
	(https://github.com/ruby/timeout/pull/97)

	[Bug #21947]
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 55694ad7efc3f8dc6d5c7aefa60ded4c303ed6cf: [Backport #21945]</title>
<updated>2026-03-16T18:55:53+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-03-16T18:55:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=1d3581e18a689f0d392686283e340058ac468ffd'/>
<id>1d3581e18a689f0d392686283e340058ac468ffd</id>
<content type='text'>
	[Bug #21945] Correctly handle `and?` and similar
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[Bug #21945] Correctly handle `and?` and similar
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 361644c0cce3235e9cc6724994c6b5711deb10b8: [Backport #21917]</title>
<updated>2026-03-16T18:35:06+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-03-16T18:35:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0d845e4a071f67de40e1151cafb419c7aba87050'/>
<id>0d845e4a071f67de40e1151cafb419c7aba87050</id>
<content type='text'>
	[PATCH] [Bug #21917] Fix build on AIX
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[PATCH] [Bug #21917] Fix build on AIX
</pre>
</div>
</content>
</entry>
<entry>
<title>YJIT: Fix not reading locals from `cfp-&gt;ep` after `YJIT.enable` and exceptional entry</title>
<updated>2026-03-16T18:03:25+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2026-03-12T22:33:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=8466e93b1d6eb85ad5952ab3a10575fa453e77e2'/>
<id>8466e93b1d6eb85ad5952ab3a10575fa453e77e2</id>
<content type='text'>
[Backport #21941]

In case of `--yjit-disable`, YJIT only starts to record environment
escapes after `RubyVM::YJIT.enable`. Previously we falsely assumed that
we always have a full history all the way back to VM boot. This had YJIT
install and run code that assume EP=BP when EP≠BP for some exceptional
entry into the middle of a running frame, if the environment escaped
before `YJIT.enable`.

The fix is to reject exceptional entry with an escaped environment.
Rename things and explain in more detail how the predicate for deciding
to assume EP=BP works. It's quite subtle since it reasons about all
parties in the system that push a control frame and then run JIT code.

Note that while can_assume_on_stack_env() checks the currently running
environment if it so happens to be the one YJIT is compiling against, it
can return true for any ISEQ. The check isn't necessary for fixing the
bug, and the load bearing part of this patch is the change to
exceptional entries.

This fix is flat on speed and space on ruby-bench headline benchmarks.

Many thanks for the community effort to create a small test case for
this bug.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[Backport #21941]

In case of `--yjit-disable`, YJIT only starts to record environment
escapes after `RubyVM::YJIT.enable`. Previously we falsely assumed that
we always have a full history all the way back to VM boot. This had YJIT
install and run code that assume EP=BP when EP≠BP for some exceptional
entry into the middle of a running frame, if the environment escaped
before `YJIT.enable`.

The fix is to reject exceptional entry with an escaped environment.
Rename things and explain in more detail how the predicate for deciding
to assume EP=BP works. It's quite subtle since it reasons about all
parties in the system that push a control frame and then run JIT code.

Note that while can_assume_on_stack_env() checks the currently running
environment if it so happens to be the one YJIT is compiling against, it
can return true for any ISEQ. The check isn't necessary for fixing the
bug, and the load bearing part of this patch is the change to
exceptional entries.

This fix is flat on speed and space on ruby-bench headline benchmarks.

Many thanks for the community effort to create a small test case for
this bug.
</pre>
</div>
</content>
</entry>
<entry>
<title>Windows: Explicitly specify the use of `coreutils` commands</title>
<updated>2026-03-12T00:42:58+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2026-03-10T03:28:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=ad231cdf4a021ee6e37e1a5d8c0ac137dd9fe246'/>
<id>ad231cdf4a021ee6e37e1a5d8c0ac137dd9fe246</id>
<content type='text'>
It appears that shims for individual commands are no longer being
created.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It appears that shims for individual commands are no longer being
created.
</pre>
</div>
</content>
</entry>
</feed>
