Cygwin
This article contains content that is written like an advertisement. (January 2024) |
Original author(s) | Steve Chamberlain, Cygnus Solutions |
---|---|
Developer(s) | Cygnus Solutions, Red Hat, Cygwin project volunteers |
Initial release | October 18, 1995 |
Stable release | 3.5.3-1[1]
/ 3 April 2024 |
Repository | |
Written in | C/C++ |
Operating system | Microsoft Windows |
Type | POSIX standard utilities, POSIX standard library, C standard library, compatibility layer |
License | GPLv3, LGPLv3[2] |
Website | cygwin |
Cygwin (
The terminal emulator Mintty is the default command-line interface provided to interact with the environment.[4] The Cygwin installation's directory layout mimics the root file system of Unix-like systems, with directories such as /bin, /home, /etc, /usr, and /var.
In addition to providing many Unix utilities and a Unix look and feel, Cygwin allows source code designed for Unix-like operating systems to be compiled and run on Windows with minimal modification.
Cygwin provides native integration of Windows-based applications. Thus it is possible to launch Windows applications from the Cygwin environment, as well as to use Cygwin tools and applications within the Windows operating context.[5]
Cygwin consists of two parts:
- a API.
- an extensive collection of software tools and applications that provide a Unix-like look and feel.[5]
Cygwin is free and open-source software, released under the GNU Lesser General Public License version 3.[6] It was originally developed by Cygnus Solutions,[7][8] which was later acquired by Red Hat (now part of IBM), to port the Linux toolchain to Win32, including the GNU Compiler Suite. Rather than rewrite the tools to use the Win32 runtime environment, Cygwin implemented a POSIX-compatible environment in the form of a dynamic-link library (DLL).[9]
The brand motto is "Get that Linux feeling – on Windows".[10]
History
This section needs additional citations for verification. (January 2024) |
Cygwin began in 1995 as a project of Steve Chamberlain, a
Next Chamberlain
Initially, Cygwin was called gnuwin32 (not to be confused with the current
By 1996, other engineers had joined in, focusing on making Cygwin useful at hosting Cygnus' embedded tools on Windows systems (the previous strategy had been to use
Geoffrey Noer was the project lead from 1996 to 1999.[12][13] Christopher Faylor was lead from 1999 to 2004 when he left Red Hat and became co-lead with Corinna Vinschen[14] until Faylor withdrew from active participation in the project mid-2014.[15] Corinna Vinschen has been the project lead from mid-2014 to date (as of March 30, 2023).[16]
From June 23, 2016 the Cygwin library version 2.5.2 was licensed under the GNU Lesser General Public License (LGPL) version 3.[17]
Description
The Cygwin environment is provided in two versions; the full 64-bit version and a stripped down 32-bit version whose final version was released in 2022., allowing Microsoft Windows systems to emulate Unix and Linux servers.
Cygwin programs are installed by running Cygwin's "setup"[20] program, which downloads the necessary program and feature package files from repositories on the Internet. Setup can install, update, and remove programs and their source code packages. A complete installation will take in excess of 90 GB[21] of hard disk space, but usable configurations may require as little as 1 or 2 GB.
Efforts to reconcile concepts that differ between Unix and Windows systems include:
- A Cygwin-specific version of the Unix CRLFendings (which only affects programs that open files without explicitly specifying text or binary mode).
- Cygwin 1.7 introduced comprehensive support for POSIX locales and many character encodings, whereby the UTF-8 Unicode encoding became the default. Windows file-names and other identifiers, which are encoded as UTF-16, are automatically converted to and from the selected character-encoding.
- Windows drive lettersmap to a special directory, so for example
C:
appears as/cygdrive/c
. The/cygdrive
prefix can be changed. Windows network paths of the form\\HOST\SHARE\FILE
are mapped to//HOST/SHARE/FILE
. Windows paths can also be used directly from Cygwin programs, but many programs do not support them correctly, hence this is discouraged. - Full-featured
file-systems are provided./proc/proc/registry
provides direct filesystem access to the registry. - Cygwin supports POSIX symbolic linksand treats them as POSIX symbolic links, but it does not create them as their semantics are not fully POSIX-compliant.
- The POSIX API for handling access control lists (ACLs) is supported and maps to the Windows NT ACL system.[22]
- Special formats of
/etc/passwd
and/etc/group
are provided that include pointers to the Windows equivalent SIDs (in the Gecos field), allowing for mapping between Unix and Windows users and groups. - The header).
- The Cygwin DLL contains a console driver that emulates a Unix-style Windows console. Cygwin's default user interface is the bashshell running in the Cygwin console.
- The DLL also implements pseudo terminal (pty) devices. Cygwin ships with a number of terminal emulators that are based on them, including mintty, rxvt/urxvt, and xterm. These are more compliant with Unix terminal standards and user interface conventions than the Cygwin console, but are less suited for running Windows console programs.
- Various utilities are provided for converting between Windows and Unix paths and file formats, for handling line ending (CRLF/LF) issues, for displaying the DLLs that an executable is linked with, etc.
- Apart from always being linked against the Cygwin DLL, Cygwin executables are normal Windows executables. This means that Cygwin programs have full access to the Windows API and other Windows libraries, which allows gradual porting of programs from one platform to the other. However, programmers need to be careful about mixing conflicting POSIX and Windows functions.
The version of gcc that comes with Cygwin has various extensions for creating Windows DLLs, specifying whether a program is a windowing or console-mode program, adding resources, etc. 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[update] is provided by cross-compilers contributed by the MinGW-w64 project.
Cygwin is used for porting many popular pieces of software to the Windows platform.[26] It is used to compile Sun Java, LibreOffice, Apache OpenOffice and web server software like Lighttpd and Hiawatha.[27]
The Cygwin API library is licensed under the
Software features
Cygwin's base package selection is fairly small (about 100 MB
- Shells (i.e. command line interpreters): mksh
- File and system utilities: findutils, util-linux
- Text utilities: awk
- Terminals: mintty, rxvt, screen
- Editors: nano, vim
- Remote login: ssh, rsh, telnet
- Remote file transfer/synchronization: rtorrent
- Compression/archiving: lzma, zip
- Text processing: TeX, groff, Ghostscript
- Programming languages: C, C++, Objective-C, Fortran, Gambas, Perl, Python, Ruby, Tcl, Ada, CLISP, Scheme, OCaml, Prolog
- Development tools: bison, doxygen
- Version control systems: git, mercurial
- Servers:
- Clients: (newsgroups)
The Cygwin/X project contributes an implementation of the X Window System that allows graphical Unix programs to display their user interfaces on the Windows desktop. This can be used with both local and remote programs. Cygwin/X supports over 500 packages including major X window managers, desktop environments, and applications, for example:
- Terminals: rxvt-unicode, xterm
- Editors: emacs-X11, gvim
- Text processors/viewers: LyX, xpdf, xdvi
- Web browsers: qupzilla, w3m
In addition to the low-level
The Cygwin Ports project provided[when?] many additional packages that were not available in the Cygwin distribution itself. Examples included GNOME and K Desktop Environment 3 as well as the 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.
See also
- Windows Subsystem for Linux – Compatibility layer for running Linux binary executables natively on Windows
References
- ^ "cygwin 3.5.3-1". 3 April 2024. Retrieved 18 April 2024.
- ^ "Cygwin Licensing Terms". Archived from the original on 2012-07-28. Retrieved 2022-12-15.
- ^ Hall, Larry (2004-09-14). "Re: How do you pronounce it?". Cygwin (Mailing list). Archived from the original on 2011-08-30. Retrieved 2007-10-10.
- ^ "Cygwin". www.cygwin.com. Archived from the original on 2015-11-21. Retrieved 2015-11-21.
- ^ a b "Cygwin FAQ". cygwin.com. Archived from the original on 2021-05-07. Retrieved 2021-01-07.
- ^ "Cygwin library now available under GNU Lesser General Public License". Red Hat. Archived from the original on 2016-06-24. Retrieved 2016-06-23.
- ^ "A brief history of the Cygwin project". Cygwin. 2018-02-02. Archived from the original on 2020-01-08. Retrieved 2020-01-10.
- ^ "Cygwin32: A Free Win32 Porting Layer for UNIX Applications". USENIX. 1998-08-03. Archived from the original on 2020-01-11. Retrieved 2020-01-10.
- ^ "(Solved) Linux Subsystem vs Cygwin vs MobaXterm". Tech Help Forum by How-To Geek. 2017-01-24. Archived from the original on 2023-02-20. Retrieved 2019-03-15.
- ^ "Cygwin". www.cygwin.com. Retrieved 2024-03-11.
- ^ "Cygwin Unites Unix and Windows Apps". Google Books. 1999-11-15. Archived from the original on 2023-02-20. Retrieved 2020-01-13.
- ^ Delorie, DJ (1999-02-17). "fyi: who does what". Cygwin (Mailing list). Archived from the original on 2004-02-14. Retrieved 2020-01-13.
- ^ Noer, Geoffrey (1999-02-19). "A partial goodbye..." Cygwin (Mailing list). Archived from the original on 2004-02-02. Retrieved 2020-01-13.
- ^ Faylor, Christopher (2004-03-31). "Changing jobs". Cygwin (Mailing list). Archived from the original on 2015-09-06. Retrieved 2020-01-13.
- ^ Faylor, Christopher (2014-07-31). "Christopher Faylor – Withdrawing from the project". Cygwin (Mailing list). Archived from the original on 2014-12-17. Retrieved 2 May 2015.
- ^ "Cygwin Notables". cygwin.com. Retrieved 2023-03-30.
- ^ "Cygwin library now available under GNU Lesser General Public License". www.redhat.com. Archived from the original on 2021-06-16. Retrieved 2021-05-27.
- ^ Turney, Jon (November 25, 2022). "Cygwin x86 end-of-life". Retrieved 2023-09-14.
- ^ "Cygwin Ports". Archived from the original on 11 May 2015. Retrieved 2 May 2015.
- ^ Delorie, DJ (2000-04-17). "New Cygwin Net Release". Cygwin (Mailing list). Archived from the original on 2014-12-20. Retrieved 2020-01-10.
- ^ "What is the current full install size of Cygwin?". StackOverflow. 2018-05-28. Archived from the original on 2021-01-24. Retrieved 2020-01-11.
- ^ Vinschen, Corinna (2016-01-16). "Updated: Cygwin 2.4.0-1". Cygwin Announcements (Mailing list). Archived from the original on 2020-01-11. Retrieved 2020-01-11.
- ^ "Cygwin FAQ: How is fork() implemented?". Archived from the original on October 20, 2010. Retrieved Oct 10, 2010.
- ^ "Highlights of Cygwin Functionality: Process Creation". Archived from the original on December 30, 2014. Retrieved Dec 24, 2014.
- ^ Blake, Eric (Jan 15, 2009). "Bash doesn't launch the applications directly". Cygwin (Mailing list). Archived from the original on June 13, 2011. Retrieved Oct 10, 2010.
- ^ "Chapter 1. Cygwin Overview". cygwin.com. Retrieved 2024-03-22.
- ^ Leisink, Hugo. "Hiawatha webserver". www.hiawatha-webserver.org. Archived from the original on 2021-01-24. Retrieved 2021-01-07.
- ^ "What are the licensing terms?". Cygwin. Archived from the original on 2012-07-28.
- ^ "Installing and Updating Cygwin Packages". Cygwin. Archived from the original on 2020-01-10. Retrieved 2020-01-11.
- ^ "Cygwin Package List". Cygwin. Archived from the original on 2016-02-05. Retrieved 2020-01-11.