Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
b977622
Add Io\Terminal native terminal primitives
prateekbhujel Sep 26, 2026
bb4d1d6
Align terminal size behavior with RFC
prateekbhujel Sep 27, 2026
ef074a1
Test native-only terminal size lookup
prateekbhujel Sep 27, 2026
ca076e2
Update reflection test for Io Terminal classes
prateekbhujel Sep 27, 2026
d0e9bb9
Fix terminal size test namespace
prateekbhujel Sep 27, 2026
1e6a673
Address Io Terminal core review
prateekbhujel Sep 27, 2026
37be035
Harden terminal input and mode restoration
prateekbhujel Sep 27, 2026
1b666b5
Test terminal escape sequence handling
prateekbhujel Sep 27, 2026
c684f55
Preserve stream validation errors
prateekbhujel Sep 27, 2026
e826bab
Keep unsupported terminal sequences raw
prateekbhujel Sep 27, 2026
c5a5de9
Keep terminal sequence test within defined keys
prateekbhujel Sep 27, 2026
fd56ef7
Reset queued input before secret reads
prateekbhujel Sep 27, 2026
9a0ec24
Address terminal review feedback
prateekbhujel Sep 27, 2026
a62c87a
Address remaining terminal review feedback
prateekbhujel Sep 27, 2026
99500f2
Address follow-up terminal review feedback
prateekbhujel Sep 27, 2026
337395e
Fix terminal reflection test expectation
prateekbhujel Sep 27, 2026
1f2f138
Address terminal review feedback and fix macOS pty test
prateekbhujel Sep 27, 2026
3158d03
Harden Io\Terminal mode ownership, resize handling, and input validation
prateekbhujel Sep 28, 2026
e612f66
Fix SIGWINCH handler sentinel checks
prateekbhujel Sep 28, 2026
9eaaca4
Fix SIGWINCH handler sentinel checks
prateekbhujel Sep 28, 2026
031b797
Fix SIGWINCH handler sentinel checks
prateekbhujel Sep 28, 2026
7980ef8
Address Io\Terminal discussion feedback
prateekbhujel Sep 28, 2026
ae75619
Use shared raw-mode ownership for terminals
prateekbhujel Sep 28, 2026
c9a2813
Fix terminal_read_key_contracts expectation on Linux PTY EIO
prateekbhujel Sep 28, 2026
87edddc
Address Io\Terminal review feedback and harden terminal contracts
prateekbhujel Sep 28, 2026
6435ed6
Implement Io\Terminal mockable contracts, monotonic deadlines, and se…
prateekbhujel Sep 29, 2026
18b695f
Fix terminal timeout edge cases
prateekbhujel Sep 29, 2026
baeda5b
Stabilize readSecret PTY tests
prateekbhujel Sep 29, 2026
161defe
Address terminal review feedback
prateekbhujel Sep 29, 2026
10d653a
Keep braced terminal namespace
prateekbhujel Sep 29, 2026
e4792d8
Fix UTF-8 readKey timeout handling
prateekbhujel Sep 29, 2026
e760af0
Refine terminal contracts and add line input
prateekbhujel Sep 30, 2026
279010c
Fix Windows readLine console mode restore and UTF-8 conversion checks
prateekbhujel Sep 30, 2026
daba0cf
Handle Linux PTY master EIO as EOF during terminal readLine
prateekbhujel Sep 30, 2026
4ba14f4
Fix EAGAIN/EWOULDBLOCK compile portability in POSIX readLine
prateekbhujel Sep 30, 2026
58262cc
Fix stale token cleanup on readLine and increase UTF-8 retain timeout
prateekbhujel Sep 30, 2026
6925207
Clean restoreMode comment type names and assert no-arg stale restoreMode
prateekbhujel Sep 30, 2026
1fc4061
Wait for readability on EAGAIN in POSIX readLine to preserve submitte…
prateekbhujel Sep 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ Io\Poll\InactiveWatcherException
Io\Poll\InvalidHandleException
Io\Poll\PollException
Io\Poll\Watcher
Io\Terminal\Key
Io\Terminal\ModeToken
Io\Terminal\SystemModeToken
Io\Terminal\SystemTerminal
Io\Terminal\Terminal
Io\Terminal\TerminalException
Io\Terminal\TerminalSize
RoundingMode
SortDirection
StreamBucket
Expand Down
4 changes: 4 additions & 0 deletions ext/standard/basic_functions.c
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,7 @@ PHP_MINIT_FUNCTION(basic) /* {{{ */
BASIC_MINIT_SUBMODULE(standard_filters)
BASIC_MINIT_SUBMODULE(user_filters)
BASIC_MINIT_SUBMODULE(poll)
BASIC_MINIT_SUBMODULE(terminal)
BASIC_MINIT_SUBMODULE(password)
BASIC_MINIT_SUBMODULE(image)

