Laurent Klinger、Dan Nicolaescu、Michael Richmond は親切にもいくつかのバグ レポートを送ってくれました。Laurent は、Solaris 2.6 を実行している Sun Ultra3 で g95 のコンパイルが成功したことを報告しました。Dan が指摘した IMPLICIT ステートメントに関係する問題を修正しました。彼とマイケルは両方とも READ ステートメントの問題を指摘しました — 私はコードを見て、どうにかユニット番号を探す部分を削除しました。数日前、IO タグの解析の順序をいじっていたときに間違いありません。
私はまだこれらすべてのレポートに対処する機会がありませんでしたが、それらに到達します。
8月22日
Toon Moene の著作権譲渡は FSF によって受領されました。万歳!
8月21日
今夜はたくさんのウェブネタ。個々のファイルへのソース ページのリンクが壊れているように見えますが、現在は修正されています。glibc2 にリンクされた Linux x86 バイナリをアップロードしたので、ハッカーではない人でも g95 に打ち勝つことができます。
8月19日
Niels Jensen は、I/O ステートメントがシンボル テーブルに不要なシンボルを残していることを (再び) 知らせてくれました。これは、g95 がユニット番号がないときにユニット番号を照合しようとしたときに発生しました。例えば:
OPEN(FORM=”フォーマット済み”、UNIT=6、FILE=’/dev/null’)
「FORM」という名前の変数参照と一致し、等号で爆撃されました。式は解放されましたが、記号テーブルに FORM という名前の記号がまだありました。タグが最初に一致するように、一致の順序を変更することでこれを修正しました。これらは「=」記号が表示された場合にのみ記号を残すため、不要な記号は作成されません。これにより、実際に物事がよりきれいになりました。
INQUIRE ステートメントの IOLENGTH 形式の解析が追加されました。これにより、生成された文字数をカウントし、出力を破棄する I/O ライブラリへの呼び出しが生成されます。
関数インターフェイスが親名前空間に関数参照を作成しない問題を修正しました。問題は、RESULT が指定されていない関数内では、関数名自体が変数であるということでした。これは、インターフェイスがコンパイルされているときに、親の名前空間で設定されていました。
スキャナー内のエラー回復サブルーチンを修正して、現在の行だけでなく継続行の残りも消費するようにしました。行内でエラーが生成された場合、次の行は「分類不能ステートメント」エラーを生成しません。
新しい基本タイプ BT_PROCEDURE が追加されました。これは、プロシージャを実引数として渡したり、プロシージャ代入文を渡す場合に必要です。
g95_ref 構造体のリストを再帰的にコピーする copy_ref() サブルーチンを追加しました。これは、変数を表す式ノードのコピーを実装するために必要でした。コンストラクタ構造をコピーする同様の機能も実装しました。
先週ほど言及した 16K 行の Runge-Kutta コードは、g95 によって完全に解析されるようになりましたが、公正を期すために、このコードは同じコードの 1 次元、2 次元、3 次元のコピーで構成されており、私もモジュールが不要になるように少し編集しました。私の Pentium-120 は、約 13 秒で 16K 行すべてを解析し、最新の標準ではパワー不足のマシンで約 1200 行/秒を提供します。