Revision history for POSIX::2008. 0.28 2026-07-24 - Handle some non-constant C macros (e.g. on Solaris). - Check for math functions not available on older FreeBSD releases. - t/09_time.t: Check only strptime() values set in the format string. - Small POD fixes. 0.27 2026-07-22 - This module now also covers POSIX.1 editions after 2008. - Math functions use quadmath or long doubles if enabled and available. - Added work-around for Bessel functions bricked by MinGW with C99 and later. - Added fabs(), frexp(), lrint(), pow(), rint(), sqrt(), pause(), posix_openpt(), grantpt(), unlockpt(). - Added, among others, *LONG_(MAX|MIN) constants. These are strings when outside the UV/IV range (addresses GH#13406). - Added :errno_h export tag and all POSIX errno constants. - Added a bunch of constants new in POSIX.1-2024. - Added some interfaces new in POSIX.1-2024: * getentropy() * getresgid(), getresuid(), setresgid(), setresuid() * mkostemp() * ppoll() * strptime() supports tm_gmtoff and tm_zone. - confstr() no longer returns the trailing NUL byte. - lround(), remainder(), remquo() no longer return undef/empty on error. - writev(), pwritev(), pwritev2() accept array refs as buffer elements. - openat() allows dirfd to be a reference to an NV or PV, not only IV. - @EXPORT_OK now only includes symbols actually available. - Added some happy little tests. 0.26 2025-07-25 - _readv50c(): Use SVt_RV for sv_upgrade() w/ Perl < 5.12 to please DEBUGGING. - poll(): * Initialize events with 0 for placeholders. * Safeguard against nasty threads when writing back revents. - clock_nanosleep(), clock_[gs]ettime(), nanosleep(): * Better float detection. * Invoke SvGETMAGIC() on SV* argument. - timer_create(): Invoke SvGETMAGIC() on SV* argument. - POD "fixes" (POD doesn't have forced line breaks ...). 0.25 2025-07-12 - Updated ppport.h to version 3.73. - Added poll(), psignal(), strsignal(), statvfs(). - Added :poll export tag. - Added TIMER_ABSTIME to the :clock export tag. - Added t/07_poll.t. - Fixed skip count in t/03_rw.t. - Fixed clock_getcpuclockid() to set errno on error. - clock_getcpuclockid() defaults to pid=0 instead of $$, saving a redundant call to PerlProc_getpid(). - clock_getres(), clock_gettime() return floating seconds in scalar context. - clock_settime(), clock_nanosleep(), nanosleep() also accept floating seconds. - POD updates. 0.24 2024-06-14 - Updated ppport.h to version 3.72. - Cope w/ env change during iteration in _execve50c(). - Flush I/O buffers before calling fexecve()/execveat(). - Support magic function arguments. - Support arrayref argument for strptime() (addresses RT#66519). - Call readlinkat() for readlink() if available to avoid a branch. - Don't write to SvPV(sv)[SvLEN(sv)-1], otherwise Perl >= 5.20 tends to segfault because it abuses this char for COW counting. [facepalm.gif] - Adjusted some prototypes: clock_nanosleep($$@), clock_settime($@), futimens($@), nanosleep(@), setitimer($@), timer_settime($$@), utimensat($$;$@). - POD updates. 0.23 2024-01-27 - t/06_exec.t: Skip fexecve test if we can't sysopen() the Perl executable. - Removed silly fileno int range check added in 0.22 because AT_FDCWD is 0xffd19553 on Solaris. 0.22 2024-01-26 - Fixed confstr() error handling. - Fixed getutx*() out-of-bounds read from utmpx string buffers. - Fixed ptsname() and ttyname() to also accept file handles. - Fixed read*() and pread*() to not overwrite read-only buffers. - Fixed catclose(), dlclose(), killpg(), set*gid(), set*uid(), sig*() to return "0 but true" on success and undef on error as documented. - Forbid negative byte counts in read*(), pread*(), write(), pwrite(). - Added home-grown non-standard removeat(). - Added creat(), execveat(), fexecve(), raise(). - Added pathconf(), sysconf() and tons of _CS_, _PC_, _SC_ constants. - Added :confstr, :pathconf, :sysconf export tags. - Added some non-standard constants. - Added t/06_exec.t. - Made timer_create()'s "signal" argument optional. - Made lchown(), log10(), nexttoward(), posix_f*() exportable. - Bless returned file handles into IO::Dir/File to make handle methods work. - t/02_fs.t: Skip dev/ino/rdev stat() checks on Windows w/ Perl 5.34+ to fake cpantesters green lights (see perl5340delta). - POD updates. 0.21 2023-11-16 - Replaced FMT_UINT macro by function. - Replaced safesysfree() by free() in realpath() (closes RT#149058). - Added non-standard renameat2(), RENAME_* constants. - POD fixes. 0.20 2023-07-14 - t/02_fs.t: Added work-around for bugs in CORE::stat(). - Pimped abs(). - Fixed nice() error handling. - Added PRIO_*, FE_*, RWF_*, SEEK_DATA and SEEK_HOLE constants. - Added some non-standard open() flags. - Added preadv2(), pwritev2(). - Added remquo(). - Added feclearexcept(), feraiseexcept(), fetestexcept(). - Added isgreaterequal(), isless(), islessequal(), islessgreater(), isunordered(). - Added fenv_h export tag. - POD improvements. 0.19 2023-07-07 - Updated ppport.h to version 3.71 - Replaced av_len()+1 by av_count() in (p)readv() and (p)writev(). - Removed "extern int getdate_err" because it's already in time.h. - Try to get a green light from dubious cpantesters reports for old Perls. - Added LICENSE to WriteMakefile(). - Added stat_h export tag and some constants. - Added exp(), isascii(), rmdir(), setsid(), sin(), ttyname(). - Made casin(), isalnum(), log() exportable. - chdir(), chmod(), chown(), truncate() and stat() now also accept a file handle or a file descriptor. - Deprecated atol(), atoll(), ldiv(), fchdir(), fchmod(), fchown(), ftruncate(). - Pimped atoi(), div(), lround(). - Figure out what's available by compiling some C code. - Added some tests. - Small POD fixes. 0.18 2023-06-01 - Updated ppport.h to version 3.68 - Fixed size checking in readlink(). - Fixed error handling of psx_fileno(): Check for -1 instead of < 0 to make AT_FDCWD work (which is negative). - Disabled -Wdeprecated-declarations for sig*(). - Makefile.PL now creates const-c.inc and const-xs.inc dynamically. - openat() can now optionally return a handle when AT_FDCWD is used. - Added realpath(). - Added openat2() (non-POSIX). - POD improvements. 0.17 2021-03-09 - Updated ppport.h to version 3.62 (closes RT#127900) - pread()/pwrite(): Use %lld in warn() format string (closes RT#127902) - Some minor cosmetics. 0.16 2017-09-15 - Added timer_create(), timer_delete(), timer_gettime(), timer_getoverrun(), timer_settime(). - Added close() (closes RT#123054). 0.15 2017-09-10 - Fixed a POD error. - Really fake green lights on cygwin. 0.14 2017-09-09 - Added posix_fadvise() and posix_fallocate(). - Added missing constants from fcntl.h. - POD update. - Fake some green lights on cygwin. 0.13 2017-09-08 - pread/pwrite argument order is now (count, offset) instead of (offset, count). - Added readv(), preadv(). - Added strptime() to the list of exportable functions. 0.12 2017-09-03 - Fixed missing semicolon in #if branch of nearbyint(). - Added some CLOCK_ constants. - Added const-c.inc, const-xs.c. 0.11 2017-09-02 - Don't call clog() if you mean cexp() ... 0.10 2017-09-02 - Added more detailed checks for availability of complex functions. - NetBSD seems a bit special about struct stat. 0.09 2017-09-01 - Added some cheats to make some red lights turn to green on cpantesters. - Fixed a POD typo. 0.08 2017-08-31 - Added writev(), pwritev(), lchown(), lround(), clock(), access(). 0.07 2017-08-27 - Call croak_xs_usage() only if available. - Really let all I/O functions accept file handles. - Try to reduce compiler errors on non-Linux systems. 0.06 2017-08-26 - Fixed an fd leak in fdopendir() and openat() (see Ye Olde Perl #59268). XS docs are really poor. - Cleaned up openat(). - Dropped Perl 5.10 dependency. 0.05 2017-08-25 - Added fdopen() and fdopendir(). - All I/O functions taking file descriptors now accept file handles as well. - Fixed pread() to truncate the buffer if the data doesn't exceed it. 0.04 2015-05-25 - Fixed _readlink50c (#96644). 0.03 2013-09-15 - check SvGROW for NULL - use shorter mPUSH macros 0.02 2013-09-14 - added strptime() 0.01 2013-09-13 - initial version