UWIN
UWIN — устаревший программный пакет, разработанный Дэвидом Корном (англ. David Korn), который позволяет собирать и запускать программы, написанные для операционной системы Unix, на платформе Microsoft Windows практически без изменений. Часть работ по разработке программного обеспечения была выполнена компанией Wipro из Индии. В ряде источников этот пакет также встречается под названиями U/Win и AT&T Unix для Windows, особенно в ранние годы существования.
Исходный код UWIN распространяется на условиях открытой лицензии Eclipse Public License 1.0 в репозиториях AT&T на GitHub. Программный пакет включает в себя инструменты из набора AT&T AST (Advanced Software Technology)[1].
UWIN версии 5 распространяется вместе с расширенной оболочкой FireCMD для Windows, где Korn Shell (ksh) является одной из трёх оболочек, доступных при установке по умолчанию (наряду с языком сценариев FireCMD и стандартным командным интерпретатором Windows cmd.exe). Пользователь или администратор может добавить в меню другие оболочки UWIN, такие как csh и tclsh, а также оболочки из других пакетов совместимости, например, MKS Toolkit, либо оболочки, входящие в состав дистрибутивов Tcl, Lua, Python, Ruby и др[2].
Технические особенности
С технической точки зрения UWIN представляет собой библиотеку X/Open для Windows с реализацией 32-битного программного интерфейса приложений Win32. Пакет предоставляет слой совместимости с POSIX поверх API Win32, требующий перекомпиляции исходного кода Unix-приложений для их работы в среде Windows[3]. Для работы исполняемых файлов UWIN требовалась установка и запуск специальной службы в операционной системе[4]. UWIN включает:
- Библиотеки, эмулирующие Unix-среду посредством реализации Unix API.
- Заголовочные файлы и инструменты для разработки, такие как компилятор C (cc), yacc, lex и make.
- Korn Shell (ksh) и более 250 утилит, включая ls, sed, cp, stty и другие.
Основная часть Unix API реализована в динамической библиотеке POSIX.DLL. Программы, слинкованные с POSIX.DLL, работают в подсистеме Win32 вместо подсистемы POSIX, что позволяет свободно комбинировать вызовы библиотек Unix и Win32. Команда cc предназначена для компиляции и компоновки программ под UWIN в среде Windows при использовании традиционного инструментария сборки Unix (например, make). Эта команда является фронтендом для компилятора, осуществляющего реальную компиляцию и линковку; поддерживаются компиляторы Microsoft Visual C/C++ 5.X—7.X, Digital Mars C/C++, Borland C/C++, MinGW. Также доступны для загрузки GNU-компилятор и инструменты разработки для UWIN.
История и развитие
Программный пакет UWIN был создан в исследовательском подразделении AT&T Bell Labs под руководством Дэвида Корна[5]. В 1997 году был представлен доклад о портировании UNIX на Windows NT[4], что ознаменовало ранний этап развития проекта.
UWIN наиболее полноценно работает под Windows NT/2000/XP/7 с файловой системой NTFS, однако может функционировать в ограниченном режиме с использованием FAT и ещё более ограниченно на Windows 95/98/ME. Бета-версия для Windows Vista и 7 выпускается как UWIN 5.0b (17 июня 2011 года). 19 января 2016 года AT&T объявила о переносе исходных пакетов AST и UWIN на GitHub[6].
Основным конкурентом UWIN стал проект Cygwin. В отличие от UWIN, Cygwin изначально являлся проектом с открытым исходным кодом, что способствовало его более широкому распространению и популярности в сообществе разработчиков[5].
С появлением Windows Subsystem for Linux (WSL) подход UWIN, требующий перекомпиляции исходного кода Unix-приложений, оказался технологически устаревшим. WSL стал современным стандартом де-факто, обеспечивая нативную бинарную совместимость с немодифицированными исполняемыми файлами Linux[3].
Примечания
Литература
- David G. Korn. Porting UNIX to Windows NT, USENIX Annual Technical Conference, 1997. (на англ.)
Ссылки
- AST Software Download Packages (устарело) (англ.). www2.research.att.com. Дата обращения: 17 июня 2024. Архивировано 4 ноября 2013 года. Страница содержит документацию.
- Репозиторий AST на GitHub
- Репозиторий UWIN на GitHub