<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/symbol.c, 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>use `SET_SHAREABLE`</title>
<updated>2025-10-23T04:08:26+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2025-09-24T20:50:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=bc00c4468e0054ca896d2b83d3020180915f64cf'/>
<id>bc00c4468e0054ca896d2b83d3020180915f64cf</id>
<content type='text'>
to adopt strict shareable rule.

* (basically) shareable objects only refer shareable objects
* (exception) shareable objects can refere unshareable objects
  but should not leak reference to unshareable objects to Ruby world
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
to adopt strict shareable rule.

* (basically) shareable objects only refer shareable objects
* (exception) shareable objects can refere unshareable objects
  but should not leak reference to unshareable objects to Ruby world
</pre>
</div>
</content>
</entry>
<entry>
<title>[Bug #21629] Initialize `struct RString`</title>
<updated>2025-10-08T09:19:47+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2025-10-08T09:19:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2bb6fe3854e2a4854bb89bfce4eaaea9d848fd1b'/>
<id>2bb6fe3854e2a4854bb89bfce4eaaea9d848fd1b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[DOC] Tweaks for String#intern (#14314)</title>
<updated>2025-08-26T18:27:54+00:00</updated>
<author>
<name>Burdette Lamar</name>
<email>BurdetteLamar@Yahoo.com</email>
</author>
<published>2025-08-26T18:27:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=6a2964d28cd49c674c0b23958f922ac914253dd1'/>
<id>6a2964d28cd49c674c0b23958f922ac914253dd1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>symbol.c: use `rb_gc_mark_and_move` over `rb_gc_location`</title>
<updated>2025-08-07T19:00:00+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>jean.boussier@gmail.com</email>
</author>
<published>2025-08-07T12:47:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=1986d775cdae6a0ab40a2528e2ec9b50e06eba70'/>
<id>1986d775cdae6a0ab40a2528e2ec9b50e06eba70</id>
<content type='text'>
The `p-&gt;field = rb_gc_location(p-&gt;field)` isn't ideal because it means all
references are rewritten on compaction, regardless of whether the referenced
object has moved. This isn't good for caches nor for Copy-on-Write.

`rb_gc_mark_and_move` avoid needless writes, and most of the time allow to
have a single function for both marking and updating references.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The `p-&gt;field = rb_gc_location(p-&gt;field)` isn't ideal because it means all
references are rewritten on compaction, regardless of whether the referenced
object has moved. This isn't good for caches nor for Copy-on-Write.

`rb_gc_mark_and_move` avoid needless writes, and most of the time allow to
have a single function for both marking and updating references.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix off-by-one in symbol next_id</title>
<updated>2025-08-06T17:40:27+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2025-08-05T19:53:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=71b46938a7dd61304f012025e06891e8fe2e37fb'/>
<id>71b46938a7dd61304f012025e06891e8fe2e37fb</id>
<content type='text'>
Symbol last_id was changed to next_id, but it remained to be set to
tNEXT_ID - 1 initially, causing the initial static symbol to overlap with
the last built-in symbol in id.def.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Symbol last_id was changed to next_id, but it remained to be set to
tNEXT_ID - 1 initially, causing the initial static symbol to overlap with
the last built-in symbol in id.def.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix RUBY_FREE_AT_EXIT for static symbols</title>
<updated>2025-08-05T16:04:27+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2025-08-05T15:05:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=95320f1ddfd0d17ddad3c0a20b43636601b6bb55'/>
<id>95320f1ddfd0d17ddad3c0a20b43636601b6bb55</id>
<content type='text'>
Since static symbols allocate memory, we should deallocate them at shutdown
to prevent memory leaks from being reported with RUBY_FREE_AT_EXIT.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since static symbols allocate memory, we should deallocate them at shutdown
to prevent memory leaks from being reported with RUBY_FREE_AT_EXIT.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make static symbol ID atomic</title>
<updated>2025-07-31T15:09:03+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2025-07-28T13:36:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=6c24904a690eb7c4e20c3fa8c3751acc03454100'/>
<id>6c24904a690eb7c4e20c3fa8c3751acc03454100</id>
<content type='text'>
We don't need the VM lock if we make static symbol IDs atomic.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We don't need the VM lock if we make static symbol IDs atomic.
</pre>
</div>
</content>
</entry>
<entry>
<title>Get rid of ID_JUNK</title>
<updated>2025-07-28T10:22:42+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>jean.boussier@gmail.com</email>
</author>
<published>2025-07-28T09:18:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d488935910d8902e96ea5c49537506f0b2aba492'/>
<id>d488935910d8902e96ea5c49537506f0b2aba492</id>
<content type='text'>
It has been aliased as ID_INTERNAL for a long time and that alias
is much more descriptive.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It has been aliased as ID_INTERNAL for a long time and that alias
is much more descriptive.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove VM lock in register_static_symid</title>
<updated>2025-07-25T13:51:24+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2025-07-24T20:50:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=bd2d6845f1c48a572e202409367a4e756c4bb3c5'/>
<id>bd2d6845f1c48a572e202409367a4e756c4bb3c5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove VM lock for sym_find</title>
<updated>2025-07-25T13:51:24+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2025-07-24T20:42:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=42f95456cc51f3b59605c66a65cff19dfe1b3e59'/>
<id>42f95456cc51f3b59605c66a65cff19dfe1b3e59</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
