<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/ractor.rb, 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>remove `Ractor::Selector` from Ruby level</title>
<updated>2023-12-15T16:00:01+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2023-12-15T09:25:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c9a9b8036c71974ab938a8bb3d6f095d4a318a8e'/>
<id>c9a9b8036c71974ab938a8bb3d6f095d4a318a8e</id>
<content type='text'>
`Ractor::Selector` is not approved by Matz so remove it from
Ruby-level.

The implementation is used by `Ractor.select` so most of implementation
was remaind and calling `rb_init_ractor_selector()`, `Ractor::Selector`
will be defined. I will provide `ractor-selector` gem to try it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
`Ractor::Selector` is not approved by Matz so remove it from
Ruby-level.

The implementation is used by `Ractor.select` so most of implementation
was remaind and calling `rb_init_ractor_selector()`, `Ractor::Selector`
will be defined. I will provide `ractor-selector` gem to try it.
</pre>
</div>
</content>
</entry>
<entry>
<title>`Ractor::Selector#empty?`</title>
<updated>2023-03-02T15:08:02+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2023-03-02T09:27:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5875fce6ce678c444456cc7eed6f28ef000dac24'/>
<id>5875fce6ce678c444456cc7eed6f28ef000dac24</id>
<content type='text'>
It returns the waiting set is empty or not.

Also add Ractor::Selector's tests.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It returns the waiting set is empty or not.

Also add Ractor::Selector's tests.
</pre>
</div>
</content>
</entry>
<entry>
<title>Rewrite Ractor synchronization mechanism</title>
<updated>2023-03-02T05:31:54+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2023-02-24T09:46:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a4421bd73c286253311c2cdf8c78ed258f8cff44'/>
<id>a4421bd73c286253311c2cdf8c78ed258f8cff44</id>
<content type='text'>
This patch rewrites Ractor synchronization mechanism, send/receive
and take/yield.

* API
  * Ractor::Selector is introduced for lightweight waiting
    for many ractors.
* Data structure
  * remove `struct rb_ractor_waiting_list` and use
    `struct rb_ractor_queue takers_queue` to manage takers.
  * remove `rb_ractor_t::yield_atexit` and use
    `rb_ractor_t::sync::will_basket::type` to check the will.
  * add `rb_ractor_basket::p.take` to represent a taking ractor.
* Synchronization protocol
  * For the Ractor local GC, `take` can not make a copy object
    directly so ask to generate the copy from the yielding ractor.
  * The following steps shows what `r1.take` does on `r0`.
    * step1: (r0) register `r0` into `r1`'s takers.
    * step2: (r0) check `r1`'s status and wakeup r0 if `r1` is waiting
             for yielding a value.
    * step3: (r0) sleep until `r1` wakes up `r0`.
  * The following steps shows what `Ractor.yield(v)` on `r1`.
    * step1: (r1) check first takers of `r1` and if there is (`r0`),
             make a copy object of `v` and pass it to `r0` and
             wakes up `r0`.
    * step2: (r1) if there is no taker ractors, sleep until
             another ractor try to take.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch rewrites Ractor synchronization mechanism, send/receive
and take/yield.

* API
  * Ractor::Selector is introduced for lightweight waiting
    for many ractors.
* Data structure
  * remove `struct rb_ractor_waiting_list` and use
    `struct rb_ractor_queue takers_queue` to manage takers.
  * remove `rb_ractor_t::yield_atexit` and use
    `rb_ractor_t::sync::will_basket::type` to check the will.
  * add `rb_ractor_basket::p.take` to represent a taking ractor.
