<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/include/ruby/fiber, 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>Fewer calls to `GET_EC()` and `GET_THREAD()` (#15506)</title>
<updated>2025-12-12T19:47:43+00:00</updated>
<author>
<name>Luke Gruber</name>
<email>luke.gruber@shopify.com</email>
</author>
<published>2025-12-12T19:47:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=3add3db797c4216423fdaa4bef6e2ee3c7630303'/>
<id>3add3db797c4216423fdaa4bef6e2ee3c7630303</id>
<content type='text'>
The changes are to `io.c` and `thread.c`.
I changed the API of 2 exported thread functions from `internal/thread.h` that
didn't look like they had any use in C extensions:

* rb_thread_wait_for_single_fd
* rb_thread_io_wait

I didn't change the following exported internal function because it's
used in C extensions:

* rb_thread_fd_select

I added a comment to note that this function, although internal, is used
in C extensions.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The changes are to `io.c` and `thread.c`.
I changed the API of 2 exported thread functions from `internal/thread.h` that
didn't look like they had any use in C extensions:

* rb_thread_wait_for_single_fd
* rb_thread_io_wait

I didn't change the following exported internal function because it's
used in C extensions:

* rb_thread_fd_select

I added a comment to note that this function, although internal, is used
in C extensions.</pre>
</div>
</content>
</entry>
<entry>
<title>Yield to scheduler if interrupts are pending. (#14700)</title>
<updated>2025-12-06T08:44:14+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2025-12-06T08:44:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=42f5654b69244b5892ff2c2eba8d838064d2cd9f'/>
<id>42f5654b69244b5892ff2c2eba8d838064d2cd9f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix `blocking_operation_wait` use-after-free bug.</title>
<updated>2025-06-06T04:13:16+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@shopify.com</email>
</author>
<published>2025-06-05T03:49:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=ead14b19aa5acbdfb2f1ccc53cc7b8b34517b6e9'/>
<id>ead14b19aa5acbdfb2f1ccc53cc7b8b34517b6e9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Bump fiber scheduler version and add missing documentation. (#13424)</title>
<updated>2025-05-23T07:20:33+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2025-05-23T07:20:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=627a5ac53b8116d83ad63929c8510cae674f8423'/>
<id>627a5ac53b8116d83ad63929c8510cae674f8423</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Allow `IO#close` to interrupt IO operations on fibers using `fiber_interrupt` hook. (#12839)</title>
<updated>2025-05-23T05:55:05+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2025-05-23T05:55:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=73c9d6ccaa2045a011ed991dc29633bd0443971a'/>
<id>73c9d6ccaa2045a011ed991dc29633bd0443971a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Introduce `Fiber::Scheduler#blocking_operation_wait`. (#12016)</title>
<updated>2024-11-20T06:40:17+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2024-11-20T06:40:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9c268302bfb4890d3757caa60981802a88bfbd89'/>
<id>9c268302bfb4890d3757caa60981802a88bfbd89</id>
<content type='text'>
Redirect `rb_nogvl` blocking operations to the fiber scheduler if possible
to prevent stalling the event loop.

[Feature #20876]</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Redirect `rb_nogvl` blocking operations to the fiber scheduler if possible
to prevent stalling the event loop.

[Feature #20876]</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Introduce Fiber Scheduler `blocking_region` hook. (#11963)" (#12013)</title>
<updated>2024-11-06T09:19:40+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2024-11-06T09:19:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=3b9896acfcaf992ac233578ca8ec5bb69978de4a'/>
<id>3b9896acfcaf992ac233578ca8ec5bb69978de4a</id>
<content type='text'>
This reverts some of commit 87fb44dff6409a19d12052cf0fc07ba80a4c45ac.

We will rename and propose a slightly different interface.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts some of commit 87fb44dff6409a19d12052cf0fc07ba80a4c45ac.

We will rename and propose a slightly different interface.</pre>
</div>
</content>
</entry>
<entry>
<title>Introduce Fiber Scheduler `blocking_region` hook. (#11963)</title>
<updated>2024-10-31T04:26:37+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2024-10-31T04:26:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=87fb44dff6409a19d12052cf0fc07ba80a4c45ac'/>
<id>87fb44dff6409a19d12052cf0fc07ba80a4c45ac</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>IO::Buffer improvements and documentation. (#9329)</title>
<updated>2023-12-24T13:03:36+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2023-12-24T13:03:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=37753f163e461e157e6e224d9d3e5626427a50cc'/>
<id>37753f163e461e157e6e224d9d3e5626427a50cc</id>
<content type='text'>
* Restore experimental warnings.

* Documentation and code structure improvements.

* Improved validation of flags, clarified documentation of argument handling.

* Remove inconsistent use of `Example:` and add example to `null?`.

* Expose `IO::Buffer#private?` and add test.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Restore experimental warnings.

* Documentation and code structure improvements.

* Improved validation of flags, clarified documentation of argument handling.

* Remove inconsistent use of `Example:` and add example to `null?`.

* Expose `IO::Buffer#private?` and add test.</pre>
</div>
</content>
</entry>
<entry>
<title>Support `IO#pread` / `IO#pwrite` using fiber scheduler. (#7594)</title>
<updated>2023-03-30T11:48:55+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2023-03-30T11:48:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=648870b5c577239b3274b0b48c82fb74910dfabf'/>
<id>648870b5c577239b3274b0b48c82fb74910dfabf</id>
<content type='text'>
* Skip test if non-blocking file IO is not supported.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Skip test if non-blocking file IO is not supported.</pre>
</div>
</content>
</entry>
</feed>
