Cygwin Changelog

What's new in Cygwin 3.5.3

Apr 4, 2024
  • Fixes:
  • Fix the problem that console setup accesses shared memory which is already unmapped due to race condition. To avoid this issue, shared console memory will be kept mapped if it belongs to CTTY.
  • Fix a race issue between console open() and close() which is caused by state mismatch between con.owner and console attaching state.
  • Fix a problem that select() call for write-side of a pipe possibly hangs with non-cygwin reader.
  • Avoid recalling offline files if the file is not explicitely opened for reading or writing data.
  • Don't skip inadvertently some local SAM accounts on domain member machines.
  • Revert ill-advised optimization of glob(3) in case of caseinsensitive globbing.

New in Cygwin 3.5.1 (Feb 27, 2024)

  • Fix exit code for non-cygwin process running in console. The bug
  • was introduced in 3.5.0.
  • Make the interface names handled by if_nametoindex() and if_indextoname()
  • consistent with that of if_nameindex().
  • Revert error handling for non-Cygwin child processes to use Cygwin's
  • error mode by default. Resetting the error mode to the OS default
  • error mode is now possible by using the new CYGWIN environment variable
  • option "winjitdebug".
  • Addresses: https://cygwin.com/pipermail/cygwin/2024-February/255305.html
  • Fix handle leak in pty master which occurs when non-cygwin process
  • is started in pty.
  • Addresses: https://github.com/msys2/msys2-runtime/issues/198
  • Fix the problem that VMIN and VTIME does not work at all in console.
  • Fix a bug that cannot handle consoles more than 32, rather than 64.
  • Fix gettimeofday not checking for a NULL pointer
  • Addresses: https://cygwin.com/pipermail/cygwin/2024-February/255473.html
  • Fix two bugs in strptime, error checking of invalid numerical input and
  • %p handling.
  • Fix newgrp(1) group handling. Only allow groups already in the user
  • token, as Windows doesn't allow otherwise.
  • Fix getgrent enumeration of local SAM accounts on domain member machines.

New in Cygwin 3.5.0 (Feb 1, 2024)

  • Drop support for Windows 7, Windows 8, Server 2008 R2 and Server 2012.
  • Console devices (/dev/consN) are now accessible by processes attached to other consoles or ptys. Thanks to this new feature, GNU screen and tmux now work in the console.
  • Newgrp(1) tool.
  • Cygcheck has new options searching for available packages in the cygwin distro, as well as getting extended info on available and installed packages.
  • Fnmatch(3) and glob(3) now support named character classes, equivalence class expressions, and collating symbols in the search pattern, i.e., [:alnum:], [=a=], [.aa.].
  • Introduce /dev/disk directory with various by-* subdirectories which provide symlinks to disk and partition raw devices:
  • by-drive/DRIVE_LETTER -> ../../sdXN
  • by-label/VOLUME_LABEL -> ../../sdXN
  • by-id/BUSTYPE-[VENDOR_]PRODUCT_[SERIAL|0xHASH][-partN] -> ../../sdX[N]
  • by-partuuid/MBR_SERIAL-OFFSET -> ../../sdXN
  • by-partuuid/GPT_GUID -> ../../sdXN
  • by-uuid/VOLUME_SERIAL -> ../../sdXN
  • by-voluuid/MBR_SERIAL-OFFSET -> ../../sdXN
  • by-voluuid/VOLUME_GUID -> ../../sdXN
  • The subdirectories by-drive and by-voluuid are Cygwin specific.
  • Introduce /proc/codesets and /proc/locales with information on supported codesets and locales for all interested parties. Locale(1) opens these files and uses the info for printing locale info like any other process could do.
  • Add support for GB18030 codeset.
  • Add support for lseek flags SEEK_DATA and SEEK_HOLE, a GNU extension.
  • New API calls: posix_spawn_file_actions_addchdir_np, posix_spawn_file_actions_addfchdir_np.
  • New API calls: c8rtomb, c16rtomb, c32rtomb, mbrtoc8, mbrtoc16, mbrtoc32.
  • New API call: close_range (available on FreeBSD and Linux).
  • New API call: fallocate (Linux-specific).
  • Implement OSS-based sound mixer device (/dev/mixer).
  • Posix_spawnp no longer falls back to starting the shell for unrecognized files as execvp.
  • FIFOs now also work on NFS filesystems.
  • Enable automatic sparsifying of files on SSDs, independent of the "sparse" mount mode.
  • When RLIMIT_CORE is more than 1MB, a core dump file which can be loaded by gdb is now written on a fatal error. Otherwise, if it's greater than zero, a text format .stackdump file is written, as previously.
  • The default RLIMIT_CORE is now 0, disabling the generation of core dump or stackdump files.
  • Fix arc4random reseeding after fork(2).

New in Cygwin 3.4.10 (Jan 29, 2024)

  • Fix missing term in __cpuset_zero_s() prototoype in sys/cpuset.h.
  • Fix hang in process initialization if cwd is unreadable.
  • Let feraiseexcept actually raise an exception.
  • Make random(3) family of functions thread-safe.
  • Updates to profiler and gmondump: error display mechanics, buffer sizing, and output formatting.
  • Align behaviour of rand(3) to ISO C.
  • Fix posix_fallocate(3) return value in case of being called on other than regular files.
  • Reset sparseness in case open(2) has been called with O_CREAT|O_TRUNC on sparse files.

New in Cygwin 3.4.9 (Sep 6, 2023)

  • Bug Fixes:
  • Fix a bug introduced in cygwin 3.4.0 that switch_to_nat_pipe flag is not cleared properly when non-cygwin app is terminated in the case where pseudo console is not activated.
  • For the time being, disable creating special files using mknod/mkfifo on NFS.
  • Fix segfault when too many command line args are specified.
  • Fix build problems in terms of sys/cpuset.h.

New in Cygwin 3.4.8 (Aug 17, 2023)

  • Make <sys/cpuset.h> safe for c89 compilations.
  • Addresses: https://cygwin.com/pipermail/cygwin-patches/2023q3/012308.html
  • Make gcc-specific code in <sys/cpuset.h> compiler-agnostic.
  • Addresses: https://cygwin.com/pipermail/cygwin/2023-July/253927.html
  • Fix AT_EMPTY_PATH handling in fchmodat and fstatat if dirfd referres to
  • a file other than a directory
  • Addresses: https://cygwin.com/pipermail/cygwin-patches/2023q2/012306.html
  • Rename internal macros _NL_CTYPE_OUTDIGITSx_MB/WC to GLibc compatible
  • _NL_CTYPE_OUTDIGITx_MB/WC.
  • Addresses: https://cygwin.com/pipermail/cygwin-developers/2023-July/012637.html
  • Fix memory leak in printf() regarding gdtoa-based _ldtoa_r().
  • Addresses: https://cygwin.com/pipermail/cygwin/2023-July/254054.html
  • Fix a bug introduced in cygwin 3.4.5 that open_shared() does not set
  • access permissions as requested by its argument.

New in Cygwin 3.4.7 (Jun 16, 2023)

  • Bug Fixes:
  • Fix CPU_SET(3) macro type mismatch by making the macros type-safe.
  • Addresses https://cygwin.com/pipermail/cygwin/2023-March/253220.html
  • Kill(1): don't print spurious error message.
  • Addresses: https://cygwin.com/pipermail/cygwin/2023-March/253291.html
  • Align behaviour of dirname in terms of leading slashes to POSIX:
  • https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html
  • Fix reading CONIN$ in non cygwin apps when stdin is not a pty.
  • Addresses https://cygwin.com/pipermail/cygwin/2023-April/253424.html
  • Fix bug in cygheap allocation size computation after fork. Addresses:
  • https://cygwin.com/pipermail/cygwin-developers/2023-April/012620.html
  • Fix return value of ilogbl(NaN).
  • Addresses: https://cygwin.com/pipermail/cygwin/2023-April/253511.html
  • Fix error handling in readlinkat.
  • Addresses: https://cygwin.com/pipermail/cygwin/2023-April/253510.html
  • Fix return code and errno set by renameat2, if oldfile and newfile
  • refer to the same file, and the RENAME_NOREPLACE flag is set.
  • Addresses: https://cygwin.com/pipermail/cygwin/2023-April/253514.html

New in Cygwin 3.4.6 (Feb 14, 2023)

  • Bug Fixes:
  • Fix a problem that fsync returns EINVAL for block device.
  • Don't reject valid server and share names when mounting.
  • Create directories with correctly umask-filtered default ACEs.
  • Don't accidentally drop the default ACEs when chmod'ing directories.

New in Cygwin 3.4.3 (Dec 19, 2022)

  • Fix path handling to make sure virtual drives are never treated as symlinks.
  • Revert incorrect optimization of wmemset()