* Synchronization protocol
  * For the Ractor local GC, `take` can not make a copy object
    directly so ask to generate the copy from the yielding ractor.
  * The following steps shows what `r1.take` does on `r0`.
    * step1: (r0) register `r0` into `r1`'s takers.
    * step2: (r0) check `r1`'s status and wakeup r0 if `r1` is waiting
             for yielding a value.
    * step3: (r0) sleep until `r1` wakes up `r0`.
  * The following steps shows what `Ractor.yield(v)` on `r1`.
    * step1: (r1) check first takers of `r1` and if there is (`r0`),
             make a copy object of `v` and pass it to `r0` and
             wakes up `r0`.
    * step2: (r1) if there is no taker ractors, sleep until
             another ractor try to take.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix spelling (#7389)</title>
<updated>2023-02-27T17:56:06+00:00</updated>
<author>
<name>John Bampton</name>
<email>jbampton@users.noreply.github.com</email>
</author>
<published>2023-02-27T17:56:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2f7270c68150d9f49b48c8ff995f4f343d216cee'/>
<id>2f7270c68150d9f49b48c8ff995f4f343d216cee</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[DOC] Make changes to docs in ractor.rb (#7180)</title>
<updated>2023-01-29T01:01:49+00:00</updated>
<author>
<name>Luke Gruber</name>
<email>luke.gru@gmail.com</email>
</author>
<published>2023-01-29T01:01:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=4ffef59bb1c83b0e552b3e50b6bb1c1a34673d1c'/>
<id>4ffef59bb1c83b0e552b3e50b6bb1c1a34673d1c</id>
<content type='text'>
* Make changes to docs in ractor.rb

Mainly English changes to make things more clear, and to fix minor
non-idiomatic phrases. Also clarified difference between frozen and
shareable objects.

* More minor changes to Ractor docs.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Make changes to docs in ractor.rb

Mainly English changes to make things more clear, and to fix minor
non-idiomatic phrases. Also clarified difference between frozen and
shareable objects.

* More minor changes to Ractor docs.</pre>
</div>
</content>
</entry>
<entry>
<title>[Bug #19081] Show the caller location in warning for Ractor</title>
<updated>2022-10-26T10:43:14+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2022-10-26T10:43:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=131c31a9209c61f84d318aa18b61f468f48b8219'/>
<id>131c31a9209c61f84d318aa18b61f468f48b8219</id>
<content type='text'>
The internal location in ractor.rb is not usefull at all.
```
$ ruby -e 'Ractor.new {}'
&lt;internal:ractor&gt;:267: warning: Ractor is experimental, ...
```</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The internal location in ractor.rb is not usefull at all.
```
$ ruby -e 'Ractor.new {}'
&lt;internal:ractor&gt;:267: warning: Ractor is experimental, ...
```</pre>
</div>
</content>
</entry>
<entry>
<title>[DOC] Correct article of Ractor's introduction [ci skip]</title>
<updated>2022-08-28T07:27:11+00:00</updated>
<author>
<name>Felix Yan</name>
<email>felixonmars@archlinux.org</email>
</author>
<published>2022-08-28T07:27:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=1486ffe03913076889290e38d86a7bdaca4e6fbd'/>
<id>1486ffe03913076889290e38d86a7bdaca4e6fbd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix conversion of `rb_ractor_id()`</title>
<updated>2022-07-28T14:46:07+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2022-07-27T15:31:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=94c3d528e7d1dc86ecafc6b992f16d062a17f015'/>
<id>94c3d528e7d1dc86ecafc6b992f16d062a17f015</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[DOC] Fix broken links [ci skip]</title>
<updated>2021-09-15T05:16:14+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2021-09-15T00:39:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a27c274f0476fa270b9e2f5d4f4ec36bd8c0b61a'/>
<id>a27c274f0476fa270b9e2f5d4f4ec36bd8c0b61a</id>
<content type='text'>
* As the "doc/" prefix is specified by the `--page-dir` option,
  remove from the rdoc references.
* Refer to the original .rdoc instead of the converted .html.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* As the "doc/" prefix is specified by the `--page-dir` option,
  remove from the rdoc references.
* Refer to the original .rdoc instead of the converted .html.
</pre>
</div>
</content>
</entry>
<entry>
<title>Replace RBOOL macro</title>
<updated>2021-09-05T14:01:27+00:00</updated>
<author>
<name>S-H-GAMELINKS</name>
<email>gamelinks007@gmail.com</email>
</author>
<published>2021-08-31T11:30:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=bdd6d8746f0a07b2c0cc3a6b387bf594569c0bb7'/>
<id>bdd6d8746f0a07b2c0cc3a6b387bf594569c0bb7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
