Bug Fixes:
- PR #69 - Fix make_slave_controlling_terminal() on Solaris/HP-UX to use
_open_tty() instead of IO::Tty->open(), ensuring STREAMS modules (ptem,
ldterm, ttcompat) are pushed via I_PUSH when the slave is opened for
controlling terminal setup. Parallel fix to the slave() method fix in
1.24.
- PR #74 - Fix Perl 5.40+ "Possible memory corruption: ioctl overflowed
3rd argument" warning in clone_winsize_from() and get_winsize(). Use
pack_winsize(0,0,0,0) to pre-allocate the ioctl buffer with SvCUR
matching sizeof(struct winsize) instead of an empty string.
- PR #76, PR #79 - Fix diagnostic warnings being silently suppressed when
callers use lexical "use warnings" (the modern standard since Perl 5.6).
$^W and PL_dowarn only fire under perl -w; replaced with
warnings::enabled() in IO::Tty and IO::Pty (PR #76) and ckWARN(WARN_IO)
in Tty.xs (PR #79).
- PR #77 - Fix file descriptor leak in IO::Pty when new_from_fd() fails
after pty_allocate() or _open_tty() returns raw C-level fds. Added
POSIX::close() calls on the raw fds before croaking at three sites in
new() and slave().
- PR #78 - Fix openpty() detection on Alpine Linux and other musl-based
systems where openpty() has moved from libutil into libc (glibc 2.34+).
Probe libc first before falling back to -lutil.
- PR #80 - Fix -Wsign-compare compiler warnings: change namebuflen
parameter type from int to size_t in open_slave() and allocate_pty()
to match the return type of strlcpy() and the size argument of snprintf().
- PR #81 - Fix spurious "_FORTIFY_SOURCE requires compiling with
optimization" warnings during configure probes when $Config{optimize}
(e.g. -Os) is separate from $Config{ccflags}. Include optimize flags in
all configure probe compilations.
- PR #84 - Fix header probes in Makefile.PL missing platform extension
defines (_GNU_SOURCE, _BSD_VISIBLE, etc.) that function probes already
included. Bare #includes could cause HAVE_PTY_H and similar to be unset
on strict POSIX systems even when the header exists.
Improvements:
- PR #86 - Use L<> instead of C<> for cross-module POD references in
Tty.pm and Pty.pm so MetaCPAN renders IO::Pty, IO::Handle, and IO::Stty
as clickable links.
Maintenance:
- PR #70 - Modernize POD in Tty.pm and Pty.pm: remove stale platform
version references (FreeBSD 4.4, OpenBSD 2.8, HPUX 10.20, Solaris 2.6),
replace defunct SourceForge/mailing list URLs with GitHub issue tracker.
- PR #73 - Modernize the try example script: add strict/warnings, my
declarations, 3-arg open, and lexical filehandles. The script is shipped
to CPAN and referenced in POD as the canonical usage example.
- PR #75 - Strengthen test coverage for set_raw() and winsize: verify all
termios flags set by cfmakeraw (iflag, oflag, PARENB, CSIZE, CS8, VMIN,
VTIME) and add a test for the unpack_winsize() length-validation croak.
- PR #85 - Update GitHub Actions to Node.js 24 versions: actions/checkout
v6, cross-platform-actions/action v1, perl-actions/install-with-cpm v2.
Required before GitHub forces Node.js 24 in June 2026.