<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/gc/default/default.c, branch v3_4_9</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) 8a586af33b59cae93a1bee13c39e87dd087a4a6b: [Backport #21838]</title>
<updated>2026-01-25T09:21:53+00:00</updated>
<author>
<name>nagachika</name>
<email>nagachika@ruby-lang.org</email>
</author>
<published>2026-01-25T09:21:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=981097a7390db47e06d78b760ed198bff8eb184b'/>
<id>981097a7390db47e06d78b760ed198bff8eb184b</id>
<content type='text'>
	[PATCH] Don't force major GC when there are allocatable slots

	[Bug #21838]

	When we have allocatable slots, we can grow the heap instead of forcing
	a major GC. This prevents major GC to be ran very often in certain situations.
	See the ticket for more details.

	On ruby-bench, we can see that this patch doesn't cause any significant
	regressions:

	    --------------  -----------  ----------  ---------  -----------  ----------  ---------  --------------  -------------
	    bench           master (ms)  stddev (%)  RSS (MiB)  branch (ms)  stddev (%)  RSS (MiB)  branch 1st itr  master/branch
	    activerecord    148.2        0.3         59.2       150.0        0.8         69.7       1.015           0.988
	    chunky-png      435.2        0.3         72.9       438.8        0.1         66.7       0.993           0.992
	    erubi-rails     733.8        1.2         118.7      704.8        0.2         98.3       1.077           1.041
	    hexapdf         1400.4       1.1         247.0      1405.0       0.9         223.7      0.986           0.997
	    liquid-c        32.5         3.3         32.8       32.5         2.1         30.7       1.042           0.999
	    liquid-compile  31.0         1.7         35.1       33.4         3.9         32.8       0.938           0.928
	    liquid-render   84.7         0.4         30.8       86.3         0.4         30.8       0.981           0.982
	    lobsters        594.7        0.6         310.5      596.6        0.4         306.0      1.057           0.997
	    mail            75.6         2.8         53.3       76.9         0.7         53.2       0.968           0.982
	    psych-load      1122.8       1.2         29.2       1145.1       0.4         31.7       0.964           0.981
	    railsbench      1244.7       0.3         115.5      1254.8       1.1         115.2      0.939           0.992
	    rubocop         103.7        0.5         94.1       104.3        0.5         92.4       0.985           0.994
	    ruby-lsp        88.3         0.6         78.5       88.5         1.2         77.9       0.992           0.997
	    sequel          26.9         0.9         33.6       28.3         1.4         32.1       0.954           0.952
	    shipit          1119.3       1.5         171.4      1075.7       2.1         162.5      1.873           1.040
	    --------------  -----------  ----------  ---------  -----------  ----------  ---------  --------------  -------------
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[PATCH] Don't force major GC when there are allocatable slots

	[Bug #21838]

	When we have allocatable slots, we can grow the heap instead of forcing
	a major GC. This prevents major GC to be ran very often in certain situations.
	See the ticket for more details.

	On ruby-bench, we can see that this patch doesn't cause any significant
	regressions:

	    --------------  -----------  ----------  ---------  -----------  ----------  ---------  --------------  -------------
	    bench           master (ms)  stddev (%)  RSS (MiB)  branch (ms)  stddev (%)  RSS (MiB)  branch 1st itr  master/branch
	    activerecord    148.2        0.3         59.2       150.0        0.8         69.7       1.015           0.988
	    chunky-png      435.2        0.3         72.9       438.8        0.1         66.7       0.993           0.992
	    erubi-rails     733.8        1.2         118.7      704.8        0.2         98.3       1.077           1.041
	    hexapdf         1400.4       1.1         247.0      1405.0       0.9         223.7      0.986           0.997
	    liquid-c        32.5         3.3         32.8       32.5         2.1         30.7       1.042           0.999
	    liquid-compile  31.0         1.7         35.1       33.4         3.9         32.8       0.938           0.928
	    liquid-render   84.7         0.4         30.8       86.3         0.4         30.8       0.981           0.982
	    lobsters        594.7        0.6         310.5      596.6        0.4         306.0      1.057           0.997
	    mail            75.6         2.8         53.3       76.9         0.7         53.2       0.968           0.982
	    psych-load      1122.8       1.2         29.2       1145.1       0.4         31.7       0.964           0.981
	    railsbench      1244.7       0.3         115.5      1254.8       1.1         115.2      0.939           0.992
	    rubocop         103.7        0.5         94.1       104.3        0.5         92.4       0.985           0.994
	    ruby-lsp        88.3         0.6         78.5       88.5         1.2         77.9       0.992           0.997
	    sequel          26.9         0.9         33.6       28.3         1.4         32.1       0.954           0.952
	    shipit          1119.3       1.5         171.4      1075.7       2.1         162.5      1.873           1.040
	    --------------  -----------  ----------  ---------  -----------  ----------  ---------  --------------  -------------
</pre>
</div>
</content>
</entry>
<entry>
<title>Prefix asan_poison_object with rb</title>
<updated>2024-12-19T14:14:34+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2024-12-18T17:01:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a58675386c10f4183116056bc0cf289548883ac0'/>
<id>a58675386c10f4183116056bc0cf289548883ac0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix compaction in ASAN with RGENGC_CHECK_MODE enabled</title>
<updated>2024-12-19T14:14:34+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2024-12-18T15:19:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fcd44eee09f0a26c7711732bc8782fb8afa924f2'/>
<id>fcd44eee09f0a26c7711732bc8782fb8afa924f2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't calculate the aligned slot when unlocking page</title>
<updated>2024-12-19T14:14:34+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2024-12-13T18:43:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=16750a47d0718e82818020233ed3258f8ac74aad'/>
<id>16750a47d0718e82818020233ed3258f8ac74aad</id>
<content type='text'>
If we try to use GET_PAGE_HEADER, it can trigger the read barrier. If we
try to align on the slot then we end up unlocking the heap page of a
lower memory address.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If we try to use GET_PAGE_HEADER, it can trigger the read barrier. If we
try to align on the slot then we end up unlocking the heap page of a
lower memory address.
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't unpoison a NULL object</title>
<updated>2024-12-19T14:14:34+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2024-12-11T19:09:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=f02e31294c8159239f656379ccbb34e466c0ab43'/>
<id>f02e31294c8159239f656379ccbb34e466c0ab43</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Unpoison memory before accessing next element of freelist</title>
<updated>2024-12-19T14:14:34+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2024-12-11T17:58:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a1265601960a4de12ce88842bcd8f3fecdf3660c'/>
<id>a1265601960a4de12ce88842bcd8f3fecdf3660c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Move special constant check in rb_gc_location to gc.c</title>
<updated>2024-12-16T18:32:35+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2024-12-16T16:02:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d28368d27f6ee8e82dc293f10cbbcbe7f07fa9d1'/>
<id>d28368d27f6ee8e82dc293f10cbbcbe7f07fa9d1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix compilation with MALLOC_ALLOCATED_SIZE</title>
<updated>2024-12-12T00:58:35+00:00</updated>
<author>
<name>John Hawthorn</name>
<email>john@hawthorn.email</email>
</author>
<published>2024-12-11T22:32:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=36f49eb2b48d855fd168bf5371c9932e35c8029b'/>
<id>36f49eb2b48d855fd168bf5371c9932e35c8029b</id>
<content type='text'>
Previously compilation failed with -DMALLOC_ALLOCATED_SIZE=1

Co-authored-by: Matthew Draper &lt;matthew@trebex.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously compilation failed with -DMALLOC_ALLOCATED_SIZE=1

Co-authored-by: Matthew Draper &lt;matthew@trebex.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[Bug #20941] Bail out when recursing no memory</title>
<updated>2024-12-11T07:12:04+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2024-12-11T07:12:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=f243733564940401d914686837b701bc31311248'/>
<id>f243733564940401d914686837b701bc31311248</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Use rb_gc_enable/rb_gc_disable_no_rest instead of ruby_disable_gc</title>
<updated>2024-12-05T21:21:37+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2024-12-04T21:54:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=eedb30d3855d31e15e6db48faea25af4afb63b6d'/>
<id>eedb30d3855d31e15e6db48faea25af4afb63b6d</id>
<content type='text'>
We should use the rb_gc_enable/rb_gc_disable_no_rest APIs instead of
directly setting the ruby_disable_gc variable.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We should use the rb_gc_enable/rb_gc_disable_no_rest APIs instead of
directly setting the ruby_disable_gc variable.
</pre>
</div>
</content>
</entry>
</feed>
