Cygwin

**Cygwin** () adalah koleksi peralatan GNU dan perangkat lunak sumber terbuka lainnya yang menyediakan lingkungan mirip Unix bagi Microsoft Windows. Cygwin menyediakan integrasi asli dari aplikasi berbasis Windows, data, dan sumber daya sistem lainnya dengan aplikasi, perangkat lunak, dan data dari lingkungan mirip Unix. Jadi adalah mungkin untuk meluncurkan aplikasi Windows dari lingkungan Cygwin, serta menggunakan alat-alat dan aplikasi Cygwin dalam konteks operasi Windows.

Cygwin terdiri dari dua bagian: sebuah dynamic-link library (DLL) sebagai lapisan kompatibilitas API dalam bentuk C standard library yang menyediakan sebagian besar dari API POSIX, dan koleksi perangkat lunak dan aplikasi yang menyediakan tampilan dan nuansa mirip Unix.

Cygwin pada awalnya dikembangkan oleh Cygnus Solutions, yang kemudian diakuisisi oleh Red Hat. perangkat lunak ini adalah software gratis dan open source, yang dirilis di bawah GNU Lesser General Public License versi 3. Saat ini dikelola oleh karyawan dari Red Hat, NetApp dan sejumlah relawan lainnya.

## Deskripsi
Cygwin terdiri dari pustaka yang mengimplementasikan sistem panggilan API POSIX dalam hal sistem panggilan Win32, seperangkat pengembangan GNU (termasuk GCC dan GDB) untuk memungkinkan pengembangan perangkat lunak, dan menjalankan sejumlah besar program-program aplikasi yang setara dengan di sistem Unix. Programmer telah porting banyak program-program Unix, GNU, BSD dan paket Linux ke dalam Cygwin, termasuk Sistem X Window, K Desktop Environment 3, GNOME, Apache, dan TeX. Cygwin mengizinkan instalasi inetd, syslogd, sshd, Apache, dan daemon lain sebagai standar layanan Windows, yang memungkinkan sistem Microsoft Windows untuk meniru server Unix dan Linux.

Program Cygwin diinstal dengan menjalankan program "setup" Cygwin, yang mengunduh program dan file paket yang diperlukan dari repositori di Internet. Setup dapat menginstal, memperbarui, dan menghapus program-program dan kode sumber paket. Instalasi yang lengkap akan memerlukan lebih dari 36 GB ruang hard disk, tetapi konfigurasi yang dapat digunakan memerlukan 1 atau 2 GB.

Upaya untuk menyatukan konsep yang berbeda antara Unix dan sistem Windows meliputi:
* Sebuah Aplikasi spesifik Cygwin dari command Unix`mount`mengizinkan pengaitan alamat di Windows sebagai "filesistem" dalam ruang file Unix. Titik kait awal dapat dikonfigurasikan di `/etc/fstab`, dengan format yang mirip sebagaimana di sistem Unix, kecuali alamat folder Windows yang ada di perangkat. Filesistem dapat dikaitkan dalam mode binari atau di mode teks, yang memungkinkan konversi otomatis antara akhiran LF dan CRLF (yang hanya memengaruhi program yang membuka file tanpa secara eksplisit membedakan mode teks atau biner).
* Cygwin 1.7 memperkenalkan dukungan komprehensif lokalisasi POSIX dan banyak pengkodean karakter, dimana pengkodean UTF-8 Unicode menjadi default. Nama file di Windows dan pengidentifikasi lainnya, yang dikodekan dalam UTF-16, secara otomatis dikonversi ke karakter pengkodean pilihan.
* Alamat drive Windows dipetakan ke direktori spesial, misalnya `C:` menjadi `/cygdrive/c`. Awalan`/cygdrive` bisa diubah. Alamat jaringan Windows di `\\HOST\SHARE\FILE` dipetakan ke `//HOST/SHARE/FILE`. Pengalamatan Windows dapat digunakan dalam program Cygwin, tapi banyak program yang tidak mendukung pengalamatan itu.
* Fitur penuh filesistem`/dev` dan`/proc` disediakan.`/proc/registry` menyediakan filesystem akses langsung filesistem ke registeri.
* Cygwin mendukung tautan simbolik POSIX, merepresentasikan mereka sebagai set atribut sistem. Cygwin 1.5 merepresentasikannya sebagai pintasan Windows Explorer, tetapi telah diubah untuk alasan performa dan kebenaran POSIX. Cygwin juga mengenali junction points dan tautan simbolik NTFS dam memperlakukan sebagai tautan simbolik POSIX, but it does not create them as their semantics are not fully POSIX-compliant.
* API Solaris untuk mengendalikan daftar kontrol akses (Access control lists, ACLs) didukung dan dipetakan ke Windows NT ACL system.
* Format spesial untuk `/etc/passwd` dan `/etc/group` disediakan yang mencakup poin yang setara dengan Windows SIDs (dalam GECOS field), memungkinkan untuk memetakan pengguna dan grup di antara Unix dan Windows.
* The fork system call untuk menggandakan sebuah proses sudah diimplementasikan penuh,tetapi tidak dipetakan dengan baik dalam API Windows. Contohnya, strategi optimasi copy-on-write tidak bisa digunakan. Sebagai hasilnya, percabangan Cygwin relatif lebih lambat dibandingkan Linux dan lainnya. (Masalah di atas bisa dihindari dengan menggantii penggunaan teknik fork/exec dengan memanggil fungsi spawn yang ada di fungsi spesifik Windows process.h header).
* DLL Cygwin berisi tentang penggerak konsol yang mengemulasikan terminal bergaya Unix di dalam konsol Windows. Antarmuka pengguna awalan Cygwin adalah bash shell yang berjalan dalam konsol Cygwin.
* DLLnya juga mengimplementasikan perangkat pseudo terminal (pty). Cygwin berisi beberapa emulator terminal yang berdasarkan pada mintty, rxvt(-unicode), dan 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.
* Banyak utilitas yang disediakan untuk mengonversikan alamat dan format berkas antara Windows dan Unix, untuk mengendalikan isu baris akhiran (CRLF/LF), dll.
* Selain ditautkan ke DLL Cygwin, file eksekutabel Cygwin adalah file eksekutabel Windows biasa. Artinya program Cygwin memiliki akses penuh ke API Windows dan pustaka Windows lainnya, sehingga bisa melakukan porting bertahap suatu program dari platform ke platform lainnya. Namun, para programmer harus berhati-hati mencampuradukkan komplikasi fungsi POSIX dan Windows.

## Referensi