New in Cygwin 3.4.1 (Dec 11, 2022)

  • This is a bugfix release.
  • Fix a backward incompatibility problem in the definition of the
  • base type of the stdio type FILE. This requires that C++ binaries
  • compiled under Cygwin 3.4.0 having a public facing interface using
  • FILE need to be recompiled.
  • Fix an error introduced into the build process, resulting in `gcc -pg'
  • becoming disfunctional.
  • Fix performance degradation of non-cygwin pipe.

New in Cygwin 3.4.0 (Dec 4, 2022)

  • Drop support for Vista and Server 2008.
  • Drop support for 32 bit Windows and WOW64.
  • Allow to run with full ASLR enabled and enable on Cygwin DLL by default.
  • Remove any special handling for the .com filename suffix. It has to be used always explicitely.
  • Add code to handle setrlimit(RLIMIT_AS).
  • Add code to handle signal masks in /proc/<PID>/status.
  • Handle UDP_SEGMENT and UDP_GRO socket options.

New in Cygwin 3.3.6 (Sep 6, 2022)

  • Bug Fixes:
  • Fix an issue that command "cmd /c script -c cmd" crashes if it is issued in console of Windows 7.
  • Fix killpg failing because the exec'ing as well as the exec'ed process are not in the pidlist for a brief moment.
  • Fix mknod (64-bit only), whose definition didn't match its prototype.
  • Fix a regression that prevented Cygwin from starting if cygwin1.dll is in the root directory.
  • Handle setting very long window title correctly in console.
  • Fix a bug of poll() that it returns event which is not inquired if events are inquired in multiple pollfd entries on the same fd
  • at the same time.
  • Fix a console problem that the text longer than 1024 bytes cannot be pasted correctly.
  • Fix a pty problem that pty failed to switch I/O pipe to that for native apps if *.bat or *.cmd is executed directly from cygwin
  • shell.
  • Fix a problem that prevented some symbolic links to /cygdrive/C,/cygdrive/./c, /cygdrive//c, etc. from working.
  • Fix a path handling bug that could cause a non-existing file to be treated as the current directory.
  • Fix a crash in newlocale.

New in Cygwin 3.3.5 (Jun 14, 2022)

  • Fix a bug that accessing UNC path mounted to a drive letter using
  • SMB3.11 fails with error "Too many levels of symbolic links.".
  • Fix a console bug that escape sequence IL/DL (CSI Ps L, CSI Ps M)
  • does not work correctly at the last line.
  • Addresses: https://cygwin.com/pipermail/cygwin/2022-February/250736.html
  • Fix a problem that ENABLE_INSERT_MODE and ENABLE_QUICK_EDIT_MODE
  • flags are cleared if cygwin is started in console.
  • Fix an issue that cmd.exe also is terminated along with the cygwin
  • app started from the cmd.exe if the cygwin app is terminated by
  • Ctrl-C.
  • Fix deadlock caused when keys are typed in pty while a lot of text
  • output.
  • Fix a problem that the console mode for input is not set correctly
  • when non-cygwin app is started with stdin redirected.
  • Addresses:
  • https://github.com/GitCredentialManager/git-credential-manager/issues/576
  • Fix some problems such as:
  • 1) If output of non-cygwin app and input of cygwin app are connected
  • by a pipe, Ctrl-C has to be sent twice to stop apps when the
  • cygwin app does not read stdin at the moment.
  • 2) In cmd.exe started from cygwin shell, if output of non-cygwin
  • app and input of cygwin app are connected by a pipe, Ctrl-C
  • can never terminate the apps.
  • Fix exit code when non-cygwin app is terminated by Ctrl-C.
  • Fix a bug that the order of the console key inputs are occasionally
  • swapped, especially when CPU load is high.
  • Addresses: https://cygwin.com/pipermail/cygwin/2022-February/250957.html
  • Fix a problem that fsync() flushes the console input buffer unlike
  • linux. fsync() should return EINVAL for special files such as tty.
  • Addresses: https://cygwin.com/pipermail/cygwin/2022-March/251022.html
  • Fix a formatting problem in gmondump where all displayed addresses are
  • mistakenly prefixed with "0x0x". Fix man pages for gmondump and ssp.
  • Fix crash on pty master close in Windows 7.
  • Addresses: https://cygwin.com/pipermail/cygwin/2022-March/251162.html
  • Avoid deadlock of non-cygwin pipe writer which occurs when the other
  • cygwin pipe writers exist if the pipe is created by system account
  • or the pipe creator is running as service.
  • Addresses: https://cygwin.com/pipermail/cygwin/2022-March/251097.html

New in Cygwin 3.3.4 (Jan 31, 2022)

  • Fix a bug in fhandler_dev_clipboard::read() that the second read fails with 'Bad address'.
  • Convert UNC path prefix back to drive letter in symlink_info::check(). This solves the following issues:
  • Fix a bug in pty code that input is wrongly sent to io_handle_nat rather than io_handle while neither read() nor select() is called after the cygwin app is started from non-cygwin app.
  • Avoid a crash when NtQueryInformationProcess returns invalid handle data.
  • Ignore INHERIT ACEs when reading the DACL of non-directory files.
  • Fix an "Invalid argument" problem in posix_spawn on i686.
  • Fix handling of AAAA records in Cygwin resolver code using native windows calls. Also fix various bugs in the resolver.
  • Fix a problem creating a dir "foo", if a file (but not a Cygwin symlink) "foo.lnk" already exists.
  • Fix double free for archetype, which is caused when open() fails.
  • Fix a permission problem when writing DOS attributes on Samba.

New in Cygwin 3.3.3 (Dec 3, 2021)

  • Fix issue that new pipe code doesn't handle size zero pipe which may be created by non-cygwin apps.
  • Make sure that "X:" paths are not handled as absolute DOS paths in fstatat and other ...at calls. "X:/" still is handled as absolute path.
  • Fix showing DLL version info from native Windows tools.
  • Handle Unicode surrogate pairs in console. Cygwin console does not handle surrogate pairs correctly at the moment. Fix issue that running bash in Windows Terminal and inserting an emoji does not work as expected.
  • Fix long-standing problem that fchmod or facl on newly created files screw up the DOS file attributes.
  • Fix issue that pipe read()/write() occasionally returns a garbage length when NtReadFile/NtWriteFile returns STATUS_PENDING in non- blocking mode.
  • Fix two bugs in raise(2).
  • Fix regression in printf introduced with Cygwin 3.3.2.

New in Cygwin 3.3.2 (Nov 25, 2021)

  • Bug Fixes:
  • Fix bug that Ctrl-C sometimes does not work as expected in Windows Terminal.
  • Fix a float rounding issue in newlib.
  • Fix a permission problem when writing ACLs on Samba.
  • Fix the issue that pipe reader falsely detects EOF if the output of the C# program is redirected to the pipe.

New in Cygwin 3.2.0 (Mar 30, 2021)

  • 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.

New in Cygwin 3.1.7 (Feb 24, 2021)

  • Fix acl_get_* functions in 32-bit Cygwin (pointer sign extension)
  • Fix select/poll issue in case a socket connect call fails.
  • Addresses: https://cygwin.com/pipermail/cygwin/2020-July/245528.html
  • Fix multiple reader support for FIFOs
  • Addresses: https://sourceware.org/pipermail/cygwin/2020-July/245456.html
  • Fix an mmap issue that could cause failure with errno EFBIG
  • Partially addresses: https://sourceware.org/pipermail/cygwin/2020-July/245557.html
  • Fix the behavior of C++ apps after an unhandled exception (64-bit only)
  • Addresses: https://cygwin.com/pipermail/cygwin/2019-October/242795.html
  • https://cygwin.com/pipermail/cygwin/2020-August/245897.html

New in Cygwin 3.1.6 (Jul 13, 2020)

  • This is mainly a bugfix release.
  • What changed:
  • Support more IPPROTO_TCP socket options: TCP_FASTOPEN, TCP_KEEPIDLE, TCP_KEEPCNT, TCP_KEEPINTVL, TCP_QUICKACK, TCP_USER_TIMEOUT.
  • Bug Fixes:
  • Fix IPPROTO_TCP option handling, especially in terms of TCP_MAXSEG.
  • Fix a buffer overrun in Cygwin-internal string comparison.
  • Fixes: https://cygwin.com/pipermail/cygwin/2020-June/245226.html
  • Fix microcode registry lookup for /proc/cpuinfo output.
  • Fixes: https://cygwin.com/pipermail/cygwin/2020-May/245063.html

New in Cygwin 3.1.5 (Jun 1, 2020)

  • What changed:
  • Support WSL symlinks. Create those by default now.
  • FIFOs can now be opened multiple times for reading.
  • Bug Fixes:
  • Fix accidental evaluation of NUL () characters in xterm console output.
  • Don't move cursor to the right in case of a NUL character in the console
  • output stream, this is not backed by terminfo.
  • Addresses: https://cygwin.com/ml/cygwin/2020-02/msg00162.html
  • Fix a segfault when starting, e.g., mintty from a bash in a console
  • running xterm emulation.
  • Addresses: https://cygwin.com/ml/cygwin/2020-02/msg00197.html
  • Fix TIOCINQ to always return number of inbound chars if available.
  • Addresses: https://cygwin.com/ml/cygwin/2020-02/msg00258.html
  • Fix error handling in raw disk writes and allow full disk writes
  • including necessary locking on floppies as well.
  • Addresses: https://cygwin.com/pipermail/cygwin/2020-April/244610.html
  • Fix several FIFO bugs.
  • Addresses: https://sourceware.org/pipermail/cygwin/2020-March/000206.html
  • https://sourceware.org/pipermail/cygwin/2020-April/244518.html
  • Make sure pseudo tty doesn't hang if cygwin-console-helper.exe is
  • non-functional.
  • Addresses: https://cygwin.com/pipermail/cygwin-patches/2020q2/010191.html
  • Fix a bug causing FIFOs to have incorrect permissions.
  • Addresses: https://sourceware.org/pipermail/cygwin/2020-May/245031.html

New in Cygwin 3.1.4 (Feb 19, 2020)

  • Allow symlinks to be opened with O_PATH | O_NOFOLLOW.
  • Allow the pathname argument to readlinkat(2) to be an empty string, provided the dirfd argument refers to a symlink opened with O_PATH | O_NOFOLLOW. The readlinkat call then operates on that symlink.
  • Support the Linux-specific AT_EMPTY_PATH flag for fchownat(2) and fstatat(2).
  • Allow AF_LOCAL sockets to be opened with O_PATH.
  • <signal.h>: New macro _NSIG replacing NSIG. NSIG is now only visible to MISC builds, as on Linux.
  • The new locale modifier @cjksingle allows enforcing of single-width character property for usually double-widthed characters. This will be supported by upcoming mintty releases. For the reasoning, see https://gitlab.freedesktop.org/terminal-wg/specifications/issues/9.
  • Bug Fixes:
  • Define CPU_SETSIZE, as on Linux. Addresses: https://cygwin.com/ml/cygwin/2019-12/msg00248.html
  • Fix a regression that prevented the root of a drive from being the Cygwin installation root. Addresses: https://cygwin.com/ml/cygwin/2020-01/msg00111.html
  • Many fixes in new pseudo console support.

New in Cygwin 3.1.1 (Dec 19, 2019)

  • This is a bugfix release. Due to an oversight, Cygwin 3.1.0 does not run
  • on Windows Vista and Windows Server 2008. Cygwin 3.1.1 fixes that.

New in Cygwin 3.1.0-1 (Dec 16, 2019)

  • What's new:
  • Add 24 bit color support using xterm compatibility mode in Windows 10 1703 or later. Add fake 24 bit color support for legacy console, which uses the nearest color from 16 system colors.
  • Support pseudo console in PTY. Pseudo console is a new feature in Windows 10 1809, which provides console APIs on virtual terminal. With this patch, native console applications can work in PTYs such as mintty, ssh, gnu screen or tmux.
  • New APIs: sched_getaffinity, sched_setaffinity, pthread_getaffinity_np, pthread_setaffinity_np, plus CPU_SET macros.
  • New APIs: dbm_clearerr, dbm_close, dbm_delete, dbm_dirfno, dbm_error, dbm_fetch, dbm_firstkey, dbm_nextkey, dbm_open, dbm_store.
  • What changed:
  • FIFOs can now be opened multiple times for writing. Addresses: https://cygwin.com/ml/cygwin/2015-03/msg00047.html
  • https://cygwin.com/ml/cygwin/2015-12/msg00311.html
  • If a SA_SIGINFO signal handler changes the ucontext_t pointed to by the third parameter, follow it after returning from the handler.
  • Eliminate a header file name collision with <X11/XLocale.h> on case insensitive filesystems by reverting <xlocale.h> back to <sys/_locale.h>.
  • Allow times(2) to have a NULL argument, as on Linux.
  • Addresses: https://cygwin.com/ml/cygwin/2019-09/msg00141.html
  • Improve /proc/cpuinfo output and align more closely with Linux.
  • Raise stackdump frame limit from 16 to 32.
  • Addresses: https://cygwin.com/ml/cygwin/2019-11/msg00038.html
  • Bug Fixes
  • Fix select() on console in canonical mode. Return after one line is completed, instead of when only one key is typed.
  • Make console I/O functions thread-safe.
  • Define missing MSG_EOR. It's unsupported by the underlying Winsock layer so using it in send(2), sendto(2), or sendmsg(2) will return -1 with errno set to EOPNOTSUPP and recvmsg(2) will never return it.
  • Fix a timerfd deadlock.
  • Addresses: https://cygwin.com/ml/cygwin/2019-06/msg00096.html
  • Fix sigpending() incorrectly returning signals for unrelated threads.
  • Addresses: https://cygwin.com/ml/cygwin/2019-07/msg00051.html
  • Fix a hang when opening a FIFO with O_PATH.
  • Addresses: https://cygwin.com/ml/cygwin-developers/2019-06/msg00001.html
  • Don't append ".lnk" when renaming a socket file.
  • Addresses: https://cygwin.com/ml/cygwin/2019-07/msg00139.html
  • Make tcsetpgrp() return -1 if its argument is negative.
  • Addresses: https://cygwin.com/ml/cygwin/2019-07/msg00166.html
  • Avoid mistakenly moving a process under debugger control into theprocess group of the debugger.
  • Addresses a problem visible in GDB 8.1.1, related to
  • https://cygwin.com/ml/cygwin/2019-07/msg00166.html
  • Return ENOEXEC from execve for arbitrary files only if the files are executable.
  • Addresses: https://cygwin.com/ml/cygwin/2019-08/msg00054.html
  • Fix off-by-one in environment evaluation leading to an abort.
  • Addresses: https://cygwin.com/ml/cygwin-patches/2019-q3/msg00069.html
  • Make output of /proc/[PID]/stat consistent with getpriority().
  • Addresses: https://cygwin.com/ml/cygwin/2019-08/msg00082.html
  • 64 bit only: Avoid collisions between memory maps created with shmat and Windows datastructures during fork.
  • Addresses: https://cygwin.com/ml/cygwin/2019-08/msg00107.html
  • Make rmdir fail if its argument is a symlink.
  • Addresses: https://cygwin.com/ml/cygwin/2019-09/msg00221.html
  • Fix an assertion failure on an invalid path.
  • Addresses: https://cygwin.com/ml/cygwin/2019-09/msg00228.html
  • If the argument to mkdir(2) or rmdir(2) is 'x:', don't strip the trailing backslash.
  • Addresses: https://cygwin.com/ml/cygwin/2019-08/msg00334.html
  • Make spawnvp, spawnvpe fail if the executable is not in $PATH.
  • Addresses: https://cygwin.com/ml/cygwin/2019-10/msg00032.html
  • Fix parent/child relationship after parent dies.
  • Addresses: https://cygwin.com/ml/cygwin/2019-09/msg00263.html
  • Fix a security problem if Cygwin is installed into a path with spaces in it.
  • Addresses: https://cygwin.com/ml/cygwin/2019-11/msg00018.html
  • Fix an assertion failure when /cygdrive contains an offline network drive.
  • Addresses: https://cygwin.com/ml/cygwin/2019-12/msg00016.html
  • Fix return value of ilogbl for 0 input.
  • Addresses: https://cygwin.com/ml/cygwin/2019-12/msg00074.html
  • Let strtold set errno to ERANGE on underflow per POSIX.
  • Addresses: https://cygwin.com/ml/cygwin/2019-12/msg00072.html

New in Cygwin 3.0.5-1 (Apr 1, 2019)

  • Fix /proc/version after uname change
  • Addresses: https://cygwin.com/ml/cygwin/2019-03/msg00467.html
  • Fix a crash in wcsxfrm_l if destination size is 0.
  • Addresses: https://cygwin.com/ml/cygwin/2019-03/msg00492.html
  • Fix a problem in process enumeration which led to `ps -W' showing Cygwin processes twice and potentially with incorrect Windows PID. Addresses: Report on IRC