Expand Down Expand Up @@ -378,6 +379,7 @@ PHP_MSHUTDOWN_FUNCTION(basic) /* {{{ */
BASIC_MSHUTDOWN_SUBMODULE(crypt)
BASIC_MSHUTDOWN_SUBMODULE(password)
BASIC_MSHUTDOWN_SUBMODULE(image)
BASIC_MSHUTDOWN_SUBMODULE(terminal)

return SUCCESS;
}
Expand Down Expand Up @@ -409,6 +411,7 @@ PHP_RINIT_FUNCTION(basic) /* {{{ */
PHP_RINIT(filestat)(INIT_FUNC_ARGS_PASSTHRU);
BASIC_RINIT_SUBMODULE(dir)
BASIC_RINIT_SUBMODULE(url_scanner_ex)
BASIC_RINIT_SUBMODULE(terminal)

/* Initialize memory for last http headers */
ZVAL_UNDEF(&BG(last_http_headers));
Expand Down Expand Up @@ -476,6 +479,7 @@ PHP_RSHUTDOWN_FUNCTION(basic) /* {{{ */

BASIC_RSHUTDOWN_SUBMODULE(user_filters)
BASIC_RSHUTDOWN_SUBMODULE(browscap)
BASIC_RSHUTDOWN_SUBMODULE(terminal)

/* Free last http headers */
zval_ptr_dtor(&BG(last_http_headers));
Expand Down
4 changes: 4 additions & 0 deletions ext/standard/basic_functions.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ PHP_MINFO_FUNCTION(basic);
ZEND_API void php_get_highlight_struct(zend_syntax_highlighter_ini *syntax_highlighter_ini);

PHP_MINIT_FUNCTION(poll);
PHP_MINIT_FUNCTION(terminal);
PHP_MSHUTDOWN_FUNCTION(terminal);
PHP_RINIT_FUNCTION(terminal);
PHP_RSHUTDOWN_FUNCTION(terminal);
PHP_MINIT_FUNCTION(user_filters);
PHP_RSHUTDOWN_FUNCTION(user_filters);
PHP_RSHUTDOWN_FUNCTION(browscap);
Expand Down
1 change: 1 addition & 0 deletions ext/standard/config.m4
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,7 @@ PHP_NEW_EXTENSION([standard], m4_normalize([
incomplete_class.c
info.c
io_poll.c
io_terminal.c
iptc.c
levenshtein.c
libavifinfo/avifinfo.c
Expand Down
2 changes: 1 addition & 1 deletion ext/standard/config.w32
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ EXTENSION("standard", "array.c base64.c basic_functions.c browscap.c \
crypt_sha512.c php_crypt_r.c " + (TARGET_ARCH != 'arm64'? " crc32_x86.c" : "") + " \
datetime.c dir.c dl.c dns.c dns_win32.c exec.c \
file.c filestat.c formatted_print.c fsock.c head.c html.c image.c \
info.c io_poll.c iptc.c link.c mail.c math.c md5.c metaphone.c microtime.c \
info.c io_poll.c io_terminal.c iptc.c link.c mail.c math.c md5.c metaphone.c microtime.c \
net.c pack.c pageinfo.c quot_print.c soundex.c \
string.c scanf.c syslog.c type.c uniqid.c url.c var.c \
versioning.c assert.c strnatcmp.c levenshtein.c incomplete_class.c \
Expand Down
Loading
Loading