<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/darray.h, branch v3_3_11</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>Implement weak references in the GC</title>
<updated>2023-08-25T13:01:21+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2023-07-24T18:21:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=bfb395c620b811b4b3cb7d535d58721268af285d'/>
<id>bfb395c620b811b4b3cb7d535d58721268af285d</id>
<content type='text'>
[Feature #19783]

This commit adds support for weak references in the GC through the
function `rb_gc_mark_weak`. Unlike strong references, weak references
does not mark the object, but rather lets the GC know that an object
refers to another one. If the child object is freed, the pointer from
the parent object is overwritten with `Qundef`.

Co-Authored-By: Jean Boussier &lt;byroot@ruby-lang.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[Feature #19783]

This commit adds support for weak references in the GC through the
function `rb_gc_mark_weak`. Unlike strong references, weak references
does not mark the object, but rather lets the GC know that an object
refers to another one. If the child object is freed, the pointer from
the parent object is overwritten with `Qundef`.

Co-Authored-By: Jean Boussier &lt;byroot@ruby-lang.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add _without_gc functions to darray</title>
<updated>2023-08-25T13:01:21+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2023-07-24T14:42:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=633243958c1b19e7d934442e23ed3d7cc3d7691b'/>
<id>633243958c1b19e7d934442e23ed3d7cc3d7691b</id>
<content type='text'>
These functions manipulate darray without the possibility of triggering
GC, which is used for places that cannot trigger GC. These functions
crash when the allocation fails.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These functions manipulate darray without the possibility of triggering
GC, which is used for places that cannot trigger GC. These functions
crash when the allocation fails.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove unused code in darray.h</title>
<updated>2023-07-21T19:44:24+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2023-07-21T19:44:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=11deab7906bd12d3c706aa162cb082e8bccbd2a8'/>
<id>11deab7906bd12d3c706aa162cb082e8bccbd2a8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix spelling (#7405)</title>
<updated>2023-02-28T18:05:30+00:00</updated>
<author>
<name>John Bampton</name>
<email>jbampton@users.noreply.github.com</email>
</author>
<published>2023-02-28T18:05:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c43fbe4ebd2b519601f0b90ca98fa096799d3846'/>
<id>c43fbe4ebd2b519601f0b90ca98fa096799d3846</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove _with_gc functions in darray</title>
<updated>2022-05-03T13:07:39+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2022-05-02T18:45:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fe7c02c7444495679ff88f957c327b2d46c8e143'/>
<id>fe7c02c7444495679ff88f957c327b2d46c8e143</id>
<content type='text'>
darray was used in YJIT which required the functions to not trigger GC.
YJIT has now moved to Rust and does not use darray anymore, so we can
remove the functions that don't trigger GC and only keep the ones that
trigger GC.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
darray was used in YJIT which required the functions to not trigger GC.
YJIT has now moved to Rust and does not use darray anymore, so we can
remove the functions that don't trigger GC and only keep the ones that
trigger GC.
</pre>
</div>
</content>
</entry>
<entry>
<title>Change feature_index from fake Array to darray</title>
<updated>2022-02-16T14:50:29+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2022-02-15T14:57:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=969ad5802dfe60c254f2f30514233b05ece8049c'/>
<id>969ad5802dfe60c254f2f30514233b05ece8049c</id>
<content type='text'>
Using a fake (malloc) RArray is not friendly for the garbage
collector. Fake RArray does not have a heap page, so it causes Variable
Width Allocation to crash when we try to implement it on Arrays.

This commit changes feature_index from a RArray to a darray.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Using a fake (malloc) RArray is not friendly for the garbage
collector. Fake RArray does not have a heap page, so it causes Variable
Width Allocation to crash when we try to implement it on Arrays.

This commit changes feature_index from a RArray to a darray.
</pre>
</div>
</content>
</entry>
<entry>
<title>Change darray size to size_t and add functions that use GC malloc</title>
<updated>2022-02-16T14:50:29+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2022-02-15T14:55:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=71afa8164d40f18306fc2ee5a1ccc74f2926379b'/>
<id>71afa8164d40f18306fc2ee5a1ccc74f2926379b</id>
<content type='text'>
Changes size and capacity of darray to size_t to support more
elements.

Adds functions to darray that use GC allocation functions.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Changes size and capacity of darray to size_t to support more
elements.

Adds functions to darray that use GC allocation functions.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add rb_darray_clear() for Kevin. Fix some warnings.</title>
<updated>2021-10-20T22:19:40+00:00</updated>
<author>
<name>Maxime Chevalier-Boisvert</name>
<email>maxime.chevalierboisvert@shopify.com</email>
</author>
<published>2021-09-09T19:35:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=11599e5e1ebed485089a994753a9c3c79416c037'/>
<id>11599e5e1ebed485089a994753a9c3c79416c037</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Malloc branch entries (#112)</title>
<updated>2021-10-20T22:19:33+00:00</updated>
<author>
<name>Maxime Chevalier-Boisvert</name>
<email>maximechevalierb@gmail.com</email>
</author>
<published>2021-04-19T21:07:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0cc73ca2a9a2aa5276cd022be9891475a15ecee3'/>
<id>0cc73ca2a9a2aa5276cd022be9891475a15ecee3</id>
<content type='text'>
* Malloc branch entries

* Add ASM comment for stack overflow check

* WIP

* Fix branch GC code. Add rb_darray_remove_unordered().

* Fix block end_pos after branch rewriting. Remove dst_patched bits.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Malloc branch entries

* Add ASM comment for stack overflow check

* WIP

* Fix branch GC code. Add rb_darray_remove_unordered().

* Fix block end_pos after branch rewriting. Remove dst_patched bits.</pre>
</div>
</content>
</entry>
<entry>
<title>Remove trailing whitespaces</title>
<updated>2021-10-20T22:19:31+00:00</updated>
<author>
<name>Maxime Chevalier-Boisvert</name>
<email>maxime.chevalierboisvert@shopify.com</email>
</author>
<published>2021-03-11T19:15:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fe3bd570072b35e47e03ea23e2bc42a4d8a7681d'/>
<id>fe3bd570072b35e47e03ea23e2bc42a4d8a7681d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