New in Cygwin 3.0.4-1 (Mar 16, 2019)

  • What changed:
  • Improve /proc/<PID>/cmdline and /proc/<PID>/stat handling to allow all processes access to basic process information of foreign processes.
  • Bug Fixes:
  • Fix access to process list
  • Addresses: https://cygwin.com/ml/cygwin/2019-03/msg00253.html
  • Fix acl_to_text/acl_to_any_text returning EINVAL on empty acl
  • Addresses: https://cygwin.com/ml/cygwin/2019-03/msg00157.html

New in Cygwin 3.0.1-1 (Feb 20, 2019)

  • What's new:
  • New API: secure_getenv.
  • Bug Fixes:
  • Relax fork child permissions to avoid a potential fork failure.
  • Fix Command-line argument handling of kill(1) in terms of negative PID. Addresses: report on IRC
  • Fix an accidentally introduced O_TEXT handling of pipes inherited from native Windows processes.
  • Re-enable creating user token from scratch in seteuid to allow user context switch on old systems not supporting MsV1_0S4ULogon.

New in Cygwin 3.0.0-1 (Feb 16, 2019)

  • What's new:
  • -----------
  • - Support for CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE,
  • CLOCK_MONOTONIC_RAW, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM,
  • CLOCK_BOOTTIME_ALARM clocks.
  • - Support for case sensitive directories. mkdir(2) automatically
  • creates directories within the Cygwin installation dir as case
  • sensitive now.
  • This feature requires Windows 10 1803 or later and WSL installed!
  • - New file ioctls's FS_IOC_GETFLAGS and FS_IOC_SETFLAGS. The actual
  • inode flags are Cygwin-specific. This allows to set or reset
  • DOS attributes, file sparseness, FS level encryption and compression,
  • as well as directory case sensitivity programatically.
  • - New tools chattr(1) and lsattr(1) to utilize setting and viewing the
  • aforementioned new ioctl's on the command line.
  • - Support for exFAT.
  • - Support Linux-specific open(2) flag O_PATH.
  • - Support Linux-specific linkat(2) flag AT_EMPTY_PATH.
  • - Support overrun counter for posix timers (via timer_getoverrun() or
  • siginfo_t::si_overrun).
  • - New APIs: signalfd, timerfd_create, timerfd_gettime, timerfd_settime,
  • timer_getoverrun.
  • - fork(2) now is able to recover from when an in-use executable/dll is
  • removed or replaced during process runtime. This feature is disabled by
  • default and limited to exes/dlls on the same NTFS partition as the Cygwin
  • installation. For more information and how to enable, please refer to
  • https://www.cygwin.com/cygwin-ug-net/highlights.html#ov-hi-process
  • What changed:
  • -------------
  • - clock_nanosleep, pthread_condattr_setclock and timer_create now support
  • all clocks, except CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID.
  • - clock_setres is a no-op now.
  • - Use the new POSIX unlink semantics on NTFS starting with Windows 10 1709.
  • Deleting an in-use file now actually removes the file, rather than moving
  • it to the recycler bin.
  • - Use the new POSIX rename semantics on NTFS starting with Windows 10 1809.
  • Renaming a file to another in-use file now actually removes the other file,
  • rather than moving it to the recycler bin.
  • - open(..., O_TMPFILE) now moves the file to the trash bin immediately,
  • to free the parent directory.
  • - Wctype functions updated to Unicode 11.0.
  • - Remove matherr, and SVID and X/Open math library configurations.
  • Default math library configuration is now IEEE.
  • - Improve uname(2) for newly built applications.
  • - Kerberos/MSV1_0 S4U authentication replaces two old methods:
  • Creating a token from scratch and Cygwin LSA authentication package.
  • - Cygwin PIDs have been decoupled from Windows PID. Cygwin PIDs are
  • now incrementally dealt in the range from 2 up to 65535, POSIX-like.
  • Native Windows processes not started by Cygwin processes are mapped
  • into the range beyond 65535.
  • Bug Fixes
  • ---------
  • - Fix a thread race when initializing CLOCK_MONOTONIC.
  • Addresses: https://cygwin.com/ml/cygwin/2018-11/msg00017.html
  • - Fix early timeout from pthread_cond_timedwait.
  • Addresses: https://cygwin.com/ml/cygwin/2018-11/msg00171.html
  • - Fix a bug in recognizing remote FAT/FAT32/exFAT correctly.
  • - Allow open(2)/stat(2)/linkat(2) of a file via /proc/PID/fd/DESCRIPTOR
  • even if file has been deleted.
  • Addresses: https://cygwin.com/ml/cygwin/2018-12/msg00125.html
  • https://cygwin.com/ml/cygwin/2018-12/msg00028.html
  • - Fix a bug in select(2) when polling HANDLE-less descriptors.
  • - Fix WEOF handling in wctype functions.
  • Addresses: https://cygwin.com/ml/cygwin/2018-12/msg00173.html
  • - Fix thread names in GDB when cygthreads get reused.
  • - Fix return value of gethostname in a border case.
  • - Disallow seteuid on disabled or locked out accounts.
  • Addresses: https://cygwin.com/ml/cygwin/2019-01/msg00197.html
  • - Fix raise to work as required by POSIX.
  • Addresses: https://cygwin.com/ml/cygwin/2019-01/msg00149.html
  • - Fix exception handling in pthreads.
  • Addresses: https://cygwin.com/ml/cygwin/2019-01/msg00149.html
  • - Fix O_APPEND handling on files when calling non-Cygwin applications
  • Addresses: https://cygwin.com/ml/cygwin/2019-02/msg00081.html
  • - Fix case correctness of passwd/group entries fetched via getpwnam
  • or getgrnam.
  • Addresses: https://cygwin.com/ml/cygwin/2019-02/msg00109.html

