# Cygwin

Cygwin é uma coleção de ferramentas de software livre originalmente desenvolvidas por Cygnus Solutions de maneira a permitir que várias versões do Microsoft Windows possam, de certa forma, agir como um sistema Unix. Sua principal intenção é portar softwares que rodam em sistemas POSIX (como sistemas Linux, sistemas BSD, e sistemas Unix) para que rodem em Windows com pouco mais do que uma recompilação. Programas portados com Cygwin funcionam melhor em Windows NT, Windows 2000, Windows XP, e Windows Server 2003, mas alguns podem rodar aceitavelmente bem em Windows 95 e Windows 98. O Cygwin é atualmente mantido por funcionários da Red Hat e outras pessoas.
O Cygwin foi originalmente desenvolvido pela Cygnus Solutions, que mais tarde foi adquirida pela Red Hat, para portar o GNU / Linux toolchain para o Win32, incluindo o GNU Compiler Suite. Em vez de reescrever todas as ferramentas para usar os tempos de execução do Win32, o Cygwin implementou um tempo de execução compatível com o POSIX como uma DLL. É software livre e de código aberto, lançado sob a GNU Lesser General Public License versão 3.

## Descrição

O Cygwin consiste de uma biblioteca que implementa a API de chamadas de sistemas POSIX em termos de chamadas de sistemas Win32, uma toolchain de desenvolvimento GNU (como o GCC e o GDB) para permitir tarefas básicas de desenvolvimento de software, e algumas aplicações equivalentes a programas comuns em sistemas Unix. O X Window System foi adicionado ao Cygwin em 2001.
O pacote também inclui uma biblioteca chamada MinGW que trabalha com a biblioteca nativa MSVCRT (Windows API) inclusa no Windows; MinGW tem menos overhead de RAM e disco, opera sob uma licença permitiva e (non-copyleft), e pode linkar para qualquer software, mas não implementa muitas das especificações POSIX como o Cygwin.
O Cygwin não tem suporte direto para Unicode, tampouco ele suporta qualquer conjunto de caracteres a não ser os códigos de páginas (codepages) do Windows e OEM atualmente disponíveis em seu sistema (ex.:, para um usuário russo, as únicos códigos de páginas disponíveis serão os CP1251 e CP866, mas não KOI8-R, ISO 8859-5, UTF-8 ou qualquer outra coisa). O iconv é provido, para que seja possível trabalhar com arquivos em outras encodificações, mas conversões devem ser feitas manualmente.
A Red Hat normalmete licencia a biblioteca Cygwin sob a licença GNU General Public License com a exceção de permitir a linkagem de qualquer Software Livre cuja licença conforme com a Definição Open Source. (A Red Hat também vende licenças comerciais aos que quiserem redistribuir programas que usam a biblioteca Cygwin sob termos software proprietário.)
Uma pessoa pode se afiliar a uma das muitas listas de email (mailing lists) relacionadas ao Cygwin na página de Mailing List do Cygwin.

## História

O Cygwin começou em 1995 como um projeto de Steve Chamberlain, um engenheiro da Cygnus que notou que o Windows NT e 95 usavam COFF como seu formato de arquivo objeto, e que o GNU já havia incluído suporte para x86 e COFF, e a biblioteca C newlib; então pelo menos teoricamente não deveria ser difícil de redirecionar o alvo do GCC e com isso conseguir um compilador cruzado capaz de produzir executáveis que rodariam em Windows. Isto provou ser verdade na prática, e um protótipo foi lançado rapidamente.
O passo seguinte foi tentar fazer o bootstrap do compilador no sistema Windows, mas isto requeria emulação suficiente de Unix para permitir que o shell script GNU configure rodasse, script este que requer um shell como bash, que por sua vez requer Fork e I/O padrão. O Windows inclui uma funcionalidade similar, então a biblioteca Cygwin propriamente dita necessita apenas traduzir chamadas e gerenciar versões privadas de dados, tais como descritores de arquivos.
Por volta de 1996, outros engenheiros haviam se juntado ao projeto, como era claro que o Cygwin seria uma maneira muito útil de prover as ferramentas embutidas (embedded) Cygnus hospedadas em sistemas Windows (a estratégia anterior foi usar DJGPP). Foi especialmente atrativo porque era possível fazer uma compilação cruzada de três vias, por exemplo usar uma Sun Workstation para montar, digamos, um compilador cruzado Windows-x-MIPS, que era mais rápido do que usar o PC da época. A partir de 1998, a Cygnus começou a oferecer o pacote Cygwin como um produto de interesse por seus próprios méritos.