<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/include/ruby/internal/gc.h, 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>gc.h: Reintroduce immediate guard in `rb_obj_written`</title>
<updated>2025-12-16T20:00:27+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>jean.boussier@gmail.com</email>
</author>
<published>2025-12-14T08:50:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=094418a6de89a37fc51a17077a5565f125b97f2e'/>
<id>094418a6de89a37fc51a17077a5565f125b97f2e</id>
<content type='text'>
This guard was removed in https://github.com/ruby/ruby/pull/13497
on the justification that some GC may need to be notified even for
immediate.

But the two currently available GCs don't, and there are plenty
of assumtions GCs don't everywhere, notably in YJIT and ZJIT.

This optimization is also not so micro (but not huge either).
I routinely see 1-2% wasted there on micro-benchmarks.

So perhaps if in the future we actually need this, it might make
sense to introduce a way for GCs to declare that as an option,
but in the meantime it's extra overhead with little gain.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This guard was removed in https://github.com/ruby/ruby/pull/13497
on the justification that some GC may need to be notified even for
immediate.

But the two currently available GCs don't, and there are plenty
of assumtions GCs don't everywhere, notably in YJIT and ZJIT.

This optimization is also not so micro (but not huge either).
I routinely see 1-2% wasted there on micro-benchmarks.

So perhaps if in the future we actually need this, it might make
sense to introduce a way for GCs to declare that as an option,
but in the meantime it's extra overhead with little gain.
</pre>
</div>
</content>
</entry>
<entry>
<title>Allow pass special constants to the write barrier</title>
<updated>2025-06-03T16:04:24+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2025-06-02T20:31:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=ea8b53a53954c2f34b1093ae2547951ae0e1fe8c'/>
<id>ea8b53a53954c2f34b1093ae2547951ae0e1fe8c</id>
<content type='text'>
Some GC implementations want to always know when an object is written to,
even if the written value is a special constant. Checking special constants
in rb_obj_written was a micro-optimization that made assumptions about
the GC implementation.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Some GC implementations want to always know when an object is written to,
even if the written value is a special constant. Checking special constants
in rb_obj_written was a micro-optimization that made assumptions about
the GC implementation.
</pre>
</div>
</content>
</entry>
<entry>
<title>Cast via `uintptr_t` function pointer between object pointer</title>
<updated>2024-10-08T14:29:49+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2024-10-08T06:41:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9a90cd228466ec088d6f0da8d1aa065f03daa7c8'/>
<id>9a90cd228466ec088d6f0da8d1aa065f03daa7c8</id>
<content type='text'>
- ISO C forbids conversion of function pointer to object pointer type
- ISO C forbids conversion of object pointer to function pointer type
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- ISO C forbids conversion of function pointer to object pointer type
- ISO C forbids conversion of object pointer to function pointer type
</pre>
</div>
</content>
</entry>
<entry>
<title>put empty `rb_gc_force_recycle()`</title>
<updated>2024-04-11T03:00:33+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2024-04-10T05:57:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5d9fd674c9ceefd6baffdd05d33c5b60a7c64e42'/>
<id>5d9fd674c9ceefd6baffdd05d33c5b60a7c64e42</id>
<content type='text'>
and declare it will be removed soon.

ddtrace is still referes the API and build was failed.
See https://github.com/DataDog/dd-trace-rb/pull/3578

Maybe threre are only few users of this C-API now so we can remove
it soon.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
and declare it will be removed soon.

ddtrace is still referes the API and build was failed.
See https://github.com/DataDog/dd-trace-rb/pull/3578

Maybe threre are only few users of this C-API now so we can remove
it soon.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove deprecated function rb_gc_force_recycle</title>
<updated>2024-04-05T15:39:54+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2024-03-21T18:24:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=dbe8886f4d28d9e5a01d3667cd451a623c3c1ccc'/>
<id>dbe8886f4d28d9e5a01d3667cd451a623c3c1ccc</id>
<content type='text'>
This function has been deprecated since Ruby 3.1, so we should remove it
for Ruby 3.4.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This function has been deprecated since Ruby 3.1, so we should remove it
for Ruby 3.4.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add `RUBY_REFERENCES`</title>
<updated>2023-11-30T12:39:28+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2023-11-26T10:09:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0cdad3b92a7e117bc7e36779140f5c83b07ca7ce'/>
<id>0cdad3b92a7e117bc7e36779140f5c83b07ca7ce</id>
<content type='text'>
Instead of `RUBY_REFERENCES_START` and `RUBY_REFERENCES_END`, so that
auto-indent works well.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of `RUBY_REFERENCES_START` and `RUBY_REFERENCES_END`, so that
auto-indent works well.
</pre>
</div>
</content>
</entry>
<entry>
<title>Prefix `REF_EDGE` and `REFS_LIST_PTR` with `RUBY_`</title>
<updated>2023-11-30T12:39:28+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2023-11-26T07:04:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=30f7b7a0535575a4995ea59086830ee19c79ea82'/>
<id>30f7b7a0535575a4995ea59086830ee19c79ea82</id>
<content type='text'>
Also move `struct` so that `typedef`-ed names can be used.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Also move `struct` so that `typedef`-ed names can be used.
</pre>
</div>
</content>
</entry>
<entry>
<title>Constify `RUBY_REFERENCES_START` tables</title>
<updated>2023-11-26T07:04:23+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2023-11-26T07:04:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e81c380c0fb3611d5507bfa169b0437a8712ea7c'/>
<id>e81c380c0fb3611d5507bfa169b0437a8712ea7c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove reference to USE_RINCGC</title>
<updated>2023-07-04T13:14:34+00:00</updated>
<author>
<name>Matt Valentine-House</name>
<email>matt@eightbitraptor.com</email>
</author>
<published>2023-06-27T08:21:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9178a9987709efd74829462380e623e86a8de502'/>
<id>9178a9987709efd74829462380e623e86a8de502</id>
<content type='text'>
This compile time flag was removed in https://github.com/ruby/ruby/pull/7313

This commit cleans up some related dead code.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This compile time flag was removed in https://github.com/ruby/ruby/pull/7313

This commit cleans up some related dead code.
</pre>
</div>
</content>
</entry>
<entry>
<title>[Bug #19584] [DOC] Tweek description of `rb_gc_register_address`</title>
<updated>2023-04-07T04:42:58+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2023-04-07T03:25:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=4adcfc8cd7a17593a6590025da2b03eebf4fd63c'/>
<id>4adcfc8cd7a17593a6590025da2b03eebf4fd63c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
