Issue #17369 has been updated by ioquatix (Samuel Williams).


We introduced experimental feature and implemented non-blocking hook for Ruby 3.

More work is required here, but we didn't make it in time for Ruby 3.0 - so we marked it as experimental.

We also need to implement `rb_f_system` in terms of `rb_process_status_wait`. Can someone else help with this?

----------------------------------------
Bug #17369: Introduce non-blocking `Process.wait`, `Kernel.system` and related methods.
https://bugs.ruby-lang.org/issues/17369#change-89529

* Author: ioquatix (Samuel Williams)
* Status: Assigned
* Priority: Normal
* Assignee: ioquatix (Samuel Williams)
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
https://github.com/ruby/ruby/pull/3853

This PR introduces optional hooks to the scheduler interface for handling `Process.wait`, `Kernel.system` and other related methods (`waitpid`, `wait2`, etc).

It funnels all methods through a new interface `Process::Status.wait` which is almost identical to `Process.wait` except for several key differences:

- The return value is a single instance of `Process::Status`.
- It does not set thread local `$?`.

This is necessary for keeping the scheduler interface simple (and side effects are generally bad anyway).



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>