What's new: ----------- - New API call: getlocalename_l. - New API calls: fdclosedir, posix_getdents. - New API call: setproctitle. - New API call: timespec_get. - New API calls: tcgetwinsize, tcsetwinsize. - New POSIX-defined entry points posix_spawn_file_actions_addchdir and posix_spawn_file_actions_addfchdir. These are the same as the already exported posix_spawn_file_actions_addchdir_np and posix_spawn_file_actions_addfchdir_np. - Add FS_IOC_[GS]ETFLAGS FS_PINNED_FL and FS_UNPINNED_FL flags to handle Windows attributes FILE_ATTRIBUTE_PINNED and FILE_ATTRIBUTE_UNPINNED. Add matching 'p' and 'u' mode bits in chattr(1) and lsattr(1). - New libaio.a provided for projects checking for POSIX aio support by looking for this library at configure time. - cygpath -r option allows to generate all Windows paths with root-local path prefix \\?\. What changed: ------------- - ps -f now prints the commandline rather than the full path to the executable. - Drop support for NT4 and Samba < 3.0.22. - Now that SMBv1 is ultimately deprecated and not installed by default on latest Windows versions, use Network Discovery (i. e. WSD, "Web Service Discovery") for enumerating network servers in //, just like Windows Explorer. - If "server" is given as FQDN, and if "server" is an NFS server, ls //server now also enumerates NFS shares. If "server" is given as a flat name, only SMB shares are enumerated. - Expose WebDav shares, //tsclient (Microsoft Terminal Services) shares as well as //wsl$ (Plan 9 Network Provider) shares, i. e., WSL installation root dirs. - Redesign pipe handling to minimize toggling blocking mode. The query_hdl stuff is no longer needed in new implementation. - Now using AVX/AVX2/AVX-512 instructions in signal handler does not break their context. - nice(2), setpriority(2) and sched_setparam(2) now fail with EACCES or EPERM if Windows would silently set a lower priority (HIGH_PRIORITY_CLASS instead of REALTIME_PRIORITY_CLASS) due to missing administrator privileges. - nice(2) now returns the new nice value instead of 0 on success and sets errno to EPERM instead of EACCES on failure. This confirms to POSIX and Linux (glibc >= 2.2.4) behavior. - sched_setscheduler(2) now emulates changes between SCHED_OTHER, SCHED_BATCH, SCHED_IDLE, SCHED_FIFO and SCHED_RR. If SCHED_OTHER or SCHED_BATCH is selected, the Windows priority is set according to the nice value where SCHED_BATCH sets a one step lower priority. If SCHED_IDLE is selected, the nice value is preserved and the Windows priority is set to IDLE_PRIORITY_CLASS. If SCHED_FIFO or SCHED_RR is selected, the nice value is preserved and the Windows priority is set according to the realtime priority. If the SCHED_RESET_ON_FORK flag is set, SCHED_FIFO and SCHED_RR are reset to SCHED_OTHER and negative nice values are reset to zero in each child process created with fork(2). Note: Windows does not offer alternative scheduling policies so this could only emulate API behavior. - If SCHED_FIFO or SCHED_RR is selected, the /proc//stat field '(18) priority' is now set to the negated sched_policy minus one. If SCHED_IDLE is selected, this field is set to 39. The '(19) nice' field is now set to the originally requested nice value. - Raise maximum pid from 65536 to 4194304 to account for scenarios with lots of CPUs and lots of tasks. Addresses: https://cygwin.com/pipermail/cygwin/2024-December/256927.html - Allow mmap with MAP_FIXED to succeed on an address range contained in the chunk of an existing anonymous mapping, provided the MAP_SHARED/MAP_PRIVATE flags agree and MAP_NORESERVE is not set for either mapping. Addresses: https://cygwin.com/pipermail/cygwin/2024-December/256901.html - Fix a long-standing hang issue when running on ARM64 under emulation. This was due to a thread being terminated while the emulation was holding an internal lock. Addresses: https://cygwin.com/pipermail/cygwin-developers/2024-May/012694.html - Add a host machine tag to uname(2)'s sysname field. This echoes what used to be done with -WOW64 (when that was supported), but now with -ARM64 when running on an ARM64 host under emulation. The Cygwin DLL's own architecture continues to be reported in the machine field. - Escape special characters in /proc//mount*. This allows the contents to be parsed consistently, and matches what is done on Linux. Addresses: https://cygwin.com/pipermail/cygwin/2024-June/256082.html - Expose all Windows volume mount points via getmntent(3). This also exposes them via /proc//mount*. A change in behavior from previous Cygwin versions is that volumes whose root is mounted explicitly in Cygwin will now also show up as mounted under the cygdrive prefix, whereas before that entry would have been suppressed. Addresses: https://cygwin.com/pipermail/cygwin/2024-June/256081.html Fixes: ------ - Fix an off-by-one bug in lseek(2)'s SEEK_DATA/SEEK_HOLE handling on filesystem-compressed files, potentially triggering a hang in cp(1). Addresses: https://sourceware.org/pipermail/cygwin/2025-January/257082.html https://cygwin.com/pipermail/cygwin/2025-February/257326.html