New in Cygwin 2.11.0 (Sep 1, 2018)

  • What's new:
  • New APIs: clearenv, pthread_tryjoin_np, pthread_timedjoin_np, sched_getcpu.
  • New APIs: aio_cancel, aio_error, aio_fsync, aio_read, aio_return, aio_suspend, aio_write, lio_listio.
  • New header: <aio.h>.
  • What changed:
  • SO_RCVTIMEO and SO_SNDTIMEO socket options are now honored.
  • /proc/cpuinfo now reports L3 cache size on Intel CPUs.
  • Drop denormal-operand exception from FE_ALL_EXCEPT, as on Linux.
  • Rename the --file option of setfacl(1) to --set-file, as on Linux.
  • Support Unicode 10.
  • Following glibc, `union wait' has now been removed. Applications using union wait and these macros will have to migrate to the POSIX-specified int status type.
  • Bug Fixes:
  • Fix utils path handling in case cygdrive path is just '/'.
  • Fix a potential SIGFPE in strtod, if FE_INVALID exceptions are enabled.
  • Fix a CPU affinity problem when creating /proc/cpuinfo output.
  • Fix a buffer underrun problem in Win32 path normalization.
  • Fix a stack alignment problem which may lead to spurious crashes after fork.
  • Fix a g++ compilation problem with -std=c++14 or -std=c++17.
  • Fix FPE flag handling for division by zero conditions
  • Fix Unicode table.
  • Handle a non-standard return value from some tape drives to report a "no-media" error.
  • Fix duration handling in sigtimedwait
  • Make FP environment symbols available on x86_64.
  • Fix fegetenv behaviour.
  • Fix NaN handling in strtof/strtod/strtold.
  • Fix memory allocation values in /proc/<PID>/status and /proc/<PID>/statm.
  • Fix handling of unknown accounts in file ACLs. Add name->SID conversion for (most) self-constructed account names.
  • Correctly handle Logon Session accounts on Windows 10.

New in Cygwin 2.10.0 (Feb 3, 2018)

  • NEW:
  • New open(2) flags O_TMPFILE and O_NOATIME.
  • scanf/wscanf now handle the POSIX %m modifier.
  • scanf now handles the %l[ conversion.
  • Improved hostprogs compatibility for cross-compiling the Linux kernel.
  • New headers: <asm/bitsperlong.h>, <asm/posix_types.h>.
  • Built-in implementation of Stack Smashing Protection compiler feature.
  • New APIs: __stack_chk_fail, __stack_chk_guard.
  • Built-in implementation of POSIX.1-2001 message catalog support.
  • New APIs: catclose, catgets, catopen. New tool: gencat.
  • New APIs: sigtimedwait, wmempcpy.
  • What changed:
  • Standard headers no longer use macros to support K&R C.
  • confstr(3) and getconf(1) accept LFS_CFLAGS, LFS_LDFLAGS, etc.
  • The __always_inline and __nonnull macros in <sys/cdefs.h> are now compatible with glibc.
  • Feature Test Macros improvements in <fcntl.h>, <limits.h>, <netdb.h>, <strings.h>, and <unistd.h>.
  • Bug Fixes:
  • Fix a problem in unlink on NFS.
  • Addresses: Shows up in GAWK testsuite test "testext"
  • Fix errno setting bug in posix_fadvise and posix_fallocate.
  • Fix two bugs in the limit of large numbers of sockets.
  • Fix a fork failure with private anonymous mmaps.
  • Remove a call to fflush from ftell{o}, which may result in wrong offsets.
  • Fix file pointer computation after short writes on block devices.

New in Cygwin 2.9.0 (Sep 8, 2017)

  • NEW:
  • New APIs: explicit_bzero, strnstr.
  • New APIs: pthread_mutex_timedwait, pthread_rwlock_timedrdlock, pthread_rwlock_timedwrlock.
  • New API: renameat2.
  • CHANGED:
  • Improved implementation of <elf.h>.
  • Add %s support for strptime..
  • BUG FIXES:
  • Fix a regression in fflush introduced in 2.8.0.
  • Fix a regression in reparse point handling introduced in 2.8.1.
  • Fix a potential resource leak when checking reparse points during readdir.
  • Fix select and read in Windows console when running under codepage 65001.
  • Fix a clear screen issue in Windows console when running under codepage 65001.
  • Fix bug in strptime %F field width handling.

New in Cygwin 2.8.2 (Jul 12, 2017)

  • What's new:
  • New API: fls, flsl, flsll.
  • Bug Fixes:
  • Fix scandirat. Addresses: https://cygwin.com/ml/cygwin/2017-07/msg00045.html
  • Fix signal.h with strict features enabled. Addresses: https://cygwin.com/ml/cygwin/2017-07/msg00051.html and https://cygwin.com/ml/cygwin/2017-07/msg00088.html
  • Drop _in and _out in POSIX headers to avoid collision with Windows headers. Addresses: https://github.com/Alexpux/MSYS2-packages/issues/934
  • Handle different environments in cygwin-doc postinstall script. Addresses: https://cygwin.com/ml/cygwin/2017-07/msg00070.html

New in Cygwin 2.8.1 (Jul 4, 2017)

  • What changed:
  • The XSI form of sigpause, which removes the given signal from the process's signal mask, is made available when compiling with _XOPEN_SOURCE or _GNU_SOURCE.
  • Bug Fixes:
  • Fix build problem with GCC 6.
  • Fix stat.st_blocks for files compressed with CompactOS method.
  • Fix extreme lagging during strace in certain scenarios.
  • Fix unwanted decimal point localization in /proc/loadavg
  • Fix ldd potentially looping on non-continuable exception
  • Fix buffer overflow problem in wcsxfrm/wcsxfrm_l.
  • Fix crash if env var name starts with non-ASCII char
  • Fix return value of lrint{f,l} on x86_64 Cygwin.
  • Fix native language support in regtool(1).

New in Cygwin 2.8.0 (Apr 2, 2017)

  • What's new:
  • New API: timingsafe_bcmp, timingsafe_memcmp
  • New API: dladdr
  • New API: getloadavg
  • What changed:
  • cygcheck and strace now always generate output with Unix LF line endings, rather than with DOS/Windows CR LF line endings.
  • fork now preserves the load order of unrelated dlopen'd modules.
  • pthread_cond_wait now acts like Linux and BSD: Resume waiting for the condition variable as if it was not interrupted, rather than returning 0.
  • The internal <sys/_locale.h> header was renamed to <xlocale.h> for source compatibility with other systems.
  • Try harder supporting Netapp drives.
  • Bug Fixes:
  • Fix a few problems which are the combined culprit of fork failing when called recursively from a pthread.
  • Fix potential buffer overflow in getrandom.
  • Fix write(2) return value for writes > 2 GB.
  • Workaround Windows NUL having the same problem for writes > 4 GB.
  • Fix a potential crash in duplocale.
  • Fix dlopen/dlclose reference counting to make sure FreeLibrary isn't called too early in forked process.
  • Fix concurrency problems in cygserver.

New in Cygwin 2.7.0 (Feb 13, 2017)

  • BUG FIXES:
  • Fix rename(2) fail with EACCES if newfile is in use.
  • Always try to write all incoming bytes to blocking pipes, as required
  • by POSIX.
  • Fix handling of Alt-Numpad sequences in console handler.
  • Fix erasing UTF-8 multibyte characters in cooked mode.
  • Fix handling of a literal '+' by cygcheck -p
  • Fix limited Internet speeds caused by inappropriate socket buffering.

New in Cygwin 2.6.1 (Jan 12, 2017)

  • NEW:
  • Add _PC_CASE_INSENSITIVE flag to [f]pathconf(3).
  • BUG FIXES:
  • Fix regression in console charset handling
  • Fix case-sensitivity problem when renaming directories
  • Fix SetThreadName with gdb 7.10 on x86
  • Fix broken newlocale handling with empty local string "".
  • Fix assorted buffer overflows and resource leaks found by Coverity.
  • Correctly define __hidden macro on Cygwin.
  • Fix page count in /proc//statm and /proc//status.
  • Don't allow sending invalid signals from user space
  • Fix path handling of ".//" sequences.
  • cygwin_conv_path/cygwin_create_path now also check for .exe suffix when converting a POSIX path to Windows notation.
  • Address Windows bug in path conversion on network shares for non-existing paths.

New in Cygwin 2.6.0 (Sep 1, 2016)

  • Support for POSIX-1.2008 locale objects and per-thread locales.
  • New API per POSIX-1.2008: newlocale, freelocale, duplocale, uselocale,
  • nl_langinfo_l, isalnum_l, isalpha_l, isblank_l, iscntrl_l, isdigit_l,
  • isgraph_l, islower_l, isprint_l, ispunct_l, isspace_l, isupper_l, iswalnum_l,
  • iswalpha_l, iswblank_l, iswcntrl_l, iswctype_l, iswdigit_l, iswgraph_l,
  • iswlower_l, iswprint_l, iswpunct_l, iswspace_l, iswupper_l, iswxdigit_l,
  • isxdigit_l, tolower_l, toupper_l, towctrans_l, towlower_l, towupper_l,
  • wctrans_l, wctype_l, strcasecmp_l, strcoll_l, strerror_l, strfmon_l,
  • strftime_l, strncasecmp_l, strxfrm_l, wcscasecmp_l, wcscoll_l,
  • wcstrncasecmp_l, wcstrxfrm_l.
  • New API, GNU extensions: isascii_l, toascii_l, strptime_l, strtod_l,
  • strtof_l, strtol_l, strtold_l, strtoll_l, strtoul_l, strtoull_l, wcsftime_l,
  • wcstod_l, wcstof_l, wcstol_l, wcstold_l, wcstoll_l, wcstoul_l, wcstoull_l.
  • locale(1) now supports a -i/--input option to fetch the current input
  • locale (this is basically equivalent to the current keyboard layout setting).
  • New API: pthread_getname_np, pthread_setname_np.
  • CHANGED:
  • Drop support for Windows XP and Windows Server 2003/2003 R2.
  • Drop support for very old SUNWNFS filesystem.
  • Further header file improvements in terms of feature test macros.
  • Raise number of supported partitions per disk (for raw access) to 63.
  • Add a workaround for filesystems not supporting the FileAllInformation
  • info class.
  • Support AzureAD accounts.
  • "nobody" account support for WinFSP.
  • BUG FIXES:
  • Try to avoid spurious DENY ACEs when creating files in directories
  • with non-POSIX-like (rather: Windows-like) permissions.
  • Make sure ldd(1) does not exit prematurely when enumerating DLLs.
  • Fix strace timer output in child process.
  • Change blkcnt_t to signed type per POSIX.
  • Fix definition of SSIZE_MAX on 32-bit systems.
  • Fix transposing invalid chars in Windows filenames on relative paths.
  • Don't raise SIGTTIN from select(2)/poll(2).
  • Use correct FPU rounding mode in truncl.
  • Fix a regression in ioctl(fd, FIONREAD, ...) introduced in Cygwin 2.5.0.
  • This only affects 64 bit Cygwin.
  • Handle "clear screen" escpae sequence in console window more reliable.
  • Allow kill(pid, ) on zombies to return successfully, rather than
  • only kill(pid, 0), to align behaviour with POSIX requirements.
  • Fix off_t typedef on 64-bit.
  • Fix weird problem running passwd on newer Windows versions.

New in Cygwin 2.5.2 (Jun 23, 2016)

  • What changed:
  • select(2) now supports timeouts less than a Windows tick (10-16 ms).
  • Bug Fixes
  • Fix an error message depending on the system header inclusion order.
  • Fix non-POSIXy scheduler priority handling.
  • Allow mmap to map regions > 4 Gigs on 64 bit.
  • Fix realpath(3) for incoming paths starting with long path prefixes.
  • Fix a usage of INT_MAX (required limits.h) in math.h
  • Fix using wrong inode number on newly created files.

New in Cygwin 2.5.1 (Apr 23, 2016)

  • Bug Fixes:
  • Fix strxfrm/wcsxfrm return value if output buffer is too small. Fix wcsxfrm return value either way.
  • Fix bug introduced in 2.5.0: Fix condition specifying when to write a NULL SID ACE.
  • Remove spurious checks for already initialized pthread object in pthread object init functions.

New in Cygwin 2.4.1 (Jan 25, 2016)

  • Bug Fixes:
  • The cygpath(1) patch to correct the case of system directories when returned as POSIX paths didn't work correctly for the SYSTEMROOT directory on 32 bit Cygwin running on 64 bit Windows.
  • cygwin_login_user(2): Don't fail if the calling user has no TCB privileges and the user account to create the token for is an admin account. Return the UAC-restricted token instead.

New in Cygwin 2.4.0 (Jan 17, 2016)

  • What changed:
  • Align setfacl(1) usage a bit closer to the usage on Linux. Rename -d option to -x, --substitute to --set. Add --no-mask and --mask options. Allow to use the -b and -k option combined to allow reducing an ACL to only reflect standard POSIX permissions.
  • Fix (numeric and monetary) decimal point and thousands separator in fa_IR and ps_AF locales to be aligned with Linux.
  • utmpname/utmpxname are now defined as int functions as on Linux.
  • Addresses: https://cygwin.com/ml/cygwin/2015-12/msg00320.html
  • Bug Fixes:
  • Not a bug fix as such, but a workaround for new behaviour in Windows 10 version 1511 64 bit. This version introduces a problem which existed in a similar variation (just vice versa) in XP and Server 2003 64 bit as well.
  • An unexpected stack arrangement when starting a 64 bit Cygwin application from a 32 bit application (e.g. 32 bit CMD.EXE) broke Cygwin's fork.
  • Replaced old, buggy strtold implementation with well-tested gdtoa version from David M. Gay.
  • Fix handling of relative paths in native symlinks if the target is in a drive's root dir or one level below.
  • Fix a SEGV when calling `kill -l 0'.
  • Fix a race condition in signal handling.
  • Fix a potential crash reading invalid passwd and group entries from /etc/passwd and /etc/group.
  • Cygpath(1) now tries to correct the case of system directories when returned as POSIX paths.*Always* zero out descriptor arrays when returning from select due to timeout, per POSIX.
  • Return unique inode numbers when calling stat/fstat on pipes and IP sockets.

