<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/test/ruby/test_shapes.rb, 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>rb_ivar_delete: allow complex transition</title>
<updated>2025-08-28T13:21:05+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>jean.boussier@gmail.com</email>
</author>
<published>2025-08-28T12:08:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=05fc01188a5315a5de034122f6c4864702f80378'/>
<id>05fc01188a5315a5de034122f6c4864702f80378</id>
<content type='text'>
`rb_ivar_delete` would force a new shape to be created.
And in the case of a shape exhaustion, it wouldn't handle
T_CLASS/T_MODULE correctly.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
`rb_ivar_delete` would force a new shape to be created.
And in the case of a shape exhaustion, it wouldn't handle
T_CLASS/T_MODULE correctly.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove unused SPECIAL_CONST_SHAPE_ID</title>
<updated>2025-08-21T15:41:39+00:00</updated>
<author>
<name>Étienne Barrié</name>
<email>etienne.barrie@gmail.com</email>
</author>
<published>2025-08-21T13:32:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b0c80c2be8377ff02811b508ae79f18ec4a31f0e'/>
<id>b0c80c2be8377ff02811b508ae79f18ec4a31f0e</id>
<content type='text'>
Its usage was removed in 306d50811dd060d876d1eb364a0d5e6106f5e4f1.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Its usage was removed in 306d50811dd060d876d1eb364a0d5e6106f5e4f1.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix special consts unit tests for i686 (#14271)</title>
<updated>2025-08-19T19:08:52+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>rubybugs@bernsteinbear.com</email>
</author>
<published>2025-08-19T19:08:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c1f16fc36d5bbe4c3886e3a2439121d2cb18f622'/>
<id>c1f16fc36d5bbe4c3886e3a2439121d2cb18f622</id>
<content type='text'>
32-bit platforms do not have flonum and something about the static symbol test was flaky.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
32-bit platforms do not have flonum and something about the static symbol test was flaky.</pre>
</div>
</content>
</entry>
<entry>
<title>Don't allow looking at the shape ID of immediates (#14266)</title>
<updated>2025-08-18T22:58:38+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>rubybugs@bernsteinbear.com</email>
</author>
<published>2025-08-18T22:58:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=306d50811dd060d876d1eb364a0d5e6106f5e4f1'/>
<id>306d50811dd060d876d1eb364a0d5e6106f5e4f1</id>
<content type='text'>
It only makes sense for heap objects.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It only makes sense for heap objects.</pre>
</div>
</content>
</entry>
<entry>
<title>imemo_fields: store owner object in RBasic.klass</title>
<updated>2025-08-13T17:53:18+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>jean.boussier@gmail.com</email>
</author>
<published>2025-08-08T09:41:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=10aa4134d408cab7b5754f3dcac2e75a52962b7c'/>
<id>10aa4134d408cab7b5754f3dcac2e75a52962b7c</id>
<content type='text'>
It is much more convenient than storing the klass, especially
when dealing with `object_id` as it allows to update the id2ref
table without having to dereference the owner, which may be
garbage at that point.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It is much more convenient than storing the klass, especially
when dealing with `object_id` as it allows to update the id2ref
table without having to dereference the owner, which may be
garbage at that point.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix rb_shape_transition_object_id transition to TOO_COMPLEX</title>
<updated>2025-08-01T10:39:14+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>jean.boussier@gmail.com</email>
</author>
<published>2025-08-01T09:22:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=1064c63643f1d70ef7253acc1022fdbf4e903b70'/>
<id>1064c63643f1d70ef7253acc1022fdbf4e903b70</id>
<content type='text'>
If `get_next_shape_internal` fail to return a shape, we must
transitiont to a complex shape. `shape_transition_object_id`
mistakenly didn't.

Co-Authored-By: Peter Zhu &lt;peter@peterzhu.ca&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If `get_next_shape_internal` fail to return a shape, we must
transitiont to a complex shape. `shape_transition_object_id`
mistakenly didn't.

Co-Authored-By: Peter Zhu &lt;peter@peterzhu.ca&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Get rid of SHAPE_T_OBJECT</title>
<updated>2025-06-07T16:30:44+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>jean.boussier@gmail.com</email>
</author>
<published>2025-06-07T12:44:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=6eb0cd8df703d0a2edf7b11eab3255295e58c888'/>
<id>6eb0cd8df703d0a2edf7b11eab3255295e58c888</id>
<content type='text'>
Now that we have the `heap_index` in shape flags we no longer
need `T_OBJECT` shapes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now that we have the `heap_index` in shape flags we no longer
need `T_OBJECT` shapes.
</pre>
</div>
</content>
</entry>
<entry>
<title>Replicate `heap_index` in shape_id flags.</title>
<updated>2025-06-07T16:30:44+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>jean.boussier@gmail.com</email>
</author>
<published>2025-06-06T07:26:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=689ec5114624978f47edcba4f055e62017e4ac36'/>
<id>689ec5114624978f47edcba4f055e62017e4ac36</id>
<content type='text'>
This is preparation to getting rid of `T_OBJECT` transitions.
By first only replicating the information it's easier to ensure
consistency.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is preparation to getting rid of `T_OBJECT` transitions.
By first only replicating the information it's easier to ensure
consistency.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor raw accesses to rb_shape_t.capacity</title>
<updated>2025-06-05T20:06:15+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>jean.boussier@gmail.com</email>
</author>
<published>2025-06-04T11:35:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=4e39580992064a4e91e9b8626a1a220f262a7011'/>
<id>4e39580992064a4e91e9b8626a1a220f262a7011</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Get rid of `rb_shape_t.flags`</title>
<updated>2025-06-05T05:44:44+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>jean.boussier@gmail.com</email>
</author>
<published>2025-06-04T09:11:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=772fc1f18785dd3f15dfd815977c9a796e9a3592'/>
<id>772fc1f18785dd3f15dfd815977c9a796e9a3592</id>
<content type='text'>
Now all flags are only in the `shape_id_t`, and can all be checked
without needing to dereference a pointer.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now all flags are only in the `shape_id_t`, and can all be checked
without needing to dereference a pointer.
</pre>
</div>
</content>
</entry>
</feed>
