Cygwin
Cygwin | |
---|---|
Тип | свободное и открытое программное обеспечениеифреймворк |
Разработчики | Red Hat,Cygnus SolutionsиCygwin |
Написана на | C++[2]иСи[2] |
Операционная система | Windows |
Первый выпуск | 1995 |
Аппаратная платформа | Windows |
Последняя версия |
|
Репозиторий |
cygwin /git/newlib-cy… cygwin /git/newlib-cy… cygwin /git/newlib-cy… |
Лицензия | GNU GPL 3[3]иLGPLv3.0+[вд][4] |
Сайт | cygwin(англ.) |
Медиафайлы на Викискладе |
Cygwin(произносится/ˈsɪgwɪn/)[5]—UNIX-подобнаясреда иоболочка командной строкидляMicrosoft Windows.Cygwin обеспечивает тесную интеграцию приложений, данных и ресурсов Windows с приложениями, данными и ресурсами UNIX-подобной среды. Из среды Cygwin можно запускать обычные приложения Windows, также можно использовать инструменты Cygwin из Windows.
Cygwin состоит из двух частей: динамически подключаемой библиотеки (DLL)cygwin1.dll
,которая обеспечивает совместимостьAPIи реализует значительную часть стандартаPOSIX,и огромной коллекции приложений, которые обеспечивают привычную среду UNIX, включаяUnix shell.
Изначально Cygwin был разработан компаниейCygnus Solutions,которую позднее приобрелаRed Hat.Этосвободное ПО,опубликованное подGNU General Public Licenseверсии 2. В настоящее время Cygwin разрабатывается сотрудниками Red Hat,NetAppи множеством добровольцев. Поддерживаются языки:C,C++,Objective-C,Fortran,Gambas,Perl,Python,Ruby,Tcl,Ada,CLISP,Scheme,OCaml,Prolog,Self(Self/x86[6]).
Подобные функциональные возможности предлагала также и Microsoft в своём пакетеServices for UNIX,включающем в себя подсистемуInterix,иSubsystem for UNIX-based Applications(в более новых версиях).
Описание
[править|править код]Cygwin представляет собой инструмент для портирования ПО UNIX в Windows и представляет собой библиотеку, которая реализуетинтерфейс прикладного программированияPOSIXна основе системных вызововWin32.Кроме того, Cygwin включает в себяинструменты разработки GNUдля выполнения основных задач программирования, а также и некоторые прикладные программы, эквивалентные базовым программам UNIX. В2001 годув Cygwin был включён пакетX Window System.
Кроме того, Cygwin содержит библиотекуMinGW,позволяющую работать с библиотекой Microsoft MSVCRT (Windows API); библиотека MinGW менее требовательна к объёму оперативной и дисковой памяти, распространяется под более свободнойлицензиейи может работать с любым программным обеспечением, но функциональные возможности спецификации POSIX реализованы в ней не так полно, как в Cygwin.
Red Hat реализует библиотеку Cygwin под лицензиейGNU GPL,таким образом, её можно использовать только в программах, распространяемых под GPL. Для распространения программ, использующих библиотеку Cygwin под лицензией, отличной от GPL, необходимо приобретение лицензии у RedHat.
На страницеCygwin Mailing Listsможно подписаться на рассылку, посвящённую Cygwin.
История
[править|править код]Работа над проектом Cygwin была начата в1995 годуСтивом Чемберленом (англ.Steve Chamberlain), программистом Cygnus, заметившим, что Windows NT и Windows 95 используют в качестве формата объектных файлов форматCOFF.К тому времени в GNU уже была реализована поддержка архитектурыx86,COFF,а также библиотека языка C newlib; таким образом, по крайней мере теоретически, не представляло затруднений получить из GCCкросс-компилятор,который бы создавал исполняемые файлы Windows. Это оказалось несложным и на практике. Вскоре появился прототип.
Следующим шагом было заставить компилятор работать в Windows, но для этого была необходима эмуляция многих функций Unix: к примеру, должен был работатьскриптGNU configure.Этот скрипт нуждается в оболочке типаbash,которая, в свою очередь, требует наличия стандартных потоков ввода-вывода и системного вызоваfork.Windows располагает подобными функциональными возможностями, и библиотека Cygwin лишь транслирует вызовы, исходящие от программ, управляя определёнными видами данных, такими какфайловые дескрипторы.
В1996 годук проекту Cygwin присоединились и другие программисты, так как стало очевидным, что Cygwin сделает возможным использование инструментов Cygnus на системах с Windows (до этого намечалось использоватьDJGPP). Этот вариант был особенно привлекательным, ведь кросскомпиляция могла бы производиться в трёх направлениях: можно было использовать мощную станцию Sun для сборки Windows-кросскомпилятораMIPS,что позволяло значительно экономить время. С1998 годаCygnus предлагает пакет Cygwin в качестве самостоятельного продукта.
Интернационализация
[править|править код]До версии 1.7 Cygwin не имел поддержкиUnicodeи использовал только ANSI-варианты функций Win32; отсутствовала также и поддержка каких-либо кодировок, отличных от родных для Windows и OEM (так, в русскоязычной версии Windows Cygwin работала лишь сCP1251иCP866,но неKOI8-R,ISO 8859-5,UTF-8или какими-либо другими.
Начиная с версии 1.7 кодировкой по умолчанию являетсяUnicodeв формеUTF-8и, соответственно, по умолчанию используютсярегиональные настройки(locale в англ.)C.UTF-8
.При вызове функций Win32 Cygwin осуществляет трансляцию строк в кодировку UTF-16,используемую в системах Windows.Начиная с версии 1.7.2 Cygwin также может извлекать некоторую информацию из реестра Windows в соответствии с установками Language и Territory в региональных настройках.
Другая проблема заключалась в том, что консоль Cygwin (подобноCMD.EXE) использовала кодировку OEM. Для обхода этого ограничения рекомендовалось запускать в Cygwin демоныrshdилиsshdи использоватьэмулятор терминалас полной поддержкой UTF-8, напримерPuTTYили MinTTY (входит в комплект Cygwin). Начиная с версии 2.0 в качестве консоли Cygwin штатно использует MinTTY, который работает в кодировке UTF-8, что позволяет выводить текстовую информацию в UTF-8 напрямую. Также терминал осуществляет трансляцию вводимой с клавиатуры информации в UTF-8, в соответствии с используемой национальной раскладкой.
Работа с кириллицей
[править|править код]В современных версиях Cygwin работа с русскими символами не требует дополнительных настроек. Символы кириллицы поддерживаются в нейтральныхрегиональных настройкахLANG=C.UTF-8
,в том числе имена файлов, имена пользователей и данные реестра. Можно установить русскоязычные региональные настройкиLANG=ru_RU.UTF-8
.При этом включатся русскоязычные сообщения (у некоторых программ), даты по-русски (LC_TIME) и другие региональные настройки.
Примечания
[править|править код]- ↑cygwin 3.5.4-1— 2024.
- ↑12https:// openhub.net/p/cygwin/analyses/latest/languages_summary
- ↑http://cygwin /COPYING
- ↑https://cygwin /COPYING.LIB
- ↑Larry Hall.Re: How do you pronounce it?(англ.)(14 сентября 2004). Дата обращения: 20 июля 2024.Архивировано28 ноября 2020 года.
- ↑Self/x86(англ.).gliebe.de. Дата обращения: 24 декабря 2016. Архивировано изоригинала10 июля 2016 года.
См. также
[править|править код]Ссылки
[править|править код]- Cygwin Home
- Cygwin Package Listings
- Cygwin pageнаFreecode
- CYGNOME= cygwin +GNOME
- KDE-cygwin= cygwin +KDE
- GNU utilities for Win32— похожий проект по переносу утилит UNIX в Windows, но без эмуляции POSIXAPI.
- Geek to Live: Introduction to Cygwin, part I,part II,part III— Просто и доступно, объяснение установки, начала работы с Unix-like командной строкой