Interested Article - Open Watcom

Open Watcom — проект сообщества открытого кода по поддержке и развитию многоплатформных компиляторов Watcom C, C++ и Fortran и сопутствующих программ . Лицензия открытого ПО от Sybase допускает лишь некоммерческое использование пакета Open Watcom частными лицами .

История

История компилятора начинается в 1965 году, когда четверо студентов Университета Ватерлоо в Канаде под руководством профессора за три месяца работы создали компилятор Фортрана WATFOR . Он работал на платформах , IBM System/360 и DEC PDP-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 под эгидой фирмы . Компилятор Open Watcom не полностью поддерживает стандарт C++ , что не позволяет считать его полноценным компилятором C++ и мешает его широкому использованию, однако проект находит своё применение при создании программ для устаревших систем DOS и OS/2 .

Хотя Sybase больше не продаёт компиляторы Watcom, они доступны как пакет открытого программного обеспечения OpenWatcom с помощью компании SciTech. После выпуска версии 1.9 проект прекратил разработку, и сопровождение было продолжено в форке OpenWatcom v2, выпустившем версию 2.0 со множеством улучшений и исправлений .

Платформы

Исходный код компиляторов портируем и, подобно многим другим свободным компиляторам, вроде gcc , их кодогенератор (backend) можно настроить на другую целевую платформу.

Компиляторы могут работать под управлением (host — платформа разработчика) и компилировать исполнимый код для (target — целевая платформа) операционных систем DOS , OS/2 и Windows . Поддерживается также создание модулей для Novell NetWare .

Идёт работа по портированию компиляторов под операционные системы Linux и последние версии BSD (например, FreeBSD ), работающие на платформах x86 , PowerPC и других.

Open Watcom C/C++ версии 1.4, выпущенный в декабре 2005 года, имеет экспериментальную поддержку Linux x86 как целевой платформы.

Имеется код для поддержки QNX 4.25 , но для компиляции исполняемых модулей требуются несвободные библиотеки.

Совместимость со стандартом C99

Производятся постоянные работы над улучшением совместимости компилятора C/C++ со стандартом C99 (ISO/IEC 9899:1999). Пока что это остаётся недокументированной особенностью компиляторов Open Watcom C/C++ до завершения работы по реализации полной поддержки стандарта и задаётся параметром командной строки -za99 .

В версии Watcom C/C++ 11.0 уже были включены некоторые расширения языка C, которые позже были стандартизированы в C99. Среди них:

  • комментарии в стиле C++ (однострочные комментарии, начинающиеся с // );
  • непостоянные инициализаторы для локальных агрегаторов или объединений (только в режиме -aa );
  • запятые после последнего элемента в списках перечислений и инициализаторов.

После открытия исходных кодов инструментов Watcom участниками сообщества разработчиков Open Watcom было сделано множество улучшений по поддержке стандарта C99:

  • вариативные макросы (версия OW 1.2);
  • основанные на существующей поддержке __int64 64-битные целые типа long long int (версия OW 1.2);
  • идентификатор __func__ (версия OW 1.2);
  • ключевое слово inline , основано на существующей поддержке __inline (версия OW 1.2);
  • улучшена поддержка широких символов () (версия 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 и заголовочных файлов .

Примечания

  1. (англ.) . Open Watcom. Дата обращения: 6 октября 2008. Архивировано из 24 февраля 2012 года.
  2. (англ.) . Дата обращения: 6 октября 2008. Архивировано из 24 февраля 2012 года.
  3. (англ.) . Open Watcom. Дата обращения: 6 октября 2008. Архивировано из 24 февраля 2012 года.
  4. Peter W. Shantz, R. A. German, J. G. Mitchell, R. S. K. Shirley, C. R. Zarnke. // Communications of the ACM. — ACM , январь 1967. — Т. 10 , вып. 1 . — С. 41—44 . — ISSN . — doi : . ISSN doi :
  5. (неопр.) . Дата обращения: 17 ноября 2020. 25 ноября 2020 года.
  6. (англ.) . Open Watcom. Дата обращения: 21 января 2009. Архивировано из 24 февраля 2012 года.
  7. (неопр.) . Архивировано из 24 февраля 2012 года.
  8. (англ.) . Архивировано из 6 февраля 2009 года.

Ссылки

  • Paul Hsieh. (англ.) (4 мая 2008). Дата обращения: 6 октября 2008. 24 февраля 2012 года.
  • Rick Grehan. // BYTE. — октябрь 1994. 20 ноября 2008 года. (англ.)

Same as Open Watcom