New in Cygwin 2.3.0 (Nov 9, 2015)

  • strftime(3) supports %s (seconds since Epoch) now.
  • posix_madvise(POSIX_MADV_WILLNEED) now utilizes OS functionality available starting with Windows 8/Server 2012. Still a no-op on older systems.
  • posix_madvise(POSIX_MADV_DONTNEED) now utilizes OS functionality available starting with Windows 8.1/Server 2012R2. Still a no-op on older systems.
  • sysconf() now supports returning CPU cache information: _SC_LEVEL1_ICACHE_SIZE, _SC_LEVEL1_ICACHE_ASSOC, _SC_LEVEL1_ICACHE_LINESIZE,
  • _SC_LEVEL1_DCACHE_SIZE, _SC_LEVEL1_DCACHE_ASSOC, _SC_LEVEL1_DCACHE_LINESIZE, _SC_LEVEL2_CACHE_SIZE, _SC_LEVEL2_CACHE_ASSOC, _SC_LEVEL2_CACHE_LINESIZE, _SC_LEVEL3_CACHE_SIZE, _SC_LEVEL3_CACHE_ASSOC, _SC_LEVEL3_CACHE_LINESIZE, _SC_LEVEL4_CACHE_SIZE, _SC_LEVEL4_CACHE_ASSOC, _SC_LEVEL4_CACHE_LINESIZE
  • New API: aligned_alloc, at_quick_exit, quick_exit.
  • Add support for Parallels Desktop FS (prlfs).
  • Bug Fixes:
  • Fix a hang when stracing a forking or spawning process without activating stracing of child processes.
  • Fix long-standing potential SEGV on 32 bit Cygwin when the dynamic loader for OS functions fails to load a function on Windows 7 or later.
  • Addresses: No actual bug report known.
  • sysconf _SC_NPROCESSORS_CONF and _SC_NPROCESSORS_ONLN now handle more than64 CPUs on Windows 7 and later.
  • Fix a potential crash in advisory file locking due to usage of stack space
  • out of scope.
  • Fix EIO error accessing certain (OS X SMB?) drives
  • Fix memory leak in calls to pthread_getattr_np.
  • Fix output of /proc//winexename.
  • Avoid SEGV when handling SIDs with 0 subauthorities.
  • Fix a potential SEGV on (at least) Wine.
  • Fix sigwait(3) to return errno instead of -1 and never to return with EINTR.
  • Fix pthread_kill(3) to return errno instead of -1.
  • Remove lingering pending signals after a thread exited.
  • Workaround a bug in Windows 10 NLS handling.
  • Avoid unnecessry locking and thus a potential deadlock in flock(2).

