<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/ractor.rb, branch v4.0.3</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>[DOC] Improve ractor class docs (grammar, code examples) (#15686)</title>
<updated>2025-12-22T18:22:01+00:00</updated>
<author>
<name>Luke Gruber</name>
<email>luke.gruber@shopify.com</email>
</author>
<published>2025-12-22T18:22:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=481f16f3f1298c8962bdbc97f6c1eff9df90002a'/>
<id>481f16f3f1298c8962bdbc97f6c1eff9df90002a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update ArgumentError message for Ractor.select</title>
<updated>2025-12-19T00:47:35+00:00</updated>
<author>
<name>John Hawthorn</name>
<email>john@hawthorn.email</email>
</author>
<published>2025-12-18T23:48:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0c4fcdff3252cca0d50986fc5b54a41bff809c85'/>
<id>0c4fcdff3252cca0d50986fc5b54a41bff809c85</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[DOC] Update ractor.rb docs</title>
<updated>2025-12-18T23:59:49+00:00</updated>
<author>
<name>John Hawthorn</name>
<email>john@hawthorn.email</email>
</author>
<published>2025-12-18T23:48:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=535233c68c30546c81d22694fa3f5911d74c14b6'/>
<id>535233c68c30546c81d22694fa3f5911d74c14b6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[DOC] small improvements to ractor class docs (#15584)</title>
<updated>2025-12-18T20:08:36+00:00</updated>
<author>
<name>Luke Gruber</name>
<email>luke.gruber@shopify.com</email>
</author>
<published>2025-12-18T20:08:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a7eb1879ad35a0b5d9d32fcdbf2f840bd2c8858c'/>
<id>a7eb1879ad35a0b5d9d32fcdbf2f840bd2c8858c</id>
<content type='text'>
* Ractor.yield no longer exists
* Ractor.shareable_proc returns a copy of the given proc
* Improve wording for monitoring/unmonitoring ports</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Ractor.yield no longer exists
* Ractor.shareable_proc returns a copy of the given proc
* Improve wording for monitoring/unmonitoring ports</pre>
</div>
</content>
</entry>
<entry>
<title>Update Ractor warning message</title>
<updated>2025-12-11T00:01:27+00:00</updated>
<author>
<name>John Hawthorn</name>
<email>john@hawthorn.email</email>
</author>
<published>2025-12-10T21:13:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5828872ec4814a5a07f5f4c7686c543127619197'/>
<id>5828872ec4814a5a07f5f4c7686c543127619197</id>
<content type='text'>
Although the Ractor API is still experimental and may change, and there
may be some implementation issues, we should no longer say that there
are many.

Hopefully we can remove this warning entirely for Ruby 4.1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Although the Ractor API is still experimental and may change, and there
may be some implementation issues, we should no longer say that there
are many.

Hopefully we can remove this warning entirely for Ruby 4.1
</pre>
</div>
</content>
</entry>
<entry>
<title>fix typo s/sharable/shareable/</title>
<updated>2025-12-04T18:10:50+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2025-12-04T17:40:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2aaea665bb19be8ed64605ec9aa5c990fddbd2ce'/>
<id>2aaea665bb19be8ed64605ec9aa5c990fddbd2ce</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Ractor.store_if_absent should not warn</title>
<updated>2025-12-04T08:15:42+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2025-12-04T05:29:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=f8231dacd570e8c96c385fb9691719756b1dbc7d'/>
<id>f8231dacd570e8c96c385fb9691719756b1dbc7d</id>
<content type='text'>
```ruby
$VERBOSE = true

Ractor.store_if_absent :key do
end #=&gt; warning: the block passed to 'Ractor.store_if_absent' defined at &lt;internal:ractor&gt;:474 may be ignored
```
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
```ruby
$VERBOSE = true

Ractor.store_if_absent :key do
end #=&gt; warning: the block passed to 'Ractor.store_if_absent' defined at &lt;internal:ractor&gt;:474 may be ignored
```
</pre>
</div>
</content>
</entry>
<entry>
<title>Ractor.shareable_proc</title>
<updated>2025-09-23T18:59:03+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2025-07-17T06:38:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=55b1ba3bf276ba82173bd961fb8e0f08bf4182a6'/>
<id>55b1ba3bf276ba82173bd961fb8e0f08bf4182a6</id>
<content type='text'>
call-seq:
  Ractor.sharable_proc(self: nil){} -&gt; sharable proc

It returns shareable Proc object. The Proc object is
shareable and the self in a block will be replaced with
the value passed via `self:` keyword.

In a shareable Proc, the outer variables should
* (1) refer shareable objects
* (2) be not be overwritten

```ruby
  a = 42
  Ractor.shareable_proc{ p a }
  #=&gt; OK

  b = 43
  Ractor.shareable_proc{ p b; b = 44 }
  #=&gt; Ractor::IsolationError because 'b' is reassigned in the block.

  c = 44
  Ractor.shareable_proc{ p c }
  #=&gt; Ractor::IsolationError because 'c' will be reassigned outside of the block.
  c = 45

  d = 45
  d = 46 if cond
  Ractor.shareable_proc{ p d }
  #=&gt; Ractor::IsolationError because 'd' was reassigned outside of the block.
```

The last `d`'s case can be relaxed in a future version.

The above check will be done in a static analysis at compile time,
so the reflection feature such as `Binding#local_varaible_set`
can not be detected.

```ruby
  e = 42
  shpr = Ractor.shareable_proc{ p e } #=&gt; OK
  binding.local_variable_set(:e, 43)
  shpr.call #=&gt; 42 (returns captured timing value)
```

Ractor.sharaeble_lambda is also introduced.
[Feature #21550]
[Feature #21557]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
call-seq:
  Ractor.sharable_proc(self: nil){} -&gt; sharable proc

It returns shareable Proc object. The Proc object is
shareable and the self in a block will be replaced with
the value passed via `self:` keyword.

In a shareable Proc, the outer variables should
* (1) refer shareable objects
* (2) be not be overwritten

```ruby
  a = 42
  Ractor.shareable_proc{ p a }
  #=&gt; OK

  b = 43
  Ractor.shareable_proc{ p b; b = 44 }
  #=&gt; Ractor::IsolationError because 'b' is reassigned in the block.

  c = 44
  Ractor.shareable_proc{ p c }
  #=&gt; Ractor::IsolationError because 'c' will be reassigned outside of the block.
  c = 45

  d = 45
  d = 46 if cond
  Ractor.shareable_proc{ p d }
  #=&gt; Ractor::IsolationError because 'd' was reassigned outside of the block.
```

The last `d`'s case can be relaxed in a future version.

The above check will be done in a static analysis at compile time,
so the reflection feature such as `Binding#local_varaible_set`
can not be detected.

```ruby
  e = 42
  shpr = Ractor.shareable_proc{ p e } #=&gt; OK
  binding.local_variable_set(:e, 43)
  shpr.call #=&gt; 42 (returns captured timing value)
```

Ractor.sharaeble_lambda is also introduced.
[Feature #21550]
[Feature #21557]
</pre>
</div>
</content>
</entry>
<entry>
<title>remove `Ractor#take`</title>
<updated>2025-09-01T08:34:41+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2025-09-01T07:59:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=f9bffff3d4b45d4c6fed42f13d556c520f3cfd67'/>
<id>f9bffff3d4b45d4c6fed42f13d556c520f3cfd67</id>
<content type='text'>
[Feature #21262]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[Feature #21262]
</pre>
</div>
</content>
</entry>
<entry>
<title>[DOC] Fill undocumented documents</title>
<updated>2025-08-03T17:23:43+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2025-08-03T17:23:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=6179cc011829b9e4c7b253ac2d2a3f47d8fd6890'/>
<id>6179cc011829b9e4c7b253ac2d2a3f47d8fd6890</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
