What's NEW:
Revamped pseudo console support. Conditionally activating it only when a non-cygwin application is run.
New C11 threads API: call_once, cnd_broadcast, cnd_destroy, cnd_init, cnd_signal, cnd_timedwait, cnd_wait, mtx_destroy, mtx_init, mtx_lock, mtx_timedlock, mtx_trylock, mtx_unlock, thrd_create, thrd_current, thrd_detach, thrd_equal, thrd_exit, thrd_join, thrd_sleep, thrd_yield, tss_create, tss_delete, tss_get, tss_set.
In cygwin console, new thread which handles special keys/signals such as Ctrl-Z (VSUSP), Ctrl- (VQUIT), Ctrl-S (VSTOP), Ctrl-Q (VSTART) and SIGWINCH has been introduced. There have been a long standing issue that these keys/signals are handled only when app calls read() or select(). Now, these work even if app does not call read() or select().
Fchmodat(2) now has limited support for the AT_SYMLINK_NOFOLLOW flag.
Cygwin now recognizes native Windows AF_UNIX sockets (as regular files, not as socket files). This allows tools like 'ls' and 'rm' to work.
What changed:
Allow ~5000 child processes per process on 64 bit, ~1200 child processes per process on 32 bit. So far, only 256 child processes per process were supported.
A few FAQ updates.
Have tmpfile(3) make use of Win32 FILE_ATTRIBUTE_TEMPORARY via open(2) flag O_TMPFILE.
Utilize Windows 10 1809 FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE flag to allow simpler unlink of files with DOS readonly flags set.
Getdtablesize(3), sysconf(_SC_OPEN_MAX), and getrlimit(RLIMIT_NOFILE) now return the true limit on the number of open descriptors, 3200. Previously they returned the current size of Cygwin's internal file descriptor table, which can grow
dynamically.
Facl(2) now fails with EBADF on a file opened with O_PATH.
Allow to start Windows Store executables via their "app execution aliases". Handle these aliases (which are special reparse points) as symlinks to the actual executables.
BUG FIXES:
Iterate at least 4 times over pthread_key_t destructors per POSIX.
The pthread_yield declaration in pthread is now visible by default or when defining _BSD_SOURCE, too.
Fix SEGV in modfl call.
Fix a collision of offical and internally used file flags.
Fix assertion failure on an invalid path under /proc/<pid>/fd/.
Fix crash on stat(2)'ing /dev/ptmx on 32 bit.
Fix return value of sqrtl on negative infinity.
Fix a path handling problem if there is a WSL symlink in PATH.
Fix a bug in fstatat(2) on 32 bit that could cause it to return garbage.
Fix the errno when a path contains .. and the prefix exists but is not a directory.
Fix the return value when ptsname_r(3) is called with a bad file descriptor
Addresses:
https://lists.gnu.org/archive/html/bug-gnulib/2021-01/msg00245.html Fix path handling in case the Cygwin installation dir is accessed via a Windows junction point.
Fix potential handle leaks when dup'ing descriptors
Fix a bug that could cause fstat(2) to return incorrect results on a FIFO.
Fix some system calls on AF_LOCAL sockets that are not socket files.
Fix access to block devices under /proc/sys.