Watcom C/C++(現在はOpen Watcom C/C++)は、Watcom International Corporationが提供するC、C++、およびFortranプログラミング言語向けの統合開発環境(IDE)製品です。Watcom C/C++は、販売終了まで商用製品でしたが、その後Sybase Open Watcom Public Licenseの下でOpen Watcom C/C++としてリリースされました。16ビットx86、32ビットIA-32、または64ビットx86-64互換プロセッサをベースとしたDOS、OS/2、Windows、およびLinuxオペレーティングシステム向けのコードの開発およびデバッグツールを備えています。
2000年、 Watcom International Corporationを所有していたSybaseは、Watcom C/C++およびFortranコンパイラの商用販売を中止しました。2003年、Sybaseの顧客であるSciTech Software Incは、コンパイラのコードをOpen Watcomという新しい名前でオープンソースプロジェクトとして公開するためにSybaseと交渉しました。[ 2 ] Watcom C/C++コンパイラとWatcom Fortranコンパイラは、 Open Watcomパッケージとして無料で提供されました。
オリジナルの openwatcom.org チームによって承認された最後の安定版は、2010 年 6 月にリリースされた 1.9 でした。[ 3 ] [ 4 ]
オリジナルのコードベースが元のチームによって開発されなくなったと思われる後、コミュニティベースのフォーク版バージョン2.0(同じバージョン名で継続的に更新されている)がリリースされました。これには、さまざまなバグ修正、64ビットホスト(WindowsとLinux)のサポート、組み込みのテキストエディタ、2フェーズビルドシステム、および長いファイル名(LFN)をサポートするDOSバージョンが含まれています。[ 5 ]
Open Watcom Wikiには包括的な歴史が掲載されています。[ 6 ] [ 4 ]
オープンソース・イニシアティブは、このライセンスをオープンソースとして承認したが、Debian、Fedora、およびフリーソフトウェア財団は、「対象となるソフトウェアを「デプロイ」するたびにソースコードを公開する必要があり、「デプロイ」には多くの種類の私的使用が含まれると定義されている」という理由でこれを拒否した。[ 10 ]
このコンパイラは、 DOS、OS/2、Windows、Linuxの各オペレーティングシステム上で動作し、これらのシステム向けに実行可能コードを生成できます。また、Novell NetWare向けのNLMターゲットもサポートしています。現在、x86、PowerPC、その他のプロセッサ上で動作するLinux [ 11 ]および最新のBSD(FreeBSDなど)オペレーティングシステムへのターゲット拡張作業が進行中です。
このコードは移植性が高く、GCCやLCCといった他の多くのオープンソースコンパイラプロジェクトと同様に、コンパイラのバックエンド(コードジェネレータ)はリターゲット可能です。
1990年代半ばには、Doom [ 6 ] 、Descent [ 6 ]、Duke Nukem 3D [ 6 ]、Rise of the Triad [ 12 ]、Tomb Raiderなど、技術的に最も野心的なDOSコンピュータゲームのいくつかは、 WatcomコンパイラとDOS/4GW保護モードエクステンダーを使用してWatcom C/C++で構築されました。
2015年にゲーム「Retro City Rampage」をDOSに移植するために使用されました。 [ 13 ]
VirtualBoxはBIOSをコンパイルするためにこれを使用した。[ 14 ]
FreeDOSの現在の開発では、すべてのCソースコードがOpen Watcom Cでコンパイル可能である必要がある。[ 15 ]
Open Watcomは、OS/2ベースのArcaOSオペレーティングシステムのアプリケーションおよびドライバ開発に推奨されるコンパイラです。[ 16 ]
Open Watcomの構文は、 MicrosoftやBorlandなどの他のコンパイラによって導入された多くの慣習をサポートしており、例えば「asm」タグの先頭のアンダースコアの数に関する慣習の違いにも対応しています。標準規格に準拠したCやC++ではなく、他のコンパイラ向けに特別に記述されたコードでも、Watcomコンパイラでコンパイルできる場合が多くあります。
Cコンパイラは、デフォルトでANSI C (C89、C90、ISO C)規格をサポートしています。
Open Watcom は、C99標準との部分的な互換性をサポートしています。インライン変数宣言など、標準で最もよく使用される部分を実装しています。ただし、これらは文書化されていないコマンドラインスイッチ "-za99" (GUI の "4. その他のスイッチ" パネルの "その他のオプション" フィールドに追加する必要があります) を介してのみ有効になります。Open Watcom 2.0 のより新しいバージョンでは、GUI の "2. 診断スイッチ" パネルに C99 のチェックボックスが追加されました。C ++ スタイルのコメント (//)、柔軟な配列メンバー、列挙型宣言での末尾のカンマの許可など、3 つの C99 機能が v1.0 より前からC90拡張機能としてバンドルされています。 [ 17 ]
コンパイラは現在、新しい主要なC11機能はサポートしていませんが、C ライブラリには「Safe C」関数が含まれています。これは ISO/IEC TR 24731-1 [ 18 ] [ 19 ]で規定されており、C11 では「境界チェックインターフェイス (Annex K)」として知られています。関数名の例としては、strcpy_s()、memcpy_s()、printf_s() などがあります。[ 20 ]このライブラリは、2006 年 4 月に Open Watcom 1.5 とともにリリースされました。
1989年2月の最適化Cコンパイラの概要で、BYTE誌はWatcom C 6.5の「比類のない実行速度」を称賛し、最もANSI Cに準拠していると指摘した。同誌は「速度が絶対的に重要で、OS/2との互換性が重要でない場合は、Watcomを選びなさい」と助言した。[ 21 ]