New in Cygwin 2.2.1 (Aug 21, 2015)

  • BUG FIXES:
  • Revert the following patch from 2.2.0:
  • When started from a non-Cygwin process, check if $HOME starts with a slash (absolute POSIX path). Otherwise ignore it.
  • Fix output of /proc/cpuinfo in terms of cpu topology and cache size for modern CPUs and modern Windows OSes supporting more than 64 logical CPUs.
  • Don't call LsaLookupSids to fetch group information and don't perform RFC2307 owner/group mapping on Samba/NFS if account info is only fetched from local passwd/group files.
  • Precautionally fix a potential data corruption problem in pipe I/O, only actually observered in Wine yet. However, MSDN language indicates this might be a problem on real Windows as well.
  • Include from if compiling for POSIX.1-2008.
  • getservent(3) returned the port number in host byte order. Change that to network byte order as required address.

New in Cygwin 2.2.0 (Aug 4, 2015)

  • WHAT'S NEW:
  • New APIs: getcontext, setcontext, makecontext, swapcontext.
  • New functions:
  • sigsetjmp, siglongjmp.
  • These were only available as macros up to now, but POSIX requires that siglongjmp has to be available as function.
  • Changed:
  • When started from a non-Cygwin process, check if $HOME starts with a slash (absolute POSIX path). Otherwise ignore it.
  • Bug Fixes:
  • Fix potential hang running ldd(1).
  • Fix crashes under AllocationPreference=0x100000 condition
  • x86_64 only: Implement memset, memmove, memcpy, wmemmove, wmemcpy in
  • assembler derived from NetBSD.

New in Cygwin 2.1.0 (Jul 15, 2015)

  • What's new:
  • Handle pthread stacksizes as in GLibc: Default to RLIMIT_STACK resource. Allow to set RLIMIT_STACK via setrlimit. Default RLIMIT_STACK to value from executable header as described on https://msdn.microsoft.com/en-us/library/windows/desktop/ms686774.aspx
  • Default stacksize to 2 Megs in case RLIMIT_STACK is set to RLIM_INFINITY.
  • First cut of an implementation to allow signal handlers running on an alternate signal stack.
  • New API sigaltstack, plus definitions for SA_ONSTACK, SS_ONSTACK, SS_DISABLE, MINSIGSTKSZ, SIGSTKSZ.
  • New API: sethostname.
  • Bug Fixes:
  • Enable non-SA_RESTART behaviour on threads other than main thread.
  • Try to handle concurrent close on socket more gracefully
  • Fix fork failing after the parent recovered from a stack overflow.
  • Fix a crash on 64 bit XP/2003 when opening /proc/$PID/maps.
  • Apparently on some Windows systems timezones differ in case from the standard. Fix the tzset tool to check case-insensitive.

