Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Cygwin
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Unix-like environment for Windows}} {{Promotional|date=January 2024}} {{Use mdy dates|date=May 2024}} {{Infobox software | name = Cygwin | logo = Cygwin logo.svg | logo caption = | screenshot = Cygwin X11 rootless WinXP.png | caption = Running Cygwin, including [[Cygwin/X]], under [[Windows XP]] | collapsible = | author = Steve Chamberlain, [[Cygnus Solutions]] | developer = [[Cygnus Solutions]], [[Red Hat]], Cygwin project volunteers | released = {{start date and age|1995|10|18}} | latest_release_version = {{wikidata|property|reference|edit|Q216192|P348}} | latest_release_date = {{start date and age|{{wikidata|qualifier|Q216192|P348|P577}}}} | operating system = [[Microsoft Windows]] | programming language = [[C (programming language)|C]]/[[C++]] | genre = [[:Category:Unix SUS2008 utilities|POSIX standard utilities]], [[C POSIX library|POSIX standard library]], [[C standard library]], [[compatibility layer]] | license = [[GNU General Public License|GPLv3]], [[GNU Lesser General Public License|LGPLv3]]<ref>{{Cite web | url = https://cygwin.com/licensing.html | title = Cygwin Licensing Terms | access-date = 2022-12-15 | archive-date = 2012-07-28 | archive-url = https://web.archive.org/web/20120728133502/http://cygwin.com/licensing.html | url-status = live }}</ref> }} '''Cygwin''' ({{IPAc-en|Λ|s|Ιͺ|Ι‘|w|Ιͺ|n}} {{respell|SIG|win}})<ref>{{Cite mailing list | mailing-list = Cygwin | url = http://cygwin.com/ml/cygwin/2004-09/msg00702.html | title = Re: How do you pronounce it? | first = Larry | last = Hall | date = 2004-09-14 | access-date = 2007-10-10 | archive-date = 2011-08-30 | archive-url = https://web.archive.org/web/20110830025943/http://www.cygwin.com/ml/cygwin/2004-09/msg00702.html | url-status = live }}</ref> is a [[free and open-source software|free and open-source]] [[Unix-like]] [[runtime environment|environment]] and [[command-line interface]] (CLI) for [[Microsoft Windows]]. The project also provides a software repository containing [[Open-source software|open-source]] packages. Cygwin allows [[source code]] for [[Unix-like]] operating systems to be compiled and run on Windows. Cygwin provides native integration of Windows-based applications. The [[terminal emulator]] [[mintty]] is the default command-line interface provided to interact with the environment. The Cygwin installation directory layout mimics the [[root file system]] of Unix-like systems, with directories such as <code>/bin</code>, <code>/home</code>, <code>/etc</code>, <code>/usr</code>, and <code>/var</code>. Cygwin is released under the [[GNU Lesser General Public License]] version 3.<ref>{{cite web|title=Cygwin library now available under GNU Lesser General Public License|url=https://www.redhat.com/en/about/blog/cygwin-library-now-available-under-gnu-lesser-general-public-license|website=Red Hat|access-date=2016-06-23|archive-date=2016-06-24|archive-url=https://web.archive.org/web/20160624112409/https://www.redhat.com/en/about/blog/cygwin-library-now-available-under-gnu-lesser-general-public-license|url-status=live}}</ref> It was originally developed by [[Cygnus Solutions]],<ref>{{Cite web|url=https://cygwin.com/cygwin-ug-net/brief-history.html|title=A brief history of the Cygwin project|date=2018-02-02|website=Cygwin|access-date=2020-01-10|archive-date=2020-01-08|archive-url=https://web.archive.org/web/20200108185000/http://cygwin.com/cygwin-ug-net/brief-history.html|url-status=live}}</ref><ref name="usenix.org">{{Cite web|url=https://www.usenix.org/legacy/publications/library/proceedings/usenix-nt98/full_papers/noer/noer_html/noer.html|title=Cygwin32: A Free Win32 Porting Layer for UNIX Applications|date=1998-08-03|website=USENIX|access-date=2020-01-10|archive-date=2020-01-11|archive-url=https://web.archive.org/web/20200111073949/https://www.usenix.org/legacy/publications/library/proceedings/usenix-nt98/full_papers/noer/noer_html/noer.html|url-status=live}}</ref> which was later acquired by [[Red Hat]] (now part of [[IBM]]), to port the GNU [[toolchain]] to [[Win32]], including the [[GNU Compiler Collection|GNU Compiler Suite]]. Rather than rewrite the tools to use the Win32 [[Runtime system|runtime environment]], Cygwin implemented a [[POSIX]]-compatible environment in the form of a DLL.<ref>{{Cite web|url=https://discuss.howtogeek.com/t/solved-linux-subsystem-vs-cygwin-vs-mobaxterm/56366|title=(Solved) Linux Subsystem vs Cygwin vs MobaXterm|date=2017-01-24|website=Tech Help Forum by How-To Geek|access-date=2019-03-15|archive-date=2023-02-20|archive-url=https://web.archive.org/web/20230220141544/https://www.facebook.com/groups/geektalkgroup/|url-status=live}}</ref> The brand motto is "''Get that Linux feeling β on Windows''", although Cygwin doesn't have Linux in it.<ref>{{Cite web |title=Cygwin |url=https://www.cygwin.com/ |access-date=2024-03-11 |website=www.cygwin.com}}</ref> == History == {{More citations needed section|date=January 2024}} Cygwin began in 1995 as a project of Steve Chamberlain, a [[Cygnus Solutions|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 standard library|C library]] [[newlib]]. He thought that it would be possible to retarget [[GNU Compiler Collection|GCC]] and produce a [[cross compiler]] generating executables that could run on Windows. A prototype was later developed. Chamberlain [[Bootstrapping (compilers)|bootstrap]]ped the compiler on a Windows system, to emulate Unix to let the [[Autoconf|GNU configure]] [[shell script]] run. Initially, Cygwin was called ''Cygwin32''.<ref name="usenix.org"/>{{Efn|Not to be confused with the current [[GnuWin32]] project.|group=note}} When [[Microsoft]] registered the trademark Win32, the "32" was dropped to simply become ''Cygwin''. In 1999, Cygnus offered Cygwin 1.0 as a [[Product (business)|commercial product]].<ref>{{cite web|url=https://books.google.com/books?id=_k4EAAAAMBAJ&q=InfoWorld+15+Nov+1999+Cygwin&pg=PA110|title=Cygwin Unites Unix and Windows Apps|website=Google Books|date=1999-11-15|access-date=2020-01-13|archive-date=2023-02-20|archive-url=https://web.archive.org/web/20230220141540/https://books.google.com/books?id=_k4EAAAAMBAJ&q=InfoWorld+15+Nov+1999+Cygwin&pg=PA110|url-status=live}}</ref> Subsequent versions have not been released, instead relying on continued open source releases. Geoffrey Noer was the project lead from 1996 to 1999.<ref>{{cite mailing list|mailing-list=Cygwin|first=DJ|last=Delorie|date=1999-02-17|url=https://cygwin.com/ml/cygwin/1999-02/msg00556.html|title=fyi: who does what|access-date=2020-01-13|archive-date=2004-02-14|archive-url=https://web.archive.org/web/20040214161103/http://cygwin.com/ml/cygwin/1999-02/msg00556.html|url-status=live}}</ref><ref>{{cite mailing list|mailing-list=Cygwin|first=Geoffrey|last=Noer|date=1999-02-19|url=https://cygwin.com/ml/cygwin/1999-02/msg00639.html|title=A partial goodbye...|access-date=2020-01-13|archive-date=2004-02-02|archive-url=https://web.archive.org/web/20040202163707/http://cygwin.com/ml/cygwin/1999-02/msg00639.html|url-status=live}}</ref> Christopher Faylor was lead from 1999 to 2004; he left Red Hat and became co-lead with Corinna Vinschen.<ref>{{cite mailing list |mailing-list=Cygwin |first=Christopher |last=Faylor |date=2004-03-31 |url=https://cygwin.com/ml/cygwin/2004-03/msg01568.html |title=Changing jobs |access-date=2020-01-13 |archive-date=2015-09-06 |archive-url=https://web.archive.org/web/20150906184105/http://cygwin.com/ml/cygwin/2004-03/msg01568.html |url-status=live}}</ref><ref>{{cite mailing list |mailing-list=Cygwin |first=Christopher |last=Faylor |date=2014-07-31 |url=https://sourceware.org/ml/cygwin/2014-07/msg00392.html |title=Christopher Faylor β Withdrawing from the project |access-date=2 May 2015 |archive-date=2014-12-17 |archive-url=https://web.archive.org/web/20141217193224/https://sourceware.org/ml/cygwin/2014-07/msg00392.html |url-status=live}}</ref> Corinna Vinschen has been the project lead from mid-2014 to date (as of September, 2024).<ref>{{Cite web |title=Cygwin Notables |url=https://www.cygwin.com/who.html |access-date=2024-09-10 |website=www.cygwin.com}}</ref> From June 23, 2016, the Cygwin library version 2.5.2 was licensed under the [[GNU Lesser General Public License]] (LGPL) version 3.<ref>{{Cite web|url=https://www.redhat.com/en/blog/cygwin-library-now-available-under-gnu-lesser-general-public-license|title=Cygwin library now available under GNU Lesser General Public License|website=www.redhat.com|access-date=2021-05-27|archive-date=2021-06-16|archive-url=https://web.archive.org/web/20210616015533/https://www.redhat.com/en/blog/cygwin-library-now-available-under-gnu-lesser-general-public-license|url-status=live}}</ref> == Description == Cygwin is provided in two versions: the full [[64-bit computing|64-bit]] version and a stripped-down [[32-bit computing|32-bit]] version, whose final version was released in 2022.<ref>{{Cite web |last=Turney |first=Jon |date=November 25, 2022 |title=Cygwin x86 end-of-life |url=https://cygwin.com/pipermail/cygwin-announce/2022-November/010810.html |access-date=2023-09-14}}</ref> Cygwin consists of a library that implements the [[POSIX]] system call [[API]] in terms of Windows system calls to enable the running of a large number of application programs equivalent to those on [[Unix]] systems, and a [[GNU]] development toolchain (including [[GNU Compiler Collection|GCC]] and [[GNU Debugger|GDB]]). Programmers have ported the [[X Window System]], [[K Desktop Environment 3]], [[GNOME]],<ref>{{cite web|url=http://sourceware.org/cygwinports/|title=Cygwin Ports|access-date=2 May 2015|archive-date=11 May 2015|archive-url=https://web.archive.org/web/20150511055548/http://sourceware.org/cygwinports/|url-status=live}}</ref> [[Apache HTTP Server|Apache]], and [[TeX]]. Cygwin permits installing [[inetd]], [[syslogd]], [[Secure Shell|sshd]], [[Apache HTTP Server|Apache]], and other daemons as standard [[Windows service]]s. Cygwin programs have full access to the [[Windows API]] and other Windows libraries. Cygwin programs are installed by running Cygwin's "setup"<ref>{{Cite mailing list|mailing-list=Cygwin|title=New Cygwin Net Release|date=2000-04-17|last=Delorie|first=DJ|url=https://cygwin.com/ml/cygwin/2000-04/msg00269.html|access-date=2020-01-10|archive-date=2014-12-20|archive-url=https://web.archive.org/web/20141220040523/http://www.cygwin.com/ml/cygwin/2000-04/msg00269.html|url-status=live}}</ref> program, which downloads them from repositories on the Internet. The Cygwin API library is licensed under the GNU Lesser General Public License version 3 (or later), with an exception to allow linking to any [[free and open-source software]] whose license conforms to the [[Open Source Definition]].<ref name="cyglicense">{{cite web |title=What are the licensing terms? |url=https://cygwin.com/licensing.html |url-status=live |archive-url=https://web.archive.org/web/20120728133502/http://cygwin.com/licensing.html |archive-date=2012-07-28 |work=Cygwin}} </ref> Cygwin consists of two parts: # A [[dynamic-link library]] in the form of a [[C standard library]] that acts as a [[compatibility layer]] for the POSIX [[API]] and # A collection of [[Programming tool|software tools]] and applications that provide a Unix-like [[look and feel]].<ref name="auto1">{{Cite web |title=Cygwin FAQ |url=https://cygwin.com/faq.html |url-status=live |archive-url=https://web.archive.org/web/20210507021924/http://cygwin.com/faq.html |archive-date=2021-05-07 |access-date=2021-01-07 |website=cygwin.com}}</ref> Cygwin supports POSIX [[symbolic link]]s, representing them as plain-text files with the system attribute set. Cygwin 1.5 represented them as [[Windows Explorer]] [[File shortcut|shortcuts]], but this was changed for reasons of performance and POSIX correctness. Cygwin also recognises [[NTFS junction point]]s and symbolic links and treats them as POSIX symbolic links, but it does not create them. The POSIX API for handling [[access control list]]s (ACLs) is supported.<ref>{{Cite mailing list |last=Vinschen |first=Corinna |title=Updated: Cygwin 2.4.0-1 |mailing-list=Cygwin Announcements |date=2016-01-16 |url=http://www.cygwin.org/ml/cygwin-announce/2016-01/msg00018.html |access-date=2020-01-11 |archive-url=https://web.archive.org/web/20200111185248/http://www.cygwin.org/ml/cygwin-announce/2016-01/msg00018.html |archive-date=2020-01-11 |url-status=live}}</ref> === Technical details === A Cygwin-specific version of the Unix [[Mount (computing)|<code>mount</code>]] command allows mounting Windows paths as "filesystems" in the Unix file space. Initial mount points can be configured in <code>[[fstab|/etc/fstab]]</code>, which has a format very similar to Unix systems, except that Windows paths appear in place of devices. Filesystems can be mounted in binary mode (by default), or in text mode, which enables automatic [[Newline#Common problems|conversion]] between [[Newline|LF]] and [[CRLF]] endings (which only affects programs that open files without explicitly specifying text or binary mode). Cygwin 1.7 introduced comprehensive support for POSIX [[Locale (computer software)|locales]], and the [[UTF-8]] [[Unicode]] encoding became the default. The [[fork (system call)|fork]] system call for duplicating a process is fully implemented, but the [[copy-on-write]] optimization strategy could not be used.<ref>{{cite web |title=Cygwin FAQ: How is fork() implemented? |url=https://www.cygwin.com/faq.html#faq.api.fork |url-status=live |archive-url=https://web.archive.org/web/20101020183656/http://cygwin.com/faq.html |archive-date=October 20, 2010 |access-date=October 10, 2010 |website=cygwin.com}}</ref><ref>{{cite web | title = Highlights of Cygwin Functionality: Process Creation | url = http://cygwin.com/cygwin-ug-net/highlights.html#ov-hi-process | access-date = Dec 24, 2014 | archive-date = December 30, 2014 | archive-url = https://web.archive.org/web/20141230220232/http://www.cygwin.com/cygwin-ug-net/highlights.html#ov-hi-process | url-status = live }}</ref><ref>{{Cite mailing list |last=Blake |first=Eric |title=Bash doesn't launch the applications directly |mailing-list=Cygwin |date=January 15, 2009 |url=http://www.cygwin.com/ml/cygwin/2009-01/msg00461.html |access-date=October 10, 2010 |archive-url=https://web.archive.org/web/20110613042854/http://www.cygwin.com/ml/cygwin/2009-01/msg00461.html |archive-date=June 13, 2011 |url-status=live}}</ref> Cygwin's default user interface is the [[Bash (Unix shell)|bash]] shell running in the [[mintty]] terminal emulator.<ref>{{Cite web |title=Chapter 2: Setting Up Cygwin |url=https://www.cygwin.com/cygwin-ug-net/setup-net.html |access-date=2025-03-17 |website=cygwin.com}}</ref> The DLL also implements [[pseudo terminal]] (pty) devices, and Cygwin ships with a number of [[terminal emulator]]s that are based on them, including [[rxvt]]/urxvt and [[xterm]]. The version of GCC that comes with Cygwin has various extensions for creating Windows DLLs, such as specifying whether a program is a windowing or console-mode program. Support for compiling programs that do not require the POSIX compatibility layer provided by the Cygwin DLL used to be included in the default GCC, but {{as of | 2014 | lc = on}}, it is provided by cross-compilers contributed by the [[MinGW#MinGW-w64|MinGW-w64]] project. == Software packages == Cygwin's base package selection is approximately 100MB,<ref>{{cite web|url=https://cygwin.com/install.html|title=Installing and Updating Cygwin Packages|website=Cygwin|access-date=2020-01-11|archive-date=2020-01-10|archive-url=https://web.archive.org/web/20200110145803/http://cygwin.com/install.html|url-status=live}}</ref> containing the [[Bash (Unix shell)|bash]] (interactive user) and [[Dash (shell)|dash]] (installation) [[Shell script|shells]] and the core file and text manipulation utilities. Additional packages are available as optional installs from within the Cygwin "setup" program and package manager ("setup-x86_64.exe" β 64 bit).<ref>{{cite web|url=https://cygwin.com/packages/package_list.html|title=Cygwin Package List|website=Cygwin|access-date=2020-01-11|archive-date=2016-02-05|archive-url=https://web.archive.org/web/20160205174704/https://cygwin.com/packages/package_list.html|url-status=live}}</ref> The Cygwin Ports project provided{{When|date=June 2022}} additional packages that were not available in the Cygwin distribution itself. Examples included [[GNOME]], [[K Desktop Environment 3]], [[MySQL]] database, and the [[PHP]] scripting language. Most ports have been adopted by volunteer maintainers as Cygwin packages, and Cygwin Ports are no longer maintained. Cygwin ships with [[GTK+]] and [[Qt (software)|Qt]]. The [[Cygwin/X]] project allows graphical [[Unix]] programs to display their user interfaces on the Windows desktop for both local and remote programs. == See also == * {{annotated link|Windows Subsystem for Linux}} == Notes == {{reflist|group=note}} == References == {{Reflist}} == External links == {{wikibooks}} * {{official website}} {{FLOSS}} {{Unix-Windows Interoperability}} [[Category:1995 software]] [[Category:Compatibility layers]] [[Category:Programming tools]] [[Category:Free and open source compilers]] [[Category:Free emulation software]] [[Category:Free software programmed in C]] [[Category:Free software programmed in C++]] [[Category:Red Hat software]] [[Category:System administration]] [[Category:Unix emulators]] [[Category:Windows-only free software]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Annotated link
(
edit
)
Template:As of
(
edit
)
Template:Cite mailing list
(
edit
)
Template:Cite web
(
edit
)
Template:Efn
(
edit
)
Template:FLOSS
(
edit
)
Template:IPAc-en
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:More citations needed section
(
edit
)
Template:Official website
(
edit
)
Template:Promotional
(
edit
)
Template:Reflist
(
edit
)
Template:Respell
(
edit
)
Template:Short description
(
edit
)
Template:Sister project
(
edit
)
Template:Template other
(
edit
)
Template:Unix-Windows Interoperability
(
edit
)
Template:Use mdy dates
(
edit
)
Template:When
(
edit
)
Template:Wikibooks
(
edit
)