Open Watcom
| Open Watcom | |
|---|---|
| Тип | Среда разработки программного обеспечения |
| Разработчики | Watcom, Sybase, SciTech Software, Открытое сообщество |
| Написана на | Си |
| Операционная система | Кроссплатформенное программное обеспечение |
| Дата выпуска | 28 января 2003 |
| Последняя версия | 1.9 (июнь 2010) |
| Состояние | Активное |
| Лицензия | Sybase Open Watcom Public License version 1.0 (разрешено некоммерческое использование частными лицами) |
| Сайт | openwatcom.org |
Open Watcom — проект сообщества открытого кода по поддержке и развитию многоплатформных компиляторов Watcom C, C++ и Fortran и сопутствующих программ[1]. Лицензияоткрытого ПО отSybase допускает лишь некоммерческое использование пакета Open Watcom частными лицами[2].
История
[править |править код]История[3]компилятора началась в 1965 году, когда четверо студентовУниверситета Уотерлу вКанаде под руководством профессора за три месяца работы создали компиляторФортрана WATFOR[4]. Он работал на платформахIBM 7040,IBM System/360 иDECPDP-11. В 1980 году была разработана новая версия для IBM 360 иIBM PC, которая поддерживала стандартФортран 77. Через год была образована фирма Watcom, которая в 1988 году представила компиляторC.
КомпиляторыWatcom для языковСи иC++ ценились разработчиками программ подDOS за генерацию компактного и быстрого кода, а также за то, что эти компиляторы одними из первых предложили поддержкузащищённого режима процессоровIntel 80386. В середине 1990-х некоторые игры под DOS, такие какDoom,Descent,Duke Nukem 3D,Warcraft II были скомпилированы Watcom C.
В 2003 году, после проблем с новой версией компилятора, а также невозможностью конкурировать с компаниейMicrosoft, фирмаSybase, которая приобрела Watcom в 1995 году, открылаисходные коды компиляторов. Так был создан проект Open Watcom под эгидой фирмыSciTech Software. Компилятор Open Watcom не полностью поддерживает стандартC++, что не позволяет считать его полноценным компилятором C++ и мешает его широкому использованию, однако проект находит своё применение при создании программ для устаревших системDOS иOS/2.
Хотя Sybase больше не продаёт компиляторы Watcom, они доступны как пакетоткрытого программного обеспечения OpenWatcom с помощью компании SciTech. После выпуска версии 1.9 проект прекратил разработку, и сопровождение было продолжено вфорке OpenWatcom v2, выпустившем версию 2.0 со множеством улучшений и исправлений[5].
Платформы
[править |править код]Исходный код компиляторовпортируем и, подобно многим другим свободным компиляторам, вродеgcc, их кодогенератор (backend) можно настроить на другую целевую платформу.
Компиляторы могут работать под управлением (host — платформа разработчика) и компилировать исполнимый код для (target — целевая платформа) операционных системDOS,OS/2 иWindows. Поддерживается также создание модулейNLM[англ.] дляNovell NetWare.
Идёт работа по портированию компиляторов под операционные системыLinux[6] и последние версииBSD (например,FreeBSD), работающие на платформахx86,PowerPC и других.
Open Watcom C/C++ версии 1.4, выпущенный в декабре 2005 года, имеет экспериментальную поддержку Linux x86 как целевой платформы.
Имеется код для поддержкиQNX 4.25[7], но для компиляции исполняемых модулей требуются несвободные библиотеки.
Совместимость со стандартом C99
[править |править код]Производятся постоянные работы над улучшением совместимости компилятора C/C++ со стандартомC99 (ISO/IEC 9899:1999).[8] Пока что это остаётся недокументированной особенностью компиляторов Open Watcom C/C++ до завершения работы по реализации полной поддержки стандарта и задаётся параметром командной строки-za99.
В версии Watcom C/C++ 11.0 уже были включены некоторые расширения языка C, которые позже были стандартизированы в C99. Среди них:
- комментарии в стиле C++ (однострочные комментарии, начинающиеся с
//); - непостоянные инициализаторы для локальных агрегаторов или объединений (только в режиме
-aa); - запятые после последнего элемента в спискахперечислений и инициализаторов.
После открытия исходных кодов инструментов Watcom участниками сообщества разработчиков Open Watcom было сделано множество улучшений по поддержке стандарта C99:
- вариативные макросы (версия OW 1.2);
- основанные на существующей поддержке
__int6464-битные целые типаlong long int(версия OW 1.2); - идентификатор
__func__(версия OW 1.2); - ключевое слово
inline, основано на существующей поддержке__inline(версия OW 1.2); - улучшена поддержкашироких символов (wide char) (версия OW 1.3);
- функциибиблиотеки времени исполнения работают с объектами типа
long long int(версия OW 1.3); - проектируемые инициализаторы (версия OW 1.4);
- поддержка ключевого слова
restrict(версия OW 1.3, только в режиме включенной опции-za99); - частичная поддержка ключевых слов
_Bool,_Complex,_Imaginary(версия OW 1.3, только в режиме включенной опции-za99); - функции работы с памятью для широких символов, то есть
wmemcpy()и ей сопутствующие (версия OW 1.4); - объявления в циклах и в любом месте составных выражений (версия OW 1.5);
- многочисленные усовершенствования библиотеки C изаголовочных файлов.
Примечания
[править |править код]- ↑Титульная страница сайта проекта (англ.). Open Watcom. Дата обращения: 6 октября 2008. Архивировано изоригинала 24 февраля 2012 года.
- ↑Sybase Open Watcom Public License version 1.0 (англ.). Дата обращения: 6 октября 2008. Архивировано изоригинала 24 февраля 2012 года.
- ↑History (англ.). Open Watcom. Дата обращения: 6 октября 2008. Архивировано изоригинала 24 февраля 2012 года.
- ↑Peter W. Shantz, R. A. German, J. G. Mitchell, R. S. K. Shirley, C. R. Zarnke. WATFOR — The University of Waterloo FORTRAN IV compiler //Communications of the ACM. —ACM, январь 1967. —Т. 10,вып. 1. —С. 41—44. —ISSN0001-0782. —doi:10.1145/363018.363059.ISSN0001-0782doi:10.1145/363018.363059
- ↑Open Watcom v2 Fork . Дата обращения: 17 ноября 2020. Архивировано 25 ноября 2020 года.
- ↑Installing Open Watcom on Linux (англ.). Open Watcom. Дата обращения: 21 января 2009. Архивировано изоригинала 24 февраля 2012 года.
- ↑Настройка OpenWatcom для QNX4 . Архивировано изоригинала 24 февраля 2012 года.
- ↑C99 Compliance (англ.). Архивировано изоригинала 6 февраля 2009 года.
Ссылки
[править |править код]- Paul Hsieh. The WATCOM C/C++ Programmer’s FAQ (англ.) (4 мая 2008). Дата обращения: 6 октября 2008. Архивировано 24 февраля 2012 года.
- Rick Grehan. Watcom C/C++ Gets a New Face (англ.) // BYTE. — октябрь 1994. Архивировано изоригинала 20 ноября 2008 года.