Открыть сервис

Open Watcom

Open Watcom — это свободно распространяемый компиляторный инструментарий для языков программирования C и C++, основанный на исходном коде коммерческого продукта Watcom C/C++ компании Watcom International Corporation. Инструментарий включает в себя компиляторы, ассемблеры, компоновщики, отладчики и библиотеки, поддерживающие широкий спектр операционных систем и архитектур процессоров, включая устаревшие и редко используемые. Open Watcom распространяется под лицензией Sybase Open Watcom Public License, которая является свободной, но несовместимой с GNU General Public License.

История

Происхождение Watcom C/C++

Компания Watcom International Corporation, основанная в 1980 году в канадском городе Ватерлоо (провинция Онтарио), изначально занималась разработкой компиляторов для мейнфреймов. В 1988 году компания выпустила компилятор Watcom C для операционной системы MS-DOS, который быстро завоевал популярность благодаря высокой скорости генерации кода и поддержке расширенных возможностей процессоров Intel 80386 и 80486. В 1990-х годах Watcom C/C++ стал одним из основных инструментов для разработки 16- и 32-разрядных приложений для DOS, Windows 3.x, OS/2 и Novell NetWare.

Переход к открытому исходному коду

В 2000 году компания Sybase, владевшая к тому времени правами на Watcom C/C++, приняла решение открыть исходный код продукта. В июне 2003 года был выпущен первый релиз Open Watcom версии 1.0 под лицензией Sybase Open Watcom Public License. Этот шаг был направлен на сохранение инструментария, который к тому времени утратил коммерческую актуальность, но оставался востребованным для поддержки легаси-систем и разработки низкоуровневого программного обеспечения.

Современное состояние

После выпуска версии 1.9 в 2010 году активная разработка Open Watcom замедлилась. Однако сообщество энтузиастов продолжало поддерживать проект, выпуская неофициальные патчи и исправления. В 2019 году была выпущена версия 2.0, которая включала улучшенную поддержку современных стандартов C и C++ (до C11 и C++14 соответственно), а также исправления для работы в 64-разрядных операционных системах. На 2025 год проект поддерживается сообществом на платформе GitHub, но не имеет официального статуса активно развиваемого продукта.

Архитектура и возможности

Компиляторы

Open Watcom включает в себя два основных компилятора:

  • WCC — компилятор языка C, поддерживающий стандарты C89, C99 и частично C11.
  • WPPпрепроцессор C.
  • WCL — компилятор языка C++, поддерживающий стандарты C++98 и частично C++14.

Компиляторы известны своей способностью генерировать высокооптимизированный код для процессоров x86, включая использование расширенных наборов инструкций (MMX, SSE, SSE2). Open Watcom также поддерживает кросс-компиляцию, позволяя собирать код для целевых платформ, отличных от хост-системы.

Поддерживаемые платформы

Open Watcom может работать на следующих операционных системах (хост-платформы):

  • Windows (32- и 64-разрядные версии, включая Windows 10 и Windows 11)
  • Linux (x86 и x86-64)
  • FreeBSD (x86)
  • OS/2 (32-разрядная версия)
  • DOS (с использованием расширителя DOS/4GW)

Целевые платформы (для которых можно компилировать код) включают:

  • DOS (16- и 32-разрядные приложения)
  • Windows 3.x (16-разрядные приложения)
  • Windows 9x/ME/NT/2000/XP (32-разрядные приложения)
  • OS/2 (16- и 32-разрядные приложения)
  • Novell NetWare (32-разрядные NLM)
  • Linux (32-разрядные приложения)
  • QNX (32-разрядные приложения)
  • RTEMS (встраиваемая операционная система)

Инструменты командной строки

В состав Open Watcom входит набор утилит командной строки:

  • WCC и WCL — компиляторы C и C++.
  • WASMассемблер, поддерживающий синтаксис Intel и MASM.
  • WLINK — компоновщик, поддерживающий форматы OMF, COFF, ELF и PE.
  • WMAKE — утилита для автоматизации сборки, совместимая с Makefile.
  • WDотладчик, работающий в текстовом режиме.
  • WSTRIP — утилита для удаления отладочной информации из исполняемых файлов.

Интегрированная среда разработки (IDE)

Open Watcom включает в себя IDE под названием WDE (Watcom Development Environment), которая работает в текстовом режиме и поддерживает редактирование исходного кода, компиляцию, отладку и управление проектами. WDE доступна для DOS, OS/2 и Windows. Графическая версия IDE для Windows называется WDE for Windows и использует стандартные элементы управления Win32.

Особенности и преимущества

Поддержка устаревших систем

Open Watcom является одним из немногих современных компиляторов, способных создавать 16-разрядные приложения для DOS и Windows 3.x. Это делает его незаменимым инструментом для разработчиков, поддерживающих легаси-программное обеспечение, а также для энтузиастов ретро-вычислений.

Производительность кода

Компиляторы Watcom исторически славились генерацией высокооптимизированного кода. Open Watcom унаследовал эту особенность, особенно в области оптимизации для процессоров x86. В некоторых тестах производительности код, сгенерированный Open Watcom, превосходит код, созданный GCC и Clang для 32-разрядных платформ.

Кросс-компиляция

Open Watcom поддерживает кросс-компиляцию «из коробки». Разработчик может установить инструментарий на 64-разрядной системе Linux и скомпилировать 16-разрядное приложение для DOS без необходимости использования эмуляторов или виртуальных машин.

Размер исполняемых файлов

Open Watcom позволяет создавать очень компактные исполняемые файлы. Например, простая программа «Hello, World!» для DOS может занимать менее 2 килобайт. Это достигается за счёт использования собственных библиотек времени выполнения (CRT), которые оптимизированы по размеру.

Недостатки и ограничения

Неполная поддержка современных стандартов

Open Watcom не поддерживает многие возможности современных стандартов C и C++, такие как C++17, C++20, а также некоторые функции C11 (например, атомарные операции и многопоточность). Это ограничивает его применение для разработки нового программного обеспечения, требующего современных языковых конструкций.

Отсутствие поддержки 64-разрядных целевых платформ

Open Watcom не поддерживает компиляцию 64-разрядных приложений для Windows, Linux или других операционных систем. Это связано с архитектурными ограничениями исходного кода, который был разработан в эпоху 32-разрядных вычислений.

Ограниченная поддержка современных операционных систем

Хотя Open Watcom может работать на современных версиях Windows и Linux, его интеграция с этими системами ограничена. Например, IDE WDE не поддерживает Unicode и не может корректно отображать символы национальных алфавитов. Кроме того, инструментарий не поддерживает современные форматы отладочной информации (DWARF, PDB), что затрудняет отладку на современных системах.

Лицензионные ограничения

Лицензия Sybase Open Watcom Public License является свободной, но несовместимой с GPL. Это означает, что код, скомпилированный с помощью Open Watcom, не может быть распространён под лицензией GPL, если он использует библиотеки времени выполнения Open Watcom. Это ограничение может быть проблематичным для проектов с открытым исходным кодом.

Применение

Разработка для ретро-платформ

Open Watcom широко используется в сообществе ретро-вычислений для создания нового программного обеспечения для DOS, Windows 3.x и OS/2. Например, многие современные игры для DOS (так называемые «демейки» и «инди-игры») компилируются с помощью Open Watcom.

Поддержка легаси-систем

Компании, эксплуатирующие устаревшее программное обеспечение, написанное на Watcom C/C++, используют Open Watcom для его поддержки и модификации. Это особенно актуально для промышленных систем, работающих под управлением OS/2 или DOS.

Образование и исследования

Open Watcom используется в учебных курсах по системному программированию и ретро-вычислениям. Его простота и прозрачность позволяют студентам изучать низкоуровневые аспекты разработки программного обеспечения.

Встраиваемые системы

Open Watcom поддерживает компиляцию для операционной системы реального времени RTEMS, что позволяет использовать его для разработки встраиваемого программного обеспечения.

Интересные факты

  • Компилятор Watcom C/C++ использовался для разработки многих известных игр 1990-х годов, включая «Doom» (id Software), «Quake» (id Software) и «Command & Conquer» (Westwood Studios). В частности, версия «Doom» для DOS была скомпилирована с помощью Watcom C.
  • Open Watcom является одним из немногих компиляторов, которые могут создавать 16-разрядные приложения для Windows 3.x, работающие в расширенном режиме.
  • Проект Open Watcom был одним из первых крупных коммерческих компиляторов, перешедших в разряд свободного программного обеспечения.

Источники

  • Официальный сайт проекта Open Watcom (архивная версия)
  • Репозиторий исходного кода Open Watcom на GitHub
  • Документация Watcom C/C++ (версия 11.0)
  • Статья «Watcom C/C++» в англоязычной Википедии
  • История компании Watcom International Corporation

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →