Polling API additions proposal
Under discussion. The RFC page (version 1.0, dated 2026-09-29, author Jakub Zelenka) reads Under
Discussion, as does the official RFC index collected on 11 October. It follows
the Polling API RFC, which added the Io\Poll namespace to PHP 8.6.
The proposal extends the polling surface with weak handles, socket handles, generic timer/signal/process/notification handles, and priority events.
The weak-handle design addresses event loops unintentionally keeping resources alive. The broader handle set provides integration points for the related IO hooks work. These are proposed changes: a description in an RFC is not evidence of release availability.
Discussion
On 11 October Tim Düsterhus posted a 15-point review, mostly framed as questions. Among them:
- They agreed with an earlier suggestion by Ilia to split the RFC into several separately voted parts, as was done for the PHP 8.6 URI follow-up.
- They asked whether separate weak handle classes are needed, or whether something like
new StreamPollHandle(WeakReference::create($stream))would avoid duplicating every handle. - They questioned the name and namespace of
TimerHandle, suggesting a sub-namespace (as withRandom\Engine) or a standaloneIo\Timer, and asked whether its timeout and periodic flag should be readonly properties. - For
ProcessHandle, they suggested aproc_get_poll_handle()-style function instead of tying the class toproc_open()resources, in case a new process API is added later. - They asked for the
Context::onWatcherRemoved()callback signature, an ecosystem impact note (for example ReactPHP), and clarification of whetherSignalHandleis limited to the CLI only in thread-safe builds.
No author reply had been collected by 04:01 UTC on 12 October.
Proposed ballot
As read in full on 12 October, the page proposes a single question, "Should the Polling API additions be
added to PHP?", with Yes/No/Abstain options and a 2/3 majority; the vote dates are placeholders
(2026-XX-XX), so no vote has been scheduled. The split into separately voted parts suggested on the list
is not reflected on the page. The proposed version is "Next minor version, PHP 8.7". The page says a
working implementation is part of the IO hooks pull request
php-src #23997 and will be extracted into its own pull request.
The changelog lists 1.0 (signal handles block signals only while watched; process handles no longer collect
the child) and 0.1 (initial draft).
Recheck the primary page for current scope, status and ballots. No vote result is inferred here.
Related: IO hooks, array shorthand.