Cygwin Overview
What is it?
Cygwin is a Linux-like environment for Windows. It consists of a DLL
(cygwin1.dll), which acts as an emulation layer
providing substantial POSIX (Portable Operating
System Interface) system call functionality, and a collection of tools,
which provide a Linux look and feel. The Cygwin DLL works with all x86
versions of Windows since Windows 95.
With Cygwin installed, users have access to many standard UNIX
utilities. They can be used from one of the provided shells such
as bash or from the Windows Command Prompt.
Additionally, programmers may write Win32 console or GUI applications
that make use of the standard Microsoft Win32 API and/or the Cygwin API.
As a result, it is possible to easily port many significant UNIX
programs without the need for extensive changes to the source code.
This includes configuring and building most of the available GNU
software (including the development tools included with the Cygwin
distribution).
DOCTOOL-INSERT-ov-ex-win
DOCTOOL-INSERT-ov-ex-unix
Are the Cygwin tools free software?
Yes. Parts are GNU software
(gcc, gas, ld, etc.),
parts are covered by the standard
X11 license,
some of it is public domain, some of it was written by Red Hat and placed under
the GNU General Public
License (GPL). None of it is shareware. You don't have to pay anyone to
use it but you should be sure to read the copyright section of the FAQ for more
information on how the GNU GPL may affect your use of these
tools. If you intend to port a proprietary application using the Cygwin
library, you may want the Cygwin proprietary-use license.
For more information about the proprietary-use license, please go to
http://www.redhat.com/software/tools/cygwin/
. Customers of the native Win32 GNUPro should feel free to submit bug
reports and ask questions through the normal channels. All other
questions should be sent to the project mailing list
cygwin@cygwin.com.
A brief history of the Cygwin project
A more complete historical look Cygwin is Geoffrey J. Noer's 1998 paper,
"Cygwin32: A Free Win32 Porting Layer for UNIX® Applications" which can be
found at the
2nd USENIX Windows NT Symposium Online Proceedings.
Cygwin began development in 1995 at Cygnus Solutions (now part of Red Hat
Software). The first thing done was to enhance the development tools
(gcc, gdb, gas,
etc.) so that they could generate and interpret Win32 native
object files.
The next task was to port the tools to Win NT/9x. We could have
done this by rewriting large portions of the source to work within the
context of the Win32 API. But this would have meant spending a huge
amount of time on each and every tool. Instead, we took a
substantially different approach by writing a shared library
(the Cygwin DLL) that adds the necessary UNIX-like functionality
missing from the Win32 API (fork,
spawn, signals,
select, sockets, etc.). We call this
new interface the Cygwin API. Once written, it was possible to build working
Win32 tools using UNIX-hosted cross-compilers, linking against this
library.
From this point, we pursued the goal of producing native tools
capable of rebuilding themselves under Windows 9x and NT (this is
often called self-hosting). Since neither OS ships with standard UNIX
user tools (fileutils, textutils, bash, etc...), we had to get the GNU
equivalents working with the Cygwin API. Most of these tools were
previously only built natively so we had to modify their configure
scripts to be compatible with cross-compilation. Other than the
configuration changes, very few source-level changes had to be
made. Running bash with the development tools and user tools in place,
Windows 9x and NT look like a flavor of UNIX from the perspective of
the GNU configure mechanism. Self hosting was achieved as of the beta
17.1 release in October 1996.
The entire Cygwin toolset was available as a monolithic install. In
April 2000, the project announced a
New Cygwin Net Release which provided the native Win32 program
setup.exe to install and upgrade each package
separately. Since then, the Cygwin DLL and setup.exe
have seen continuous development.
DOCTOOL-INSERT-highlights