New in Cygwin 2.0.4 (Jun 10, 2015)

  • Bug Fixes:
  • Handle SIGHUP in pty master close.
  • Avoid fetching /proc process info from non-Cygwin processes.
  • Fix installing newly added bind mounts with `mount -a'.
  • Add missing evaluation of /proc/$PID/{root,cwd,cmdline} for native processes.

New in Cygwin 2.0.3 (Jun 3, 2015)

  • Bug Fixes:
  • Fix potential memory leak in argz_replace.
  • Fix potential hang when accessing pty's in a certain way.

New in Cygwin 2.0.0 (Apr 28, 2015)

  • What's new:
  • basename(3) now comes in two flavors, POSIX and GNU. The POSIX version is the default.
  • You get the GNU version after:
  • Define _GNU_SOURCE
  • Include
  • What changed:
  • The maximum number of PTYs has been raised from 64 to 128.
  • Bug Fixes:
  • Fix potential hang in pseudo ttys when generating ECHO output while the slav is flooding the pty with output.
  • Fix potential premature SIGHUP in pty code.
  • Fix a name change from symlink to target name in calls to execvp, system, etc.
  • Fix internal error in pty -ONLCR handling. Fix timing bug in pty OPOST handling.
  • Avoid creating passwd and group records from fully qualified Windows account names (domain\name, name@domain).
  • Avoid potential crash at startup or in getgroups(2).
  • Fix UTF-16 surrogate handling in wctomb and friends.
  • Fix shmget usage of size parameter for already existing segments.
  • Fix how in-use files on virtual drives created via subst are moved to the recycler in unlink(2).
  • Fix how in-use files on Samba drives are renamed in unlink(2).

New in Cygwin 1.7.35 (Mar 4, 2015)

  • What's new:
  • New APIs: cabsl, cimagl, creall, finitel, hypotl, sqrtl.
  • New API: issetugid.
  • What changed:
  • Performance improvements of the new account DB handling.
  • Since 1.7.34, chmod does not always affect the POSIX permission mask as returned by stat(2) or printed by ls(1), due to the improved POSIX ACL handling. However, that's still far from perfect, so, as a temporary workaround, chmod now checks if secondary groups and users in the ACL have more permissions than the primary group. If so, the permissions of the secondary users and groups will be reduced according to the mask given by the new primary group permissions. I.e, chmod 600 will remove all permissions from the primary group as well as all secondary user and group entries in the ACL.
  • Change handling of group permissions if owner SID == group SID. Now the group permissions don't mirror the user permissions anymore, thus leading to less hassle with security-conscious applications.
  • Allow group SID to be the same as owner SID for "Microsoft Accounts". Those have the group in their user token set to the owner SID by default. Drop the workaround to change their primary group to "Users". It's not required anymore due to the aforementioned changes.
  • Change getfacl long options from --all to --access and from --dir to --default, along the lines of the Linux getfacl tool.
  • Don't raise a SIGSYS signal in the XSI IPC functions if cygserver is not running. Just return -1 with errno set to ENOSYS.
  • Bug Fixes:
  • Fix /proc/cpuinfo multicore info on Intel CPUs.
  • Generate unique inode number for /dev/tty under all circumstances.
  • Fix handling of PATH search in execlp and other calls to honor mount flags.
  • Remove a debug message accidentally printed to the terminal window if an application calls fcntl(F_SETFL) erroneously.
  • Two regressions in 1.7.34 acl(SETACL, ...):
  • SETACL overwrote the incoming acltent_t array for bookkeeping purposes while iterating over its entries. This broke reusing the acl in the calling application (e.g. setfacl).
  • SETACL accidentally missed to grant owner FILE_WRITE_ATTRIBUTES access.
  • Keep SETACL from duplicating user/group deny/allow ACEs if owner SID is the same as group SID.
  • When creating directories, keep permissions inherited from parent directory inheritable, per POSIX 1003.1e.
  • 64 bit: Export forgotten symbol __mempcpy.
  • 64 bit: Avoid misbehaviour in signal mask computation.
  • Avoid data loss on non-blocking pipes after switching back to blocking.
  • Fix a potential heap corruption in mkgroup and mkpasswd when enumerating Unix users.
  • Regression in 1.7.34: A patch to the pty handling fixing the problem reported
  • Fix signal handling in a few functions.

New in Cygwin 1.7.34 (Feb 10, 2015)

  • What's new:
  • Cygwin can now generate passwd/group entries directly from Windows user databases (local SAM or Active Directory), thus allowing to run Cygwin without having to create /etc/passwd and /etc/group files. Introduce /etc/nsswitch.conf file to configure passwd/group handling.
  • For bordercase which require to use /etc/passwd and /etc/group files, change mkpasswd/mkgroup to generate passwd/group entries compatible with the entries read from SAM/AD.
  • Add -b/--remove-all option to setfacl to reduce the ACL to only the entries representing POSIX permission bits.
  • Add -k/--remove-default option to setfacl to remove all default ACL entries from an ACL.
  • Add restore action to regtool.
  • Provide Cygwin documentation (PDFs and HTML) for offline usage in
  • /usr/share/doc/cygwin-${version}.
  • Make gethostbyname2 handle numeric host addresses as well as the reserved domain names "localhost" and "invalid" per RFC 6761.
  • New APIs: qsort_r, __bsd_qsort_r.
  • New API: wcstold.
  • New APIs: __fbufsize, __flbf, __fpending, __freadable, __freading,
  • __fsetlocking, __fwritable, __fwriting.
  • New APIs: clearerr_unlocked, feof_unlocked, ferror_unlocked, fflush_unlocked,
  • fgetc_unlocked, fgets_unlocked, fgetwc_unlocked, fgetws_unlocked,
  • fileno_unlocked, fputc_unlocked, fputs_unlocked, fputwc_unlocked,
  • fputws_unlocked, fread_unlocked, fwrite_unlocked, getwc_unlocked,
  • getwchar_unlocked, putwc_unlocked, putwchar_unlocked.
  • New API: sockatmark.
  • What changed:
  • Revamp Solaris ACL implementation to more closely work like POSIX ACLs are supposed to work. Finally implement a CLASS_OBJ emulation. Update getfacl(1)/setfacl(1) accordingly.
  • The xdr functions are no longer exported for newly built executables. Use libtirpc-devel instead.
  • 32 bit only: Change default values for socket buffer size to raise performance on 10Gb networks.
  • When spawning a process under another user account, merge the user's default Windows environment into the new process' environment.
  • Bug Fixes:
  • Fix the problem that ptys master side always writes single byte packages o the slave side, and pty slaves always read VMIN byte packages from the master side if VMIN is > 0.
  • Fix a synchronization problem in signal handling when using pthreads.
  • Fix an "invalid handle" problem when using flock(2) with a parent process holding the lock.
  • Load correct timezone offsets when fetching timezone info from zoneinfo files. Use tm_gmtoff and tm_zone members in strftime to generate more correct timezone info for non-recent eras.
  • Fix type of cmsg_len member of struct cmsghdr in /usr/include/cygwin/socket.h to size_t to align with Winsock.
  • Fix a problem in the resolver trying to resolve "localhost".
  • Update Cygserver's idea of signal handling to the latest state of per-thread signalling in Cygwin.
  • Fix handling of /proc/$PID/fd/... paths with trailing path components beyond the symlink path itself.

New in Cygwin 1.7.33 (Nov 14, 2014)

  • What's new:
  • /proc/cygdrive is a new symlink pointing to the current cygdrive prefix. This can be utilized in scripts to access paths via cygdrive prefix, even if the cygdrive prefix has been changed by the user.
  • /proc/partitions now prints the windows mount points the device is mounted on. This allows to recognize the underlying Windows devices of the Cygwin raw device names.
  • New API: quotactl, designed after the Linux/BSD function, but severely restricted: Windows only supports user block quotas on NTFS, no group quotas, no inode quotas, no time constraints.
  • New APIs: ffsl, ffsll (glibc extensions).
  • New API: stime (SVr4).
  • What changed:
  • New internal exception handling based on SEH on 64 bit Cygwin.
  • When exec'ing applications, check if $PATH exists and is non-empty. If not, add PATH variable with Cygwin installation directory as content to Windows environment to allow loading of Cygwin system DLLs.
  • Disable CYGWIN "dosfilewarning" option by default.
  • Improve various header files for C++- and standards-compliance.
  • Doug Lea malloc implementation update from 2.8.3 to the latest 2.8.6.
  • atexit is now exported as statically linked function from libcygwin.a. This allows reliable access to the DSO handle of the caller for newly built executables. The former atexit entry point into the DLL remains for backward compatibility only.
  • Bug Fixes:
  • Per POSIX, dirfd(3) now returns EINVAL rather than EBADF on invalid directory stream.
  • Fix a resource leak in rmdir(2).
  • Fix fchmod(2)/fchown(2)/fsetxattr(2) in case the file got renamed after open and before calling one of the affected functions.
  • Handle Netapp-specific problem in statvfs(2)/fstatvfs(2).
  • Fix chown(2) on ptys in a corner case.
  • Generate correct error when a path is inaccessible due to missing permissions.
  • Don't hang in accept calls if socket is no listener. Set errno to EINVAL instead.
  • Don't allow seeking on serial lines and sockets. Set errno to ESPIPE instead.
  • Fix output of /proc//statm.
  • Fix a SEGV in cygcheck if the environment variable COMSPEC is not, or incorrectly set.
  • Fix a SEGV in some 64 bit applications explicitely dlclosing DLLs.
  • Fix -fuse-cxa-atexit handling where dlclose fails to trigger calling global dtors in dynamically loaded modules in C++ applications (and thus another potential SEGV).

New in Cygwin 1.7.32 (Aug 14, 2014)

  • Export __cxa_atexit and __cxa_finalize to allow C++ standards-compliant destructor handling in libstdc++ and g++ compiled code.
  • Please note that, in order to benefit from this new feature, C++ code must be recompiled with the upcoming gcc 4.8.3-3 release which will enable the -fuse-cxa-atexit flag by default, and that C++ applications using this feature will not run on older Cygwin releases.
  • Support more recent CPU flags in /proc/cpuinfo.

New in Cygwin 1.7.31 (Jul 28, 2014)

  • What changed:
  • Improve performance of send(2), sendto(2), sendmsg(2) when using small input buffers.
  • The default pthread_mutex type is now PTHREAD_MUTEX_NORMAL, rather than THREAD_MUTEX_ERRORCHECK, just as on Linux.
  • Align pthread_attr stack functions more closely to Linux.
  • Mark pthread_attr_getstackaddr and pthread_attr_setstackaddr as deprecated, as on Linux.
  • Bug Fixes:
  • Fix various assorted bugs (potential buffer overruns, resource leaks, you name it) caught by Coverity.
  • Fix return value of getgrouplist if the number of groups is bigger than the application-provided buffer can hold.
  • Fix a spurious error condition in calls to getaddrinfo on x86_64.
  • Workaround a problem following native NTFS symlinks. This patch has been not applied to 1.7.30, accidentally.
  • Fix an off-by-one bug in res_querydomain.
  • Don't catch STATUS_STACK_OVERFLOW preliminary on 64 bit.
  • Make sure that signals are properly delivered when sending lots of signals in succession.

New in Cygwin 1.7.29 (Apr 10, 2014)

  • Allow quoting of arguments to the CYGWIN environment variable, i.e., set CYGWIN=error_start="c:\bin\someprogram -T"
  • Bug Fixes:
  • Try harder to do the right thing in the presence of console screen buffers, i.e., never clear the screen buffer unless the user asked for it. Also fix screen escape sequences which attempted to scroll the screen.
  • Make "ps -W" report different WINPIDs for processes that have been execed from, e.g., cmd.
  • Avoid error messages from the signal handler if we're exiting.
  • Fix return value from getgrouplist function to behave like glibc.
  • Fix initialization of open_memstream which could lead to dropping the entire string.
  • Fix problem where ending chunk of audio was missing when accessing /dev/dsp.
  • Fix exception handling on x86_64.
  • Fix reading extended attributes from files on remote shares.
  • Fix sending an invalid pointer to cygserver during fork.

New in Cygwin 1.7.28 (Feb 5, 2014)

  • New:
  • popen now supports the Glibc 'e' flag to set the FD_CLOEXEC flag on the pipe
  • in a thread-safe way.
  • netinet/ip6.h header.
  • Bug Fixes:
  • Store and restore FPU control word and XMM registers when a signal is handled.
  • Signals should no longer hang when they occur within a low-level Windows DLL.
  • If it turns out that transactions don't work during unlink(2) or rename(2),
  • despite the fact that the filesystem claims to handle them, stop transaction and try again without.
  • Closing a dup'ed master tty handle should no longer invalidate the dup'ed fd.
  • Problems where ps hangs when used in a pipeline should now be solved.
  • Using gdb from a Windows console rather than a pty should no longer randomly hang.
  • Fix locale-specific radix char handling in scanf family of functions.
  • The console buffer should no longer be cleared when the resolution of the console exceeds some magic threshold.
  • Fix inadvertent clearing of entire console buffer on clear screen.
  • Make sure that stackdump file is closed after use.

New in Cygwin 1.7.27 (Dec 9, 2013)

  • What changed:
  • Don't create native symlinks with target paths having long path prefixes "\\?\" if the target path is shorter than MAX_PATH characters. This works around a Windows 8.1 bug: The ShellExecuteW fails if the lpFile parameter points to a native NTFS symlink with a target path prefixed with "\\?\".
  • Bug Fixes:
  • Some devices, like, /dev/dsp are no longer detected due to the new use of \Device\Null for devices which have no real handle.
  • Cygwin could easily run out of file handles.

New in Cygwin 1.7.26 (Nov 29, 2013)

  • What's new:
  • getaddrinfo now supports glibc-specific International Domain Name (IDN)
  • extension flags: AI_IDN, AI_CANONIDN, AI_IDN_ALLOW_UNASSIGNED, AI_IDN_USE_STD3_ASCII_RULES.
  • getnameinfo now supports glibc-specific International Domain Name (IDN)
  • extension flags: NI_IDN, NI_IDN_ALLOW_UNASSIGNED, I_IDN_USE_STD3_ASCII_RULES.
  • Preliminary, experimental support of the posix_spawn family of functions. New associated header /usr/include/spawn.h.
  • What changed:
  • Slightly improve randomness of /dev/random emulation.
  • Allow to use advisory locking on any device. POSIX fcntl and lockf locking
  • works with any device, BSD flock locking only with devices backed by an OS
  • handle. Right now this excludes console windows on pre Windows 8, as well as almost all virtual files under /proc from BSD flock locking.
  • The header /usr/include/exceptions.h, containing implementation details for
  • 32 bit Windows' exception handling only, has been removed.
  • Bug fixes:
  • pthread_atparent hook should not be called in the child.
  • 64 bit only: Correctly mmap'ing regions > 4 Gigs.
  • Fix random content of /proc/$PID/ctty if the process has no controlling
  • tty. Set to just "\n" instead.
  • Properly set process sid rather than always using -1.
  • Fix a potential crash after calling lseek on /dev/clipboard.
  • Fix a handle inheritance bug in raw disk and tape device handling which led to EBADF errors in child processes.
  • open("/dev", O_CREAT) accidentally created a /dev file if no /dev exists at the time.
  • DIR *d = opendir ("foo"); flock (dirfd (d), ...); worked, but did the wrong thing.
  • Reading from /dev/windows was broken for some time.
  • select'ing on /dev/windows accidentally didn't take the setting of ioctl (WINDOWS_HWND) into account.
  • Fix typos in cygcheck which could crash Windows 8 and 8.1 machines.
  • Show OS version correctly even on Windows 8.1 and Server 2012 R2.
  • dup2() could crash in some cases for a destination >= 256
  • Try to workaround the following problem: unlink(2) could fail, if the file was opened casesensitive and has to be moved to the recycler due to a sharing violation.

New in Cygwin 1.7.25 (Sep 2, 2013)

  • Change magic number associated with process information block so that 32-bit Cygwin processes don't try to interpret 64-bit information and vice-versa.
  • Redefine content of mtget tape info struct to allow fetching the number of partitions on a tape.
  • Bug fixes:
  • Fix creating two partitions on tape drives supporting initiator partitions.
  • Update the internally used blocksize after setting a new blocksize for the current tape.
  • Fix problem with queued signals as manifested by:
  • Fix bug in sbrk breaking extending the heap beyond its default size.

New in Cygwin 1.7.24 (Aug 15, 2013)

  • Allow application override of posix_memalign.

New in Cygwin 1.7.23 (Aug 9, 2013)

  • Added CYGWIN environment variable keyword which causes the full windows command line (

New in Cygwin 1.7.22 (Jul 23, 2013)

  • Changed:
  • Support for /dev/mem, /dev/kmem and /dev/port removed, since OS support was limited to 32 bit Windows XP only.
  • Added cygwin GetCommandLine wrappers which will allow Cygwin programs to
  • appear to) use the Windows command line functions.
  • regcomp(3) now allows character values >= 0x80 if the current codeset is ASCII (default codeset in the "C"/"POSIX" locale). This allows patterns containing arbitrary byte values as GLibc's regcomp.
  • Bug fixes:
  • Fix an off-by-one error in path handling which made the access check for the existing path before a ".." component (introduced with 1.7.21) fail for UNC paths (//server/share/path)
  • Fix long-standing problem which allows to access files via ".." using an invalid POSIX path, for instance, `cd nonexistant/../existing_dir".
  • Fix an initialization bug in XSI IPC on, which could result in XSI IPC functions misbehave on x86_64.
  • Fix a timer handle leak in sleep family of functions.
  • Fix issue with raise() not causing the process to exit with a signal status. Also only set "dumped core" flag when it's a "kernel" signal.

