Cygwin is large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows. It is also a DLL (cygwin1.dll) which provides substantial POSIX API functionality.

Cygwin is not:

  • a way to run native Linux apps on Windows. You must rebuild your application from source if you want it to run on Windows.
  • a way to magically make native Windows apps aware of UNIX functionality like signals, ptys, etc. Again, you need to build your apps from source if you want to take advantage of Cygwin functionality.

The Cygwin DLL currently works with all recent, commercially released x86_64 versions of Windows, starting with Windows 7.

What's New

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