Hi all,

I've updated the Io\Terminal RFC to version 0.5:

https://wiki.php.net/rfc/io_terminal

It adds examples for raw-mode leases and sequential reads, clarifies
lease restoration, escape-sequence timeouts, resize notifications, and
line endings, and marks enableRawMode() as NoDiscard.

The PR has been updated to match, and its CI checks are green:

https://github.com/php/php-src/pull/23941

As mentioned earlier, I'm holding off on voting while the discussion continues.

Regards,
Pratik

On Fri, 06 Nov 2026 02:43:52 -0800, Pratik Bhujel
<[email protected]> wrote:
> Hi Tim and Frode,
>
> Thanks for the review, and Frode, thanks for trying the PR in phasync/tui. 
> I’m holding off on opening the vote on November 12.
>
> Tim, your lease examples match the behavior. The last release restores the 
> saved terminal attributes on POSIX or the saved input mode on Windows. If the 
> terminal was already raw, that’s the state it restores, even if it was 
> changed while the lease was active. Dropping the last reference attempts to 
> release the lease. If explicit restoration fails, restoreMode() throws and 
> leaves the token active so the caller can retry. I’ve documented the 
> destruction behavior in the stub and added NoDiscard to enableRawMode().
>
> A longer sequence timeout is valid: the wait is capped at the remaining 
> overall time. readLine() returns the submitted value without the Enter 
> delimiter, like readSecret(), while preserving other whitespace. I’d keep 
> Key::Resize for now as a notification to query the size.
>
> Frode, it’s helpful to see raw mode and size used on their own. I’m keeping 
> the reads in this revision for small CLI tools that need portable key and 
> hidden input. On a native Windows console, readKey() reads console records. 
> The raw-mode lease leaves the existing VT settings alone, and Ctrl+C is 
> available as input. I agree that a richer decoder for modifiers, mouse and 
> paste deserves its own design.
>
> fromStreams(STDIN, STDOUT) covers the usual CLI case. fromStdio() resolves 
> the current native standard handles at operation time; fromStreams() keeps 
> the resources passed in.
>
> The patch is up at https://github.com/php/php-src/pull/23941. I’ve prepared 
> examples for the leases and sequential reads, and verified them with a Linux 
> PTY and a scripted stream. I’ll announce the RFC revision here once it’s 
> published, before proposing a new voting date.
>
> Regards,
> Pratik
>
>
>
>
>
> On Fri, 06 Nov 2026 09:21:48 +0000, Pratik Bhujel <[email protected]> 
> wrote:
>
>
> > Hi all, I plan to open voting on the Io\Terminal RFC on Thursday, November 
> > 12. <https://wiki.php.net/rfc/io_terminal> If you have any remaining 
> > concerns, please let me know before then. Regards, Pratik

Reply via email to