<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/internal/hash.h, 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>Optimized instruction for Hash#freeze</title>
<updated>2024-09-05T10:46:02+00:00</updated>
<author>
<name>Étienne Barrié</name>
<email>etienne.barrie@gmail.com</email>
</author>
<published>2024-08-05T10:31:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=bf9879791af11a20e50921551220c08d1c7f7f02'/>
<id>bf9879791af11a20e50921551220c08d1c7f7f02</id>
<content type='text'>
If a Hash which is empty or only using literals is frozen, we detect
this as a peephole optimization and change the instructions to be
`opt_hash_freeze`.

[Feature #20684]

Co-authored-by: Jean Boussier &lt;byroot@ruby-lang.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If a Hash which is empty or only using literals is frozen, we detect
this as a peephole optimization and change the instructions to be
`opt_hash_freeze`.

[Feature #20684]

Co-authored-by: Jean Boussier &lt;byroot@ruby-lang.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add rb_hash_free for the GC to use</title>
<updated>2023-09-24T13:07:52+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2023-09-24T13:07:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=f43dac0df29c137ae966362f7faf26084468a0fb'/>
<id>f43dac0df29c137ae966362f7faf26084468a0fb</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Declare `RHASH_AR_TABLE` and `RHASH_ST_TABLE` return non-null</title>
<updated>2023-06-23T05:54:50+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2023-06-23T05:54:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=73529a12bbf5bb88b2596ca1169bd29dc75aa2e6'/>
<id>73529a12bbf5bb88b2596ca1169bd29dc75aa2e6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove RHASH_TRANSIENT_FLAG</title>
<updated>2023-06-08T14:42:59+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2023-06-08T14:42:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=441302be1add6f10a85ccbde551a0fb567c65a15'/>
<id>441302be1add6f10a85ccbde551a0fb567c65a15</id>
<content type='text'>
Hashes are no longer allocated on the transient heap.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Hashes are no longer allocated on the transient heap.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix crash when replacing ST hash with AR hash</title>
<updated>2023-05-23T19:27:56+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2023-05-23T17:45:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a86f798fc2e979ea83ec55744f906b2a816c8681'/>
<id>a86f798fc2e979ea83ec55744f906b2a816c8681</id>
<content type='text'>
With VWA, AR hashes are much larger than ST hashes. Hash#replace
attempts to directly copy the contents of AR hashes into ST hashes so
there will be memory corruption caused by writing past the end of memory.

This commit changes it so that if a ST hash is being replaced with an AR
hash it will insert each element into the ST hash.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With VWA, AR hashes are much larger than ST hashes. Hash#replace
attempts to directly copy the contents of AR hashes into ST hashes so
there will be memory corruption caused by writing past the end of memory.

This commit changes it so that if a ST hash is being replaced with an AR
hash it will insert each element into the ST hash.
</pre>
</div>
</content>
</entry>
<entry>
<title>Move ar_hint to ar_table_struct</title>
<updated>2023-05-17T13:19:40+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2023-04-19T20:16:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=cea9c30fa549885e36471f1782359df2bdcf895a'/>
<id>cea9c30fa549885e36471f1782359df2bdcf895a</id>
<content type='text'>
This allows Hashes with ST tables to fit int he 80 byte size pool.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows Hashes with ST tables to fit int he 80 byte size pool.
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement Hash ST tables on VWA</title>
<updated>2023-05-17T13:19:40+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2023-04-19T20:02:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0938964ba1af3924cf969fb809fc3598892bc20d'/>
<id>0938964ba1af3924cf969fb809fc3598892bc20d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement Hash AR tables on VWA</title>
<updated>2023-05-17T13:19:40+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2023-04-19T19:59:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5199f2aaf9527c97e6ec371e19748d0c2ac7a70e'/>
<id>5199f2aaf9527c97e6ec371e19748d0c2ac7a70e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Stop exporting symbols for MJIT</title>
<updated>2023-03-07T05:59:23+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2023-03-07T05:34:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=233ddfac541749a0da80ea27913dc1ef4ea700bb'/>
<id>233ddfac541749a0da80ea27913dc1ef4ea700bb</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement ObjectSpace::WeakKeyMap basic allocator</title>
<updated>2023-02-23T15:01:57+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>byroot@ruby-lang.org</email>
</author>
<published>2022-02-18T11:54:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2a5354e59324cb296a423c73ec15ff9191086964'/>
<id>2a5354e59324cb296a423c73ec15ff9191086964</id>
<content type='text'>
[Feature #18498]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[Feature #18498]
</pre>
</div>
</content>
</entry>
</feed>
