OSDN Git Service

Merge branch 'master' of git://github.com/monaka/binutils
[pf3gnuchains/pf3gnuchains3x.git] / winsup / doc / overview.sgml
1 <chapter id="overview"><title>Cygwin Overview</title>
2
3 <sect1 id="what-is-it"><title>What is it?</title>
4
5 <para>
6 Cygwin is a Linux-like environment for Windows. It consists of a DLL
7 (<filename>cygwin1.dll</filename>), which acts as an emulation layer
8 providing substantial <ulink url="http://www.pasc.org/#POSIX">POSIX</ulink>
9 (Portable Operating System Interface) system call functionality, and a
10 collection of tools, which provide a Linux look and feel. The Cygwin DLL
11 works with all x86 and AMD64 versions of Windows NT since Windows NT 4.
12 The API follows the
13 <ulink url="http://www.opengroup.org/onlinepubs/009695399/nfindex.html">Single
14 Unix Specification</ulink> as much as possible, and then Linux practice.
15 The major differences between Cygwin and Linux is the C library
16 (<literal>newlib</literal> instead of <literal>glibc</literal>).
17 </para>
18 <para>
19 With Cygwin installed, users have access to many standard UNIX
20 utilities.  They can be used from one of the provided shells such
21 as <command>bash</command> or from the Windows Command Prompt.
22 Additionally, programmers may write Win32 console or GUI applications
23 that make use of the standard Microsoft Win32 API and/or the Cygwin API.
24 As a result, it is possible to easily port many significant UNIX
25 programs without the need for extensive changes to the source code.
26 This includes configuring and building most of the available GNU
27 software (including the development tools included with the Cygwin
28 distribution). 
29 </para>
30 </sect1>
31
32 DOCTOOL-INSERT-ov-ex-win
33 DOCTOOL-INSERT-ov-ex-unix
34
35 <sect1 id="are-free"><title>Are the Cygwin tools free software?</title>
36
37 <para>Yes. Parts are <ulink url="http://www.gnu.org/">GNU</ulink> software 
38 (<command>gcc</command>, <command>gas</command>, <command>ld</command>, etc.),
39 parts are covered by the standard 
40 <ulink url="http://www.x.org/Downloads_terms.html">X11 license</ulink>, 
41 some of it is public domain, some of it was written by Red Hat and placed under
42 the <ulink url="http://www.gnu.org/licenses/gpl.html">GNU General Public 
43 License</ulink> (GPL). None of it is shareware. You don't have to pay anyone to
44 use it but you should be sure to read the copyright section of the FAQ for more
45 information on how the GNU GPL may affect your use of these
46 tools. If you intend to port a proprietary application using the Cygwin
47 library, you may want the Cygwin proprietary-use license.
48 For more information about the proprietary-use license, please go to
49 <ulink url="http://www.redhat.com/services/custom/cygwin/">http://www.redhat.com/services/custom/cygwin/</ulink>. 
50 Customers of the native Win32 GNUPro should feel free to submit bug
51 reports and ask questions through Red Hat channels.  All other
52 questions should be sent to the project mailing list
53 <email>cygwin@cygwin.com</email>.</para>
54
55 </sect1>
56
57 <sect1 id="brief-history"><title>A brief history of the Cygwin project</title>
58
59 <note>
60 <para>
61 A historical look into the first years of Cygwin development is
62 Geoffrey J. Noer's 1998 paper, "Cygwin32: A Free Win32 Porting Layer for
63 UNIX&reg; Applications" which can be found at the <ulink
64 url="http://www.usenix.org/publications/library/proceedings/usenix-nt98/technical.html">
65 2nd USENIX Windows NT Symposium Online Proceedings</ulink>.
66 </para>
67 </note>
68 <para>
69 Cygwin began development in 1995 at Cygnus Solutions (now part of Red Hat,
70 Inc.).  The first thing done was to enhance the development tools 
71 (<command>gcc</command>, <command>gdb</command>, <command>gas</command>, 
72 etc.) so that they could generate and interpret Win32 native
73 object files.
74 The next task was to port the tools to Win NT/9x. We could have
75 done this by rewriting large portions of the source to work within the
76 context of the Win32 API. But this would have meant spending a huge
77 amount of time on each and every tool. Instead, we took a
78 substantially different approach by writing a shared library
79 (the Cygwin DLL) that adds the necessary UNIX-like functionality
80 missing from the Win32 API (<function>fork</function>,
81 <function>spawn</function>, <function>signals</function>,
82 <function>select</function>, <function>sockets</function>, etc.).  We call this
83 new interface the Cygwin API. Once written, it was possible to build working
84 Win32 tools using UNIX-hosted cross-compilers, linking against this
85 library.</para>
86
87 <para>From this point, we pursued the goal of producing native tools
88 capable of rebuilding themselves under Windows 9x and NT (this is
89 often called self-hosting). Since neither OS ships with standard UNIX
90 user tools (fileutils, textutils, bash, etc...), we had to get the GNU
91 equivalents working with the Cygwin API. Most of these tools were
92 previously only built natively so we had to modify their configure
93 scripts to be compatible with cross-compilation. Other than the
94 configuration changes, very few source-level changes had to be
95 made. Running bash with the development tools and user tools in place,
96 Windows 9x and NT look like a flavor of UNIX from the perspective of
97 the GNU configure mechanism. Self hosting was achieved as of the beta
98 17.1 release in October 1996.</para>
99
100 <para>
101 The entire Cygwin toolset was available as a monolithic install. In
102 April 2000, the project announced a
103 <ulink url="http://www.cygwin.com/ml/cygwin/2000-04/msg00269.html">
104 New Cygwin Net Release</ulink> which provided the native Win32 program
105 <command>setup.exe</command> to install and upgrade each package
106 separately. Since then, the Cygwin DLL and <command>setup.exe</command> 
107 have seen continuous development.
108 </para>
109
110 <para>
111 The latest major improvement in this development is the 1.7 release in
112 2009, which dropped Windows 95/98/Me support in favor of using Windows
113 NT features more extensively.  It adds a lot of new features like
114 case-sensitive filenames, NFS interoperability, IPv6 support and much
115 more.</para>
116
117 </sect1>
118
119 DOCTOOL-INSERT-highlights
120 DOCTOOL-INSERT-ov-new1.7
121
122 </chapter>