Skip to content

[pull] master from ruby:master#1179

Merged
pull[bot] merged 1 commit into
turkdevops:masterfrom
ruby:master
Jul 4, 2026
Merged

[pull] master from ruby:master#1179
pull[bot] merged 1 commit into
turkdevops:masterfrom
ruby:master

Conversation

@pull

@pull pull Bot commented Jul 4, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

rb_postponed_job_trigger_for_ractor(h, running_ractor) runs a
preregistered postponed job on running_ractor rather than on the
caller's or the main Ractor: the handle's bit is set in a per-Ractor
atomic mask and a POSTPONED_JOB interrupt is posted to the Ractor's
running EC (or its main thread's EC before it starts running);
whichever of the target's threads next checks interrupts drains the
mask in rb_postponed_job_flush alongside the VM-global bitset.

Delivery is trap-style lazy, like rb_postponed_job_trigger:

* the target is not woken out of a blocking call (no unblock
  function); a blocked Ractor picks the job up at its next natural
  safepoint,
* jobs targeted at a Ractor that exits before checking them are
  simply discarded with it,
* across fork(2), jobs that targeted the forking Ractor survive into
  the child (it is the child's main Ractor now); jobs for any other
  Ractor are discarded.

The function is internal (declared in vm_core.h) and exported only
for ext/-test-/postponed_job for now; the first planned user is
per-Ractor GC (handing a terminated Ractor's objspace over to the
main Ractor by a main-targeted job). Promoting it to the public C
API can be discussed separately.
@pull pull Bot locked and limited conversation to collaborators Jul 4, 2026
@pull pull Bot added the ⤵️ pull label Jul 4, 2026
@pull pull Bot merged commit e700111 into turkdevops:master Jul 4, 2026
1 of 3 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant