<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/test, branch v4.0.4</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>merge revision(s) d077df24a2256d760cc534b242b28822d4ef6376: [Backport #22002]</title>
<updated>2026-05-11T21:01:20+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-05-11T21:01:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a9e4608b5225d665ec9c9353a8350f5b940c20fe'/>
<id>a9e4608b5225d665ec9c9353a8350f5b940c20fe</id>
<content type='text'>
	[Bug #22002] Never pop when compiling branch predicate

	The value is always needed. Now prism emits the same instructions as parse.y for the added test case.

	`defined?`/`flip-flop` caused `argument stack underflow`, `and`/`or` segfaulted during runtime.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[Bug #22002] Never pop when compiling branch predicate

	The value is always needed. Now prism emits the same instructions as parse.y for the added test case.

	`defined?`/`flip-flop` caused `argument stack underflow`, `and`/`or` segfaulted during runtime.
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) c0d86a0103de7130943d54b4a290b76ec7e0c135,47e061277ac194a36659510bcf4f3190bde629a6: [Backport #21952]</title>
<updated>2026-05-11T20:54:55+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-05-11T20:54:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=8539f0b386e2e42f8fe5ac12a2fd9e84872d8c7c'/>
<id>8539f0b386e2e42f8fe5ac12a2fd9e84872d8c7c</id>
<content type='text'>
	class.c: rb_class_duplicate_classext also dup content of cvc_tbl

	[Bug #21952]

	Shallow copying the table result in the same memory being shared
	between multiple box, causing double free when one of the box
	is garbage collected.

	---

	class.c: Make cvc_tbl a managed object

	[Bug #21952]

	Solves the double-free or use after-free concern with boxes.
	Now entries can safely be used for copy-on-write.

	Also is likely necessary to make it save to read cvar from
	secondary ractors, as allowed since: ab32c0e690b805cdaaf264ad4c3421696c588204
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	class.c: rb_class_duplicate_classext also dup content of cvc_tbl

	[Bug #21952]

	Shallow copying the table result in the same memory being shared
	between multiple box, causing double free when one of the box
	is garbage collected.

	---

	class.c: Make cvc_tbl a managed object

	[Bug #21952]

	Solves the double-free or use after-free concern with boxes.
	Now entries can safely be used for copy-on-write.

	Also is likely necessary to make it save to read cvar from
	secondary ractors, as allowed since: ab32c0e690b805cdaaf264ad4c3421696c588204
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 7f4f3c8ee7cde795dc27be753796fc7ea8318565: [Backport #22004]</title>
<updated>2026-05-11T20:45:55+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-05-11T20:45:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b18acb27c3f1b1ae26bbae6e53e94e246dc0e973'/>
<id>b18acb27c3f1b1ae26bbae6e53e94e246dc0e973</id>
<content type='text'>
	[PATCH] [Bug #22004] Fix short-circuited loop conditions
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[PATCH] [Bug #22004] Fix short-circuited loop conditions
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) f89b07ef0046257dd796a2e615cc063072114f16: [Backport #21940]</title>
<updated>2026-05-11T20:45:19+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-05-11T20:45:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b00545b9652782b5ab07d16dc7729b0c69242d3c'/>
<id>b00545b9652782b5ab07d16dc7729b0c69242d3c</id>
<content type='text'>
	[PATCH] Mark `$_` as box-dynamic to bypass Box gvar_tbl cache

	`$_` is updated through svar (rb_lastline_set), bypassing
	rb_gvar_set, so the Box gvar_tbl cache is never invalidated
	and returns a stale value. Call rb_gvar_box_dynamic so
	gvar_use_box_tbl() skips the cache.

	Fixes [Bug #21940](https://bugs.ruby-lang.org/issues/21940)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[PATCH] Mark `$_` as box-dynamic to bypass Box gvar_tbl cache

	`$_` is updated through svar (rb_lastline_set), bypassing
	rb_gvar_set, so the Box gvar_tbl cache is never invalidated
	and returns a stale value. Call rb_gvar_box_dynamic so
	gvar_use_box_tbl() skips the cache.

	Fixes [Bug #21940](https://bugs.ruby-lang.org/issues/21940)
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 526344b56ea968d5704bdefe6e10bb3cf7f4f569, 8ad6baa01746e8de0460f0ccdaee69953a70af17: [Backport #21933]</title>
<updated>2026-05-11T20:43:47+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-05-11T20:43:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=dd78605b2d06600750c331f307083d60df702814'/>
<id>dd78605b2d06600750c331f307083d60df702814</id>
<content type='text'>
	[PATCH] Fix Box regexp match vars after non-match

	[PATCH] Use box_ready for $&amp;, $`, $\', $+

	These variables have rb_gvar_readonly_setter, so box_ready is sufficient.
	Only $~ needs box_dynamic due to its custom match_setter.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[PATCH] Fix Box regexp match vars after non-match

	[PATCH] Use box_ready for $&amp;, $`, $\', $+

	These variables have rb_gvar_readonly_setter, so box_ready is sufficient.
	Only $~ needs box_dynamic due to its custom match_setter.
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 4644e4f2fafe45e2c49f18bc9712d0f5fff3d341: [Backport #21986]</title>
<updated>2026-05-11T20:40:35+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-05-11T20:40:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=926b0ec4ed0e181735f3778c3e6b79d891e70848'/>
<id>926b0ec4ed0e181735f3778c3e6b79d891e70848</id>
<content type='text'>
	[PATCH] [Bug #21986] Fix location of numeric literal

	When checking for suffixes, do not flush the numeric literal token
	even if no suffix is found.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[PATCH] [Bug #21986] Fix location of numeric literal

	When checking for suffixes, do not flush the numeric literal token
	even if no suffix is found.
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 24a2ba09af13b7c969733ea9370ad59d2442f4c9: [Backport #21985]</title>
<updated>2026-05-11T20:40:06+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-05-11T20:40:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e4271b554c8b13270754a45ee631789237d5cced'/>
<id>e4271b554c8b13270754a45ee631789237d5cced</id>
<content type='text'>
	[PATCH] [Bug #21985] Include the `-` in the negative numbers location
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[PATCH] [Bug #21985] Include the `-` in the negative numbers location
</pre>
</div>
</content>
</entry>
<entry>
<title>- iseq.c: fix passing frozen option to compile_file_prism</title>
<updated>2026-05-04T22:06:51+00:00</updated>
<author>
<name>Vladimir Dementyev</name>
<email>dementiev.vm@gmail.com</email>
</author>
<published>2026-04-21T14:34:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=1ce2e79b13733f1f2d2bbc2fa9f2b447f6ddd207'/>
<id>1ce2e79b13733f1f2d2bbc2fa9f2b447f6ddd207</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix coverage support for RubyVM::ISeq.compile</title>
<updated>2026-05-04T22:06:21+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>jean.boussier@gmail.com</email>
</author>
<published>2026-04-29T04:12:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=4c564ee28e6da275a718e9961aa902bc052c9c1a'/>
<id>4c564ee28e6da275a718e9961aa902bc052c9c1a</id>
<content type='text'>
[Bug #22018]

ISeq returned by `RubyVM::InstructionSequene.load_iseq` weren't
handled by the coverage module.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[Bug #22018]

ISeq returned by `RubyVM::InstructionSequene.load_iseq` weren't
handled by the coverage module.
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/erb] Prohibit def_method on marshal-loaded ERB instances</title>
<updated>2026-04-21T08:10:30+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2026-04-21T07:27:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c35379df5279777fb4e02d989064eecd9cbbf338'/>
<id>c35379df5279777fb4e02d989064eecd9cbbf338</id>
<content type='text'>
Extends the @_init guard to def_method so that an ERB object created
via Marshal.load (which bypasses initialize) raises ArgumentError
instead of evaluating arbitrary source. def_module and def_class both
delegate to def_method and are covered by the same check.

Co-authored-by: Tristan Madani &lt;TristanInSec@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Extends the @_init guard to def_method so that an ERB object created
via Marshal.load (which bypasses initialize) raises ArgumentError
instead of evaluating arbitrary source. def_module and def_class both
delegate to def_method and are covered by the same check.

Co-authored-by: Tristan Madani &lt;TristanInSec@gmail.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
