# Cygwin

Cygwin /ˈsɪɡwɪn/ - è una distribuzione di software libero, sviluppata originariamente da Cygnus Solutions, che consente a diverse versioni di Microsoft Windows di svolgere alcuni compiti in maniera esteticamente e funzionalmente simile a un sistema Unix. Lo scopo principale della sua esistenza è il porting di software che gira su sistemi POSIX (come i sistemi Linux, o quelli basati sulla BSD, e altri ancora) su Microsoft Windows, in maniera tale che sia necessaria poco più di una ricompilazione dai sorgenti degli stessi per ottenere un funzionamento corretto.

## Descrizione

Cygwin è costruito intorno a una libreria condivisa (cygwin1.dll) che implementa le chiamate di sistema dello standard POSIX per mezzo di chiamate di sistema Windows. Include, tra le altre cose, una toolchain completa di sviluppo GNU (tra cui vi sono GCC e GDB, per citare gli applicativi più noti) per consentire lo svolgimento di elementari procedure di sviluppo software, e diversi programmi applicativi che si comportano in maniera simile alle loro controparti UNIX. Il supporto all'X Window System è stato aggiunto nel 2001.
In confronto a MinGW, che si appoggia alla libreria nativa MSVCRT (libreria C di runtime) inclusa in Windows, si può notare che MinGW utilizza meno memoria RAM, ha un impatto minore sulle memorie di massa, ed è distribuito con una licenza non-copyleft; per contro, MinGW implementa meno funzioni POSIX della libreria di Cygwin.
Cygwin si basa su UTF-8 e non supporta direttamente Unicode, né supporta le codifiche dei caratteri che non siano già supportate da Windows stesso (che variano a seconda della localizzazione del sistema: ad esempio, per un utente russo, le uniche codifiche disponibili saranno CP1251 e CP866, mentre non sarà possibile utilizzare KOI8-R, ISO 8859-5 ecc.). Per ovviare al problema è fornito il programma iconv, che consente di ricodificare i dati, ma la conversione va effettuata manualmente.
Attualmente il software è disponibile sia in versione a 32 bit che in versione a 64 bit.
È possibile iscriversi a una delle mailing list che hanno per argomento Cygwin alla pagina apposita.

## Licenza

Red Hat concede in licenza la libreria di Cygwin secondo la GNU General Public License, con un'eccezione che permette il collegamento della stessa a ogni software libero la cui licenza sia conforme ai criteri della Open Source Definition. Red Hat vende anche licenze commerciali a coloro che desiderano ridistribuire programmi che usano la libreria di Cygwin secondo crismi tipici del software proprietario.
A partire dalla versione 2.5.2, Cygwin è disponibile anche con licenza LGPL, che consente maggiori opportunità per utilizzi di tipo commerciale.

## Storia

Cygwin nacque nel 1995 come progetto di Steve Chamberlain, un ingegnere che lavorava per Cygnus e che si rese conto che Windows NT e Windows 95 utilizzavano il formato COFF per i loro file oggetto, e che il progetto GNU supportava già l'architettura x86 e il formato COFF, e la libreria C newlib; quindi, almeno in teoria, riconfigurare la GCC e ottenere un cross-compilatore che generasse eseguibili in grado di funzionare su Windows non avrebbe dovuto essere troppo complicato. Questa teoria fu presto confermata dalla pratica, con la costruzione di un prototipo.
Il passo successivo fu quello di creare un compilatore GNU nativo per Windows: questo richiedeva, però, un livello di emulazione di UNIX sufficiente a consentire il funzionamento dello shell script GNU configure, che richiede una shell come bash, che a sua volta richiede capacità di fork e funzioni di input/output. Windows fornisce funzionalità simili, sicché la libreria Cygwin deve soltanto tradurre le chiamate e gestire dati privati, come i descrittori di file.
Nel 1996, altri sviluppatori si unirono al progetto, poiché era chiaro che Cygwin sarebbe divenuto una maniera utile per far funzionare i tool embedded di Cygnus sui sistemi operativi Windows (l'approccio utilizzato in precedenza consisteva nell'utilizzo di DJGPP). Cygwin destava l'interesse in particolare perché era possibile fare una cross-compilazione trina: ad esempio utilizzare una workstation Sun non più all'avanguardia per generare un cross-compilatore Windows-a-MIPS, impiegandoci comunque meno tempo che con un PC dell'epoca.
Nell'ottobre del 1999 Cygnus Solutions fu acquisita da Red Hat, la quale provvide a rendere disponibile Cygwin anche con licenza GPL, e che da allora lo sviluppa insieme con TimeSys e altri.