<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/zjit/src/gc.rs, 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>ZJIT: Add a VALUE#write_barrier helper method to deduplicate logic</title>
<updated>2025-12-16T20:00:27+00:00</updated>
<author>
<name>Benoit Daloze</name>
<email>eregontp@gmail.com</email>
</author>
<published>2025-12-16T12:02:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=04edf3d9939d08f4e724cb91b9be374032cb662e'/>
<id>04edf3d9939d08f4e724cb91b9be374032cb662e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Guard other calls to rb_gc_writebarrier() with a !special_const_p() check</title>
<updated>2025-12-16T20:00:27+00:00</updated>
<author>
<name>Benoit Daloze</name>
<email>eregontp@gmail.com</email>
</author>
<published>2025-12-16T11:42:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=49cecd360fe61ec266c230084f46d5b640c03399'/>
<id>49cecd360fe61ec266c230084f46d5b640c03399</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Re-compile ISEQs invalidated by PatchPoint (#15459)</title>
<updated>2025-12-11T00:07:39+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2025-12-11T00:07:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c7d56e90d381f0bf115a5c76cbef9df6ae19f4c9'/>
<id>c7d56e90d381f0bf115a5c76cbef9df6ae19f4c9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Carve out IseqPayload into a separate module (#15098)</title>
<updated>2025-11-07T16:54:21+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashi.kokubun@shopify.com</email>
</author>
<published>2025-11-07T16:54:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9bbe4b600b2bc2866561d095c3409589a214a358'/>
<id>9bbe4b600b2bc2866561d095c3409589a214a358</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>YJIT: ZJIT: Fix rustdoc dead links</title>
<updated>2025-10-12T04:51:59+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2025-10-11T19:48:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=6be2a5104df894079d127d2cdc19b21c4f174d85'/>
<id>6be2a5104df894079d127d2cdc19b21c4f174d85</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Add `NoSingletonClass` patch point (#14680)</title>
<updated>2025-10-02T16:03:25+00:00</updated>
<author>
<name>Stan Lo</name>
<email>stan.lo@shopify.com</email>
</author>
<published>2025-10-02T16:03:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2ed5a02fcca4da4acf4c8c3d7ee4c392fc18d948'/>
<id>2ed5a02fcca4da4acf4c8c3d7ee4c392fc18d948</id>
<content type='text'>
* ZJIT: Add NoSingletonClass patch point

This patch point makes sure that when the object has a singleton class,
the JIT code is invalidated. As of now, this is only needed for C call
optimization.

In YJIT, the singleton class guard only applies to Array, Hash, and String.
But in ZJIT, we may optimize C calls from gems (e.g. `sqlite3`). So the
patch point needs to be applied to a broader range of classes.

* ZJIT: Only generate NoSingletonClass guard when the type can have singleton class

* ZJIT: Update or forget NoSingletonClass patch point when needed</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* ZJIT: Add NoSingletonClass patch point

This patch point makes sure that when the object has a singleton class,
the JIT code is invalidated. As of now, this is only needed for C call
optimization.

In YJIT, the singleton class guard only applies to Array, Hash, and String.
But in ZJIT, we may optimize C calls from gems (e.g. `sqlite3`). So the
patch point needs to be applied to a broader range of classes.

* ZJIT: Only generate NoSingletonClass guard when the type can have singleton class

* ZJIT: Update or forget NoSingletonClass patch point when needed</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Add --zjit-trace-exits (#14640)</title>
<updated>2025-09-30T15:55:33+00:00</updated>
<author>
<name>Aiden Fox Ivey</name>
<email>aiden.foxivey@shopify.com</email>
</author>
<published>2025-09-30T15:55:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2f1c30cd50e464880e44da670d3ad8ebe00fc899'/>
<id>2f1c30cd50e464880e44da670d3ad8ebe00fc899</id>
<content type='text'>
Add side exit tracing functionality for ZJIT</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add side exit tracing functionality for ZJIT</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Remove RefCell from IseqCall</title>
<updated>2025-09-29T17:04:55+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2025-09-26T19:48:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=7a1873857eff3125c8124416f2fb3e0b13f3f238'/>
<id>7a1873857eff3125c8124416f2fb3e0b13f3f238</id>
<content type='text'>
No point taking the panic risks with RefCell when most fields in it are
already in a Cell. Put `iseq` in a Cell and we no longer need the
wrapping. Saves memory, too.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
No point taking the panic risks with RefCell when most fields in it are
already in a Cell. Put `iseq` in a Cell and we no longer need the
wrapping. Saves memory, too.
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Compile ISEQ with optional arguments (#14653)</title>
<updated>2025-09-25T23:57:23+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashi.kokubun@shopify.com</email>
</author>
<published>2025-09-25T23:57:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=61a0de1b652f8e1c79ef762ecf41bdea3f799d25'/>
<id>61a0de1b652f8e1c79ef762ecf41bdea3f799d25</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Remove dead CMEs from `Invariants`</title>
<updated>2025-09-25T22:36:58+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2025-09-25T21:34:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=328d2037a6bf24e26a7d144e80ab8c1a9c9fd868'/>
<id>328d2037a6bf24e26a7d144e80ab8c1a9c9fd868</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
