OpenWatcom/Changes_in_1.8

OpenWatcom/Changes_in_1.8

いつものように(無断)翻訳。

このへん→http://www.openwatcom.org/index.php/C_Compilers_Release_Changes

  • C コンパイラは列挙 (enum) 型をより厳密にチェックするようになった。いままでは enum は基底型(signed/unsigned の char や int など)扱いで型チェックされていた。
  • C コンパイラは妥当性検査時に、列挙型シンボルに関する位置情報を追加するようになった。
  • C コンパイラは、near/far ポインタの処理、特にサイズの異なる整数型への変換や比較の面で改良された。
  • C コンパイラは #pragma alias をサポートするようになった。このプラグマはリンカが処理するエイリアスレコードをオブジェクトファイルに出力する。
  • C コンパイラの能力が向上し、いままではメモリ不足エラー (E1064) を出していた複雑なソースファイルをコンパイルできるようになった。
  • C コンパイラはプロトタイプのない関数を常に警告する (W131) ようになった。いままでは、プロトタイプがなくてもかまわないインスタンスによってはデフォルトで検査されないことがあり、時として移植性のないコードが書かれてしまう原因になった。
  • 警告 W139(除算や余り演算(モジュロ)の除数がゼロ)が C コンパイラに追加された。これは整数除算やモジュロの右項が定数式で、(結果の)値がゼロのときにつねに発生する。
  • コードが出力され、シンボル名に対応する関数の中身がすでに存在する場合に、pragma aux が正しく扱われるようになった。
  • inclue_alias プラグマの扱いにいろいろ修正が入った。
  • C と C++ コンパイラは、64 ビットやビットフィールドの無意味な比較を検査するようになった。
  • C と C++ コンパイラに、Windows プログラミングサポート用の、コードページ 1250 や 1252(Windows Ansi の Latin-2 と Latin-1)から Unicode への変換テーブルがつくようになった。
  • C++ コンパイラが関数テンプレート引数の明示化をサポートするようになった。例:f<T>()
  • C++ コンパイラは、クラステンプレートとテンプレートメンバに遅延生成 (lazy instantiation) を使うようになった。実際に使われているメンバだけがインスタンス化される。
  • C++ コンパイラは、クラス外部で定義されたテンプレートをメンバで使えるようになった。
  • C++ コンパイラのバグが多数修正された。
  • C++ コンパイラで、修飾子 (modifier) つきでクラス宣言をおこなうと、その修飾子がクラス定義に伝達されるようになった。
  • Fortran コンパイラで -SH オプションを使うと、整数型定数のデフォルトサイズが INTEGER *2 になるようになった。
  • Fortran コンパイラは、COMMON/GLOBAL の自動的な共通化 (equivalencing) を行ってもクラッシュしなくなった。
  • Fortran のテキストレコードの EOL(行末)処理が正規化(ノーマライズ)されるようになっている。UNIX 系システムでは書き込み/シークに LF を用い、読み込みには LF もしくは CRLF を使う。非 UNIX 系システムでは書き込み/シークに CRLF を用い、読み込みには LF もしくは CRLF を使う。
  • 16 ビット、32 ビット双方のコンパイラで各種のコード生成のバグ修正があった。
  • Win32 のヘッダとライブラリが OpenWatcom 内製のものになった。MinGW のヘッダとライブラリはもう使われていない。新しいヘッダとライブラリはマイクロソフトの SDK に対するさらなる互換性と Vista 向けのよりよいサポートを提供する。
  • Causeway のオフィシャル配布版がバージョン 4.03 になった。
  • Linux ランタイムライブラリに recvfrom() と sendto() が実装された。
  • POSIX 互換の fnmatch() 関数と対応ヘッダ fnmatch.h が追加された。
  • _dos_getfileattr() 関数がラージデータモデルの 16 ビットの DOS、Windows(ターゲット)でクラッシュしなくなった。
  • 他のコンパイラとの互換性向上のため、C ランタイムライブラリに以下の関数が実装された:_chmod, _chsize, _creat, _dup2, _eof, _filelength, _isatty, _read, _sopen, _tell, _umask, _unlink, _write
  • _dos_getftime() と _dos_setftime() の日付と時間の引数が、unsigned short ではなく unsigned int になった。他のコンパイラとの互換性向上のために変更された。
  • _dos_allocmem()、_dos_freemem()、_dos_setblock() のセグメント引数が unsigned short ではなく unsigned int を使うようになっている。他のコンパイラとの互換性のための変更。
  • Fortran のランタイム環境が Linux で動作するようになった。
  • Linux の Fortran のランタイムライブラリに FSYSTEM と FSPAWN が実装された。
  • Fortran のランタイムが、IO サブシステムでクラッシュが発生したとき向けに、保存したスタックポインタを吐き出すようになった。
  • デバッガのコンテキストメニューに、その先のノード (child node) を再帰的に全展開できるオプションがついた。
  • デバッガは、16進表示時に、表示する型のサイズを考慮した表示(たとえば、0x3 ではなく 0x03 という風に)を行うようになった。
  • デバッガに新しいメニューエントリが追加され、配列内の全要素の表示フォーマットを変更できるようになった(すべて16進、もしくはすべて10進)。
  • デバッガは、変更されたときでなく、書き込まれた時点でのブレークをサポートするようになった。これにより書き込みがまさに発生した時点でのブレークポイントがサポートされるはずである。
  • Windows 版のデバッガが、引用符でくくられたプログラム名をきちんと扱えるようになった。
  • Windows 版のデバッガが、正しいカラーサポートを行うようになった。
  • 最新の libcpre.obj で、NetWare の TCP サーバと trap ファイルが、NW6.5SP7 向けに更新された。
  • DOS リアルモード用 trap ファイル (std.trp) が、386 以上の CPU で 32 bit レジスタの上位部分をきちんと表示するようになった。いままでは上位部分が常にゼロ表示されていた。
  • WLIB にライブラリのページサイズを自動最適化する新オプション -pa が追加された。
  • WLIB は COFF のインポートライブラリをより正確に扱えるようになった。
  • WCL はオプション -fd と -fm でファイル名が指定されない場合でもきちんと扱えるようになった。
  • WASM が EXTERNDEF ディレクティブをきちんと扱えるようになった。EXTDEF レコードが作成されるのは、シンボルが実際に参照されている場合のみである。
  • WASM が自動依存のファイル名をきちんと扱えるようになった。
  • WASM は Linux や QNX(がターゲット)の場合と同じように、BSD ターゲットでは暗黙の __UNIX__ マクロを定義するようになった。
  • WASM と WMAKE の内部バージョンが C や C++ コンパイラで使われているものと同等になった。WASM では __WASM__ マクロの値が 1280 となり、WMAKE では __VERSION__ マクロの値が 1280 になる。
  • 32 bit の DOS 版 WD と WPROF が DOS/4G 2.x で使えるようになった。DOS4GOPTIONS の設定はもう取り込まなくなっている。それぞれに応じて個別の wd.ini と wprof.ini を使って、ユーザがデフォルト設定をオーバライドすることは今までどおりできる。これらのファイルは使いたい DOS/4G のバージョンで使われる書式に合わせたものでなければならない。念のため言っておくと、これは DOS/4GW ユーザには影響をおよぼさない。
  • WLINK は、16 bit ターゲット内の 32 bit コードで、64K バイトを超えるオフセットとグループサイズを扱えるようになった。
  • WLINK は、ターゲットリロケーションが絶対リロケーション (absolute) になっている場合、FIXUP ディスプレースメントを無視するようになった。MASM 5.1 が出力するオブジェクトファイルと互換性をとるためにこの措置が必要とされる。
  • WLINK は、グループ内の最終セグメント部分が空の場合も、そのセグメントのアラインメント指定をきちんと扱うようになった。
  • WLINK はデフォルトのディレクティブファイル名 (wlink.wlk) を環境変数 WLINK_LNK でオーバライドできるようになった。指定ファイルが見つからない場合は通常どおりデフォルトファイルが使われる。
  • WLINK は複数グループにまたがっているセグメントをきちんと出力ファイルに出せるようになった。
  • WLINK は PE フォーマットのファイル内にある dllimport 指定でローカル定義されたインポートシンボルをきちんと扱えるようになった。
  • WRC は、極東版の NT 系システム上でもコマンドラインで指定された DBCS エンコーディングを優先するようになった。
  • テキストエディタがリソースファイルの構文ハイライトをサポートするようになった。
  • GUI エディタの Fgrep ダイアログボックスにブラウズボタンがつき、Windows 標準のフォルダ参照ダイアログを表示するようになった。
  • Open Watcom ディストリビューションに ide2make ユーティリティ追加。このユーティリティは IDE のプロジェクトファイルを makefile に変換する。
  • exe2bin ユーティリティが、リロケーション情報がソートされていない場合でもきちんと使えるようになった。
  • インストーラは、Open Watcom のツールで使われる環境変数を自動設定するバッチファイルを作るようになった。