2 min read

Last Saturday, Cygwin 3.0.0-1 was released. This major release brings support for new file systems, new tools, APIs and other changes.

New features in Cygwin 3.0.0-1


Case sensitive directories are now supported. Directories are created automatically by the mkdir(2) command within the Cygwin installation as case sensitive from this release. For this feature to work, you need Windows 10 1803 or later with Windows Subsystem for Linux (WSL) installed.

There are two new file input output controls called FS_IOC_GETFLAGS and FS_IOC_SETFLAGS. The actual inode flags are Cygwin-specific. These flags allow setting or resetting the DOS attributes, file sparseness, FS level encryption, and compression. They can also be used for modifying case sensitivity programmatically.

There are two new tools namely chattr(1) and lsattr(1) to utilize setting and viewing the new input output controls on the command line.

Support for the following has been added:

  • exFAT
  • Linux-specific open(2) flag O_PATH
  • Linux-specific linkat(2) flag AT_EMPTY_PATH.
  • The counter for posix timers (via timer_getoverrun() or siginfo_t::si_overrun) are overrun now

The following New APIs have been added:

  • signalfd
  • timerfd_create
  • timerfd_gettime
  • timerfd_settime
  • timer_getoverrun.

fork(2) now can now recover from a situation when an in-use executable/dll is removed or replaced during process runtime. This behavior is disabled by default and limited to EXE and DLL files on the same NTFS partition as Cygwin.

Changes in Cygwin 3.0.0-1

clock_nanosleep, pthread_condattr_setclock and timer_create now support all clocks with the exception of CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID. clock_setres is a no-op in Cygwin 3.0.0-1.

Renaming a file to another name of an in-use file deletes the other file now. Previously, it was moved to the recycle bin. You can use the new POSIX rename semantics on the NTFS starting with Windows 10 1809.

Now, open(…, O_TMPFILE) moves the file to trash immediately in order to free the parent directory. The wctype functions are updated to Unicode 11.0. The matherr, SVID, and X/Open math library configurations are removed. IEEE is the default math library configuration now.

uname(2) is improved for newly built applications. Kerberos/MSV1_0 S4U authentication replaces creating a token from scratch and Cygwin LSA authentication package.

To know about bug fixes etc, you can keep up with the Cygwin mailing list.

Read next

GitHub launches draft pull requests

Introducing RustPython, a Python 3 interpreter written in Rust

.NET Core 3 Preview 2 is here!

Data science enthusiast. Cycling, music, food, movies. Likes FPS and strategy games.