New in Cygwin 1.7.21-1 (Jul 15, 2013)

  • New API: rawmemchr.
  • Make cygcheck report when scanned DLLs are symlinks or are not meant
  • for the current architecture (x86 vs. x86_64).
  • Bug fixes:
  • Fix long-standing problem which allows to access files via ".." using an invalid POSIX path, for instance, `cd nonexistant/../existing_dir".
  • Fix EFAULT when reading large clipboard.
  • Fix creation of relative native symlinks.
  • Update profiling code to latest from Mingw-w64.
  • Fix character comparisons in certain scenarios within the functions glob(3), fnmatch(3), and regcomp(3). All Unicode chars beyond U+0100 are affected.
  • Fix problem with pty closing which manifested as a screen issue

New in Cygwin 1.7.20-1 (Jun 7, 2013)

  • Fix starvation problem when handling SIGCONT.

New in Cygwin 1.7.19-1 (Jun 5, 2013)

  • Drop support for Windows 2000 and Windows XP pre-SP3.
  • Add support for building a 64 bit version of Cygwin on x86_64 natively.
  • Add support for creating native symlinks (CYGWIN=winsymlinks:native or
  • CYGWIN=winsymlinks:nativestrict).
  • Add support for the AFS filesystem.
  • Preliminary support for mandatory locking via fcntl/flock/lockf, using
  • Windows locking semantics. New F_LCK_MANDATORY fcntl command.
  • New APIs: __b64_ntop, __b64_pton, arc4random, arc4random_addrandom,
  • arc4random_buf, arc4random_stir, arc4random_uniform.
  • Bug fixes:
  • getgrouplist now always creates a group list, even if it's empty.
  • In fork, call CreateProcessW with the same command line as the parent process. This seems to make sure the stack is created in the same memory location as in the parent.
  • Fix a build problem resulting in Cygwin functions picking up the wrong
  • new/delete.
  • Fix an incorrect condition which breaks fork after all dlopen'ed DLLs
  • have already been dlclose'd.
  • Fix buggy usage of NtReadFile when reading from device under /proc/sys.
  • Fix an include in to avoid circular dependency.
  • Fix a hang on exit when calling pthread_join in global desctructor.

New in Cygwin 1.7.18-1 (Apr 22, 2013)

  • For performance reasons, Cygwin does not try to create sparse files
  • automatically anymore, unless you use the new "sparse" mount option.
  • Added Windows console cursor appearance support:
  • Show/Hide Cursor mode (DECTCEM): "ESC[?25h" / "ESC[?25l"
  • Set cursor style (DECSCUSR): "ESC[n q" (note the space before the q);
  • where n is 0, 1, 2 for block cursor, 3, 4 for underline cursor (all
  • disregarding blinking mode), or > 4 to set the cursor height to a
  • percentage of the cell height.
  • New API: cfsetspeed.
  • Changes in cygwin1.dll and gdb-7.5.50-2 now allow gdb to recognize Cygwin-specific signals like "SIGTERM" as well as Windows signals like "SIGSEGV". This feature is still experimental.
  • Bug fixes:
  • Fix handle leak in rewinddir(3). This affected Windows 2000 only.
  • Allow quoted filenames in @ argument expression when called from native
  • processes.
  • Fix a bug in initializing the stdio settings at process startup, which
  • could result in missing output.
  • rename("dir1", "dir2") could result in deleting dir2, even if the rename didn't take place, for instance, if dir1 and dir2 were not on the same device.
  • rename("file1", "file2") would fail in almost all cases on NFS, due to a bug in the NFS driver's implementation of the FileRenameInformation info class.
  • Fix bug where dup2 segv'ed on negative fd.
  • Work around problem of erratic exit codes caused by a thread exiting while process is shutting down.
  • Always interrupt select() on a signal.
  • Fix problem where sigwait() ignored non-thread-specific signals.
  • Fix special processing of "cmd /c" so that "/C" is allowed as well
  • Return 0 rather than -1 when select() times out.
  • Fix some bugs in CTRL-S/CTRL-Q handling in ptys
  • Fix "error while loading shared libraries:" message to properly display the shared library name in more cases.
  • Fix unreported problem of exec'ed and spawn'ed processes not inheriting the signal mask of their "parents".
  • Fix race in signal mask detection with new thread creation.

New in Cygwin 1.7.17-1 (Oct 22, 2012)

  • Support the "e" flag to fopen(3). This is a Glibc extension which allows to fopen the file with the O_CLOEXEC flag set.
  • Support the "x" flag to fopen(3). This is a Glibc/C11 extension which allows to open the file with the O_EXCL flag set.
  • Fixes:
  • Prevent CTRL-S hang.
  • Revamp signals so that signals-to-threads more closely mimic Linux
  • operation.
  • Revert to only creating a new session leader when we know that a
  • console process is started in the background.
  • Fix mysterious crashes when accessing /etc.
  • Fix a potential race condition starting multiple "first" Cygwin processes
  • concurrently.
  • Fix a bug in unlink/rmdir which could result in removing non-empty
  • directories on network drives. Also fix problems trying to rename files
  • under newer Samba versions.
  • Prefer to call WSARecvMsg from recvmsg if possible.
  • Correct hang typified by running "procps" after Cygwin has started a
  • Windows process.

New in Cygwin 1.7.13-1 (Apr 6, 2012)

  • mkpasswd and mkgroup now try to print an entry for the TrustedInstaller account existing since Windows Vista/Server 2008.
  • Terminal typeahead when switching from canonical to non-canonical mode is now properly flushed.
  • Bug fixes:
  • getpass(3) now reads from and writes to/dev/tty in the first place, and only falls back to stdin and stderr if opening /dev/tty fails.
  • Fix a bug in execve, which results in wrongly handling arbitrary Cygwin executables as native, non-Cygwin executables.
  • Fix a bug in the new /dev code which disallowed to create files under /dev, even if /dev is backed by an existing /dev directory on disk. This could result in misbehaving postinstall scripts.
  • (Hopefully) fix a bug in /etc/passwd code which could result in reading unrelated home path entries when accessing the "unknown user account" entry (account name "????????").

New in Cygwin 1.7.11-1 (Mar 20, 2012)

  • New:
  • New pldd command for listing DLLs loaded by a process.
  • New API: scandirat.
  • Changed:
  • Fixed problem where background Cygwin processes kept the windows
  • console window from exiting.
  • Change the way remote shares mapped to drive letters are recognized
  • when creating the cygdrive directory. If Windows claims the drive
  • is unavailable, don't show it in the cygdrive directory listing.
  • Lower the stack pressure in some Cygwin calls by reducing the buffer
  • space allocated on the stack.
  • Raise default stacksize of pthreads from 512K to 1 Meg. It can still
  • be changed using the pthread_attr_setstacksize call.
  • Bugfixes:
  • process.h header has been moved back from /usr/include/cygwin to /usr/include.
  • Make header C++ clean.
  • Fix a bug in fork which results in false positives like this: child_info_fork::abort: address space needed by 'cygiconv-2.dll'
  • 0x6D0D0000) is already occupied
  • Fix for C99 mode.
  • Fix setting the USERPROFILE variable when switching the user context.
  • Fix a SEGV in pthread_cond_timedwait.
  • Fix a return value bug in getitimer.
  • Fix bug in write() call which disallowed writing to /dev/dsp.
  • Various bugfixes in mandatory file locking.
  • Fix how Cygwin recognizes whether the kernel is set to allow case sensitive file operations.
  • Fix an installation bug which dropped installing /usr/include/rpc.

New in Cygwin 1.7.4-1 (Apr 7, 2010)

  • Fix a typo which made FIFOs non-functional.
  • Fix wrong return value in call to btowc('\0').
  • Allow atexit callbacks to register further atexit callbacks. New /usr/include/sched.h and /usr/incude/sys/sched.h files due to alignment with newlib files. No functional change. However, if the new files result in problems when building projects, please report to the Cygwin list.

New in Cygwin 1.5.25-7 (Jan 16, 2008)

  • Fix return value of poll().
  • Fix file position in append mode for non-Cygwin processes.
  • Fix missing definition of struct iovec when including sys/socket.h.
  • tzset is now thread safe.
  • Fix a problem with spurious memory allocation failure.
  • Fix permission settings for directories on non-NTFS file systems.
  • Fix NaN and -inf handling in various math functions.
  • Fix a problem with potentially wrong results in tgammaf().