Лучшие вопросы
Таймлайн
Чат
Перспективы
Open Watcom
Из Википедии, свободной энциклопедии
Remove ads
Open Watcom — проект сообщества открытого кода по поддержке и развитию многоплатформных компиляторов Watcom C, C++ и Fortran и сопутствующих программ[1]. Лицензия открытого ПО от Sybase допускает лишь некоммерческое использование пакета Open Watcom частными лицами[2].
Remove ads
История
Суммиров вкратце
Перспектива
История[3] компилятора началась в 1965 году, когда четверо студентов Университета Уотерлу в Канаде под руководством профессора за три месяца работы создали компилятор Фортрана WATFOR[4]. Он работал на платформах IBM 7040, 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 под эгидой фирмы SciTech Software. Компилятор Open Watcom не полностью поддерживает стандарт C++, что не позволяет считать его полноценным компилятором C++ и мешает его широкому использованию, однако проект находит своё применение при создании программ для устаревших систем DOS и OS/2.
Хотя Sybase больше не продаёт компиляторы Watcom, они доступны как пакет открытого программного обеспечения OpenWatcom с помощью компании SciTech. После выпуска версии 1.9 проект прекратил разработку, и сопровождение было продолжено в форке OpenWatcom v2, выпустившем версию 2.0 со множеством улучшений и исправлений[5].
Remove ads
Платформы
Исходный код компиляторов портируем и, подобно многим другим свободным компиляторам, вроде 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], но для компиляции исполняемых модулей требуются несвободные библиотеки.
Remove ads
Совместимость со стандартом 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 и заголовочных файлов.
Примечания
Ссылки
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads
