is a collection of
Free Software tools originally developed by
Cygnus Solutions to allow various versions of
Microsoft Windows to act somewhat like a
Unix system. It aims mainly at
Porting software that runs on
POSIX systems (such as
Linux systems,
BSD systems, and Unix systems) to run on Windows with little more than a recompilation. Programs ported with Cygwin work best on
Windows NT ,
Windows 2000 ,
Windows XP , and
Windows Server 2003 , but some may run acceptably on
Windows 95 and
Windows 98 . Cygwin is currently maintained by employees of
Red Hat and others.
Cygwin consists of a library that implements the POSIX system call
API in terms of
Win32 system calls, a
GNU development toolchain (such as
GCC and
GDB ) to allow basic software development tasks, and some application programs equivalent to common programs on the Unix system. It added the
X Window System in
2001 .
The package also includes a library called
MinGW that works with the native MSVCRT library (
Windows API ) included with Windows; MinGW has less RAM and disk overhead, operates under a permissive (non-
Copyleft )
License , and can link to any software, but it does not implement as much of the POSIX specification as the Cygwin library does.
Cygwin has no direct support for
Unicode , nor does it support any character sets except the current Windows and OEM codepages of your system (e.g., for a Russian user, the only codepages available will be
CP1251 and
CP866 , but not
KOI8-R ,
ISO 8859-5 ,
UTF-8 or anything else).
Iconv is provided, so it is possible to work with files in other encodings, but conversion must be performed manually.
Red Hat normally licenses the Cygwin library under the
GNU General Public License with an exception to allow linking to any
Free Software whose license conforms to the
Open Source Definition . (Red Hat also sells commercial licenses to those who wish to redistribute programs that use the Cygwin library under
Proprietary terms.)
One can subscribe to one of many Cygwin-related mailing lists at the
Cygwin Mailing Lists page.
Cygwin began in
1995 as a project of
Steve Chamberlain , a
Cygnus engineer who observed that Windows NT and 95 used
COFF as their
Object File Format , and that GNU already included support for
X86 and COFF, and the C library
Newlib ; so at least in theory it should not be difficult to retarget
GCC and get a
Cross Compiler producing executables that would run on Windows. This proved to be so in practice, and a prototype came up quickly.
The next step was to attempt to bootstrap the compiler on a Windows system, but this required enough emulation of Unix to let the
GNU Configure Shell Script run, which requires a shell like
Bash , which in turn requires
Fork and
Standard I/O . Windows includes similar functionality, so the Cygwin library proper just needs to translate calls and manage private versions of data, such as
File Descriptor s.
By
1996 , other engineers had joined in, since it was clear that Cygwin would be a useful way to provide Cygnus' embedded tools hosted on Windows systems (the previous strategy had been to use
DJGPP ). It was especially attractive because it was possible to do a three-way cross-compile, for instance to use a hefty
Sun Workstation to build, say, a Windows-x-
MIPS cross-compiler, which was faster than using the PC of the time. Starting around
1998 , Cygnus also began offering the Cygwin package as a product of interest in its own right.
- Cygwin/X is a Free X11 implementation running on top of Cygwin.
- MinGW is a Free port of the GNU development tools to Windows.
- DJGPP is a similar suite for DOS/Windows.
- Services For UNIX is a Microsoft product with similar capabilities to Cygwin; it has the advantage of speed, although it is not available for Windows XP Home, or older non NT-based versions of Windows.
- The UWIN package allows UNIX applications to be built and run on Windows XP/2000/NT/ME/98/95.
- CoLinux uses a different approach to running Linux programs in Windows: it runs Linux itself to host them.
- KDE On Cygwin