2003年のアーカイブ

12月22日
明らかな理由で、一週間かそこら町の外に出ました… メリークリスマス

12月17日
Lothar Birk さんが、EQUIVALENCE ブロックに関する問題を報告しました。これらは、COMMON ブロックを修正する前に、古い方法で配置する必要があります。

また、F 記述子を修正して、幅が必要な場合は小数点の左側にあるゼロを押しつぶすようにしました。

この数日間、新しいバグ報告はあまりありませんでした。バグを修正する時間があまりなかったので、それも同様です。そして、それは悪化するでしょう。おそらく来年まで g95 はあまり使わないでしょう。

12月13日
Douglas Cox さんは、ライブラリがファイルを誤って切り詰めていたという問題を報告しました。ファイルは、シーケンシャル モードでの最後の書き込みの次の時点で切り捨てられましたが、切り捨ては読み取りモードで発生していました。修理済み。Martien Hulsen さんから、サイズ引き継ぎ配列の配列セクションが正しく印刷されないという問題が報告されました。また、修正されました。

彼はまた、共通ブロックが適切に割り当てられていないという問題も報告しました。これが修正された後、NIST スイートの 1 つで、空白のコモンが異なるプログラム単位で異なる長さで割り当てられていたバグが洗い流されました。Steven Yellowhair さんは、添え字のベクトル部分が最初の添え字ではないスカラー化の問題を報告しました。修理済み。

Delbert Franz は、|exponent|>999 の E フォームを定義する必要があることを指摘しました。g95 で x86 およびその互換機で 80 ビット real*10 をサポートするようにしたいので、ライブラリに追加しました。残念ながら、これは現在テストできません。

Lothar Birk さんは、フォーマットされていない連続した IO を大量に実行するプログラムに関する問題を報告しました。バグは非常に微妙で、見つけるのに時間がかかりました。Lothar のコードが動作するようになりました。

Michael Richmond さんは、関数の結果が誤って上書きされていたフロント エンドの問題を報告しました。

12月10日
Joost は、E フォーマットの問題を報告しました。ゼロを出力すると、「0.000E+00」ではなく「0.000E+01」が出力されるという事実です。Martien もこれに言及し、私は 0.000×10^n = 0.0 を指摘しましたが、人々がこのように見えることを期待していることは明らかです。Doug は、E に関する問題も報告しました。形式が十分に狭い場合、オプションの先頭の 0 が絞り出されないという問題です。Joost は、|exponent|>99 の場合、指数が文字を削除する形式にシフトするという別の問題を発見しました。すべて修正されました。

Joost には、要素別組み込み関数の配列コンストラクタ引数に関する別の問題がありました。型がコンストラクターの型に正しく反映されていませんでした。

Peter Weinert は、パラメータ配列の代わりに、モジュール内のパラメータ構造という前回と同様の問題を報告しました。これらは両方ともモジュールに格納する必要があり、これらが唯一のケースだと思います。

Michael Richmond さんは、サイズ引き継ぎ配列の境界チェックに関する問題を報告しました。上限がチェックされるべきではなかったときに、チェックされていたようです。今修正しました。

12月9日
Doug は、複素対数で失敗した NIST テストを指摘しました。Joost と私は数通のメールをやり取りし、ブランチ カットが正しく実装されていること、フロント エンドの複雑な対数の単純化にバグがあったこと、およびフロント エンドがマイナスを処理しないことを発見しました。ゼロです。

Michael Richmond さんは、配列コンストラクターを含む構造体コンストラクターに関する問題を報告しました。いくつかの適切な一般化の後、これが機能するだけでなく、他の配列コンストラクターを含む他の構造体の配列コンストラクターを含む構造体コンストラクターの完全に一般的なケースが機能するようになりました。ご想像のとおり、これにはいくつかの関数を再帰的にすることが含まれていました。Michael は、修正された ENTRY ステートメントのクラッシュも送信しました。これはパーサーにありましたが、ENTRY はバックエンドで実装する必要があります。

12月8日
Don Isgitt が FORALL の問題を報告しました。forall 内のいくつかのステートメントがスカラー化されていませんでした。今修正しました。

12月7日
Joost は、USE ステートメントに関する問題を報告しました。変数は複数回使用できることがわかりました。INQUIRE ステートメントにも別の問題がありました。私が設定した方法では、ユニットの存在プロパティは、そのユニットが開いていることと同等でした。これは同じことではありません。G95 では、0 から HUGE(0) までの単位番号が許可されるため、すべての単位が存在します。今修正しました。

派生型のコンポーネントであるポインタ配列を渡すことに関する別の問題が Joost によって報告されました。これで修正されました。

Douglas さんは、ホレリス定数の H が表示されないという奇妙な問題を報告しました。彼はまた、マイスナーの例のいくつかが現在機能していると報告しています。

Steven Yellowhair さんは、スカラー化に関する問題を報告しました。ベクトル添字内で配列を返す関数が正しく処理されませんでした。今修正しました。

12月4日
Douglas Cox は、乱数発生器のマイナーな問題を示すプログラムをしばらく前に送信しました。G95 は、このページの 4 月 23 日のエントリで後述する、状態の 3 つのワードで Marsaglia の xor-shift ジェネレーターを使用します。このジェネレーターには、高速、ランダム、少数のステート ワード (3 つ) など、多くの優れたプロパティがあります。Douglas のプログラムは、単語数を取得するために RANDOM_SEED(SIZE=n) を呼び出して、ユーザーにジェネレーターの初期状態を尋ね、次にそのシード単語数をユーザーに尋ねました。他の実装では、単語数は数十から数万の範囲です。RNG をシードするには別の RNG が必要です…

問題は、人々がお粗末な乱数発生器であることです。多数のゼロ ビットを含む xor シフト ジェネレーターのシードを選択すると、最初の半ダースの数値もゼロに近くなる傾向があります。回避策は、ユーザーのシードをシードのハッシュ バージョンに置き換えることです。GET と PUT の要件は、ハッシュが可逆でなければならないことを意味します。Douglas と私は、新しいシードが設定されたときにジェネレーターを単純に 12 回反復するというアイデアを検討しましたが、これには GET と PUT を適切に機能させるために 12 の中間状態を格納する必要がありました。

昨夜、理想的なハッシュ関数は、0 と 1 のビットの数が比較的等しい数値でシードを排他的 OR 演算するだけであることに気付きました。リバーシブルで高速です。マジック ナンバーは 0xf95f9500、0x0f95f950、0x00f95f95 です。シードがこれらの数値のビット パターンに近い場合、最初はランダムに見えない数値が得られます。

John Dormand さんは、想定長の文字パラメータ配列に関する問題を報告しました。要素の実際のサイズが、想定される長さに正しく反映されるようになりました。

John のコードには、モジュールに存在するパラメーター配列にも問題がありました。修理済み。Peter Weinert によっても報告されています。

12月3日
Delbert と私は、I/O の深刻な減速を追跡するために、ここ数日間連絡を取り合っていました。問題は、ユーザー レベルでデータをキャッシュする代わりに、他の多くのシステム コールを使用することになり、これらのシステム コールの一部は高価であり、実行時間が少なくともファイル サイズの 3 乗に比例しているようです。物事は今でははるかに高速です。また、メモリ リークを追跡しようとしていましたが、変更がメモリ割り当てとは何の関係もなかったにもかかわらず、どういうわけか消えてしまいました。

Douglas は NIST テスト スイートに移行しました。私たちは、ここ数日間で言及された他のスイートと同様に、そこでの進捗状況を追跡しています。Douglas は、修正された別の Meissner の問題を報告しました。この問題は、ダミーの手順で処理されました。積分も正しく出てきます。

12月2日
Jim Rosinski、Douglas Cox (マイスナーのトリオ)、Martien Hulsen、Frode Meling によって報告された可変長文字関数の長年の問題を修正しました。

11月30日
Doug は、修正された複雑なサインとコサインに関するいくつかの問題を指摘しました。

Joost は、\t を使用してタブを印刷する人がいると指摘しました。私はそれを考えていなかったので、\t (および \b と \f) の展開はオフになりました。印刷できない文字をこれらのシーケンスに展開することは、すでに成果を上げています。

11月29日
Doug さんは、最近のフォーマット修正により、彼が報告した他の問題が修正されたと報告しました。

Martien と Michael の両方が内部エラーを報告しました。これは、コンストラクターの単純化を含むコードが死んでいるかどうかを確認するための実際のチェックでした。そうではなく、他の場所で書き直しが必要でした。これにより、Douglas によって報告された、コンストラクターの単純化に関する Meissner の問題も修正されます。

Martien さんは、マイナス ゼロが正しく印刷されていないと報告しました。もちろん、数字をゼロと比較して符号を取得していましたが、これはもちろん正しくありません。これは修正されました。

Doug は、修正された A ディスクリプタと複雑な正弦と余弦の読み取りに関するいくつかの問題を発見しました。

11月27日
少し前に Douglas からの提案を実装しました。F はそうします。フォーマットされた出力の場合、印刷できない文字シーケンスは、必要に応じて C のようなバックスラッシュ コード、\n、\r、\xff で展開されます。これはデフォルトでオンになっています。リテラル文字が必要な場合は、G95_EXPAND_UNPRINTABLE をゼロに設定してください。

ベル文字 (\a) は個別に処理されます。G95_QUIET 変数が true に設定されている場合、書式設定された出力でベル文字がサイレントに削除されます。この変数はデフォルトで false であるため、g95 プログラムはビープ音を鳴らします。

P ディスクリプタに対する昨日の修正により、E および D 編集に導入された小さなオフバイワンの問題を修正しました。

Michael Richmond さんは、修正された固定ソース モードでの継続ステートメントに関するフロント エンドの問題を報告しました。

11月26日
Delbert Franz が P 記述子の問題を報告しましたが、修正されました。

Douglas Cox さんは、彼がバグを報告した Meissner コードのいくつかが、昨日の I/O の修正のおかげで、正しく動作するようになったと述べました。

11月25日
Douglas は、修正された浮動小数点読み取りに関する微妙な問題を報告しました。

Steven Yellowhair さんが、修正されたベクトル添え字を含む配列の読み取りに関する問題を報告しました。

11月24日
Martien Hulsen さんが、FORALL ステートメントのネストに関連する問題を報告しました。今修正しました。

Joost は、以前に修正されたように見えるベクトル添え字に関する問題と、修正が必要なベクトル添え字を含む配列の出力に関連する別の問題を報告しました。

Doug は 2 つのプログラムを送ってくれました。1 つは配列の戻り値の問題、もう 1 つはスカラー化の問題で、どちらも既に修正されているようで、FORALL のバグも現在修正されています。Doug は、より多くの Meissner の例が機能するようになったと報告しています。

Frode Meling は、ホレリス定数がサポートされていないことを指摘しました。それらのサポートを追加しました。

11月23日
Martien Hulsen さんは、直接アクセス I/O に関する別の問題を報告しました。この領域で複数の問題が修正されました。

他のバグから一休みし、FORALL を実装しました。

11月21日
私は昨夜、Philippe が送信した問題を再現しようとしてスカラーライザーをオフにして、ふざけました (できませんでした)。夜の最後のビルドを作成する前に、電源を入れませんでした。Joost、Alvin、Lothar、Edouard、および Delbert によって報告されました。

11月20日
Michael Richmond は、含まれているサブルーチン内から関数の戻り値を設定する際の問題を報告しました。これは診断が少し難しかったですが、現在は修正されています。

John Dormand は、今では正常に動作するように見えるコードのクラッシュを報告しました。気付かないうちに複数の問題を修正する別のケース。

Douglas Cox さんは、Meissner の例の 1 つに関する問題を報告してくれました — 組み込みの BACKSPACE が正しく動作していませんでした。Delbert Franz も指摘しています。

Joost は、g95 がループ変数をポインタにすることを許可していないと報告しました。標準の私のドラフトではこれを禁止していますが、f2003 ドラフトと同様に、他のすべてのベンダーはこれを許可しているようです。これは、f95 標準から最後の最後に削除された可能性があります。いずれにせよ、禁止を解除しました。

Philippe Marguinaud さんは、現在修正されている PARAMETER 変数を扱うフロントエンドの問題を報告しました。

Alvin Brattli は、読み込み時に共通ブロックが内部エラーを引き起こすという奇妙な状況に遭遇しました。内部エラーは、これは起こり得ない種類のものであると想定されています。結局、エラーによって報告された状況が発生する可能性があることが判明しました。

11月19日
Xavier Leoncini さんは、EOSHIFT() 組み込み関数がまだ見つからないことを報告しました。これは実装するのが大変でした。また、文字配列を返す際の問題も修正しました。

Édouard Canot はしばらく前に次のように報告しました。

PRINT *, HUGE(0.0d0)
無限を印刷していました。今修正しました。
現在、非常に多くのバグが待ち行列に入っています。私はそれらすべてを修正します!でも今夜は時間が足りない。厄介な問題の 1 つは、文字の戻り値 (スカラー) を書き直さなければならないことです。これには多くの検討が必要です。

11月17日
Travis Johnson と Martien Hulsen は両方ともフォーマットされていない I/O の問題を報告し、Travis はシーケンシャルで、Martien はダイレクトで問題を報告しました。どちらの問題も、メモリ管理の悪さが原因でした。修理済み。

Michael Richmond は、g95 が配列境界の実行時チェックをサポートするかどうか、またはサポートするかどうかを尋ねるために、しばらく前に書きました。-fbounds-check でオンにするこの機能を実装しました。チェックは配列式の中で有効です。

Michael によって報告された文字列配列の初期化のバグを含む、共通ブロックの初期化に関するいくつかのバグを修正しました。共通ブロックの完全な一般性はほとんどそこにあり、fortran でできるようになる奇妙ではあるが合法的なことをいくつか行わない限り、それに気付かないでしょう。

Douglas は、Meissner の本の例で g95 がどのくらい離れているかを示す表を送ってくれました。簡単な答えは、完了した方法の約 3/4 です。表には何が失敗したかの注釈が含まれており、ここにはまだかなりの方法があります。ジャンプすることは、最初の章はうまく機能しますが、後の章のより難解なものには作業が必要です.

問題の 1 つは、現在実装されている CSHIFT() 組み込みでした。Xavier Leoncini もこの問題について言及しました。

最もエキサイティングなレポートは、g95 では正しくコンパイルされて実行されるコードでしたが、別のベンダーのコンパイラでは正しく実行されませんでした。これは、Alan Miller のコードの 1 つで Douglas によって報告されました。これらの詳細をお楽しみに!ウーフー!

11月15日
Douglas は、線形システムを解くための Meissner の 3 つの例を送ってくれました。2 つのケースでは、一時変数が設定される前に使用されていました。最後のケースでは、スカラー化が完全に完了しておらず、最終的にバックエンドでベクトル量が検出されました。すべてが機能するようになりました。彼はまた、先週かそこらのある時点で修正された、スカラー化に関する別の謎のバグを持っていました。「:」フォーマット記述子にも問題がありました。これを修正すると、フォーマットの復帰で別のバグも発生しました。新しいレコードが常に開始されるわけではありませんでしたが、これは現在修正されています。

11月14日
Joost は、スカラー化に関するさらにいくつかの問題を提出しました。1 つ目は、形状引き継ぎ仮引数のスカラー化に関係していました。2 つ目は、割り当てられる前に一時配列を使用することに関係していました。

11月13日
今日、かなり複雑なバグであることが判明したものを選びました。Doug は、Meissner のコードの 1 つで、配列式を含む配列コンストラクターに関連する問題を報告しました。これらは現在、A+B のような一般的な式やベクトル添え字を含めてサポートされています。

Doug はまた、ライブラリが一部の数値を読み違え、整数フィールドの末尾の空白をゼロとして扱うという問題を報告しました。暗黙的に開かれたユニットに BLANK=’ZERO’ が設定されていたことが判明しました。今修正しました。彼はまた、kind=1 論理が機能しないプログラムを持っていました。今お世話になりました。g95 の場合、デフォルトは kind=4 論理で、1 ワード (32 ビット) に収まります。kind=1 論理は 1 バイトに収まるため、数百万のフラグがある場合、この方法で大量のメモリを節約できます。組み込み関数は、kind=1 の論理マスク配列をサポートしています。あなたが私に知らせないものを見つけたら。

Joost は、彼の Car-Parinello コードで失敗したテストケースが 7 つになり、そのうちのいくつかは重複している可能性があると報告しています。彼はすぐに新しいバグ ハントを計画しています。

11月12日
Charlie Zender さんは、netcdf ライブラリのコンパイルとリンクが成功したことを報告しました。サブルーチンをテストしています。コードを実行すると、多くのエラーが表示されます。すぐにもっとここに来ます。

Joost と Michael の両方が、他のダミー配列を含むダミー配列の指定に関する問題を報告しましたが、これは多大な労力をかけて修正されました。

Michael は、実際の引数がベクトル添え字を含む場合のスカラー化の問題を報告しました。

Martin Aichele はまた、数日前に修正された PRESENT とオプションの配列引数に関する問題を (数日前に) 報告しました。

11月10日
改行で終わらないファイルの処理に関して、I/O ライブラリにさらにいくつかの問題が見つかりました。リストと書式付き読み取りの問題を修正しました。

Douglas は、CR/LF で終了する ms-dos ファイルに問題があることも指摘したので、キャリッジ リターンをセパレータに変更しました。彼はまた、フロントエンドで文字定数に関するマイスナー問題を発見しました。

十分に再コンパイルしなかったため、.F90 の修正は機能しませんでした。これは修正されました。

11月9日
新しいコンストラクタ処理関数のバグをさらに修正しました。動作するようになりました。

Douglas Cox さんは、’.F90′ で終わるファイルが正しく処理されていないと指摘しましたが、これは現在修正されています。また、リストに「.F95」を追加しました。彼はまた、改行で終わらないファイルでリスト読み取りを行うときの I/O ライブラリーのいくつかの問題を指摘しました。いくつかの深刻な再配置の後、g95 は妥当なことをしようとします。つまり、レコードの終わりが読み取られたかのように動作し、さらに読み取るとファイルの終わりを通知します。

11月8日
Charlie Zender は、彼の netcdf コードに関する多くの進歩を報告しています。これは現在コンパイルおよびリンクされており、現在実際に実行をテストしています。この目的のために、新しい外部関数 EXIT(n) を追加しました。これは、呼び出されるとプログラムを終了し、オペレーティング システムに n を返します。

配列コンストラクターに関する長年のバグを修正しました。現在、これらは (/i,i=1,n/) のような不定のサイズにすることができます。n は実行時にのみ認識されます。Michael、Joost、Xavier、Doug の全員がこの問題を報告しています。

また、これをデバッグしているときに、ランタイム ライブラリで厄介なメモリ リークが見つかりました。

Joost は、引数が修正済みの配列である場合の PRESENT 組み込み関数の問題を報告しました。マイケルも発見。

11月7日
Joost と Douglas は、MINLOC と MAXLOC が「まだ」めちゃくちゃであると指摘しました。minloc/maxloc が配列の代わりにスカラーを返すように強制するために、人々は DIM パラメーターを使用しています。今修正しました。

Michael はコードの難問を送ってきました。問題は、インターフェイスによってオーバーライドされた組み込み関数を含む初期化式でした。他のベンダーのコンパイラは問題なくコンパイルできましたが、g95 はエラーを報告しました。確信が持てなかったので、リチャード・メインに説明を求めました。彼は、コードが違法であるため (初期化式が非組み込みであるため)、コンパイラーは自由に実行できると指摘しました。

11月6日
DIM パラメータが使用されていたときの MINLOC() および MAXLOC() の問題を修正しました。複数の方からご報告いただきました。

Douglas は、現在修正されている P 記述子の問題を報告しました。

11月1日
Michael Richmond と Martien Hulsen の両方が、レコードの終わりに到達するのが早すぎるという I/O エラーを送信しました。これはフェンスポスト スタイルのエラーでした。Michael は、Alan Miller のコードのいくつかに取り組んでいるようです。

Joost から文字関数の問題が報告されました。これは、想定サイズの文字関数に対する最近の修正が原因です。両方のスタイルが機能するようになりました。

彼が送信したもう 1 つの問題は、ASSOCIATED() 組み込み関数の呼び出しで関数を使用していたことで、ポインター属性を適切にチェックするようになりました。

Michael は、文字列の長さがコンポーネント参照で正しく伝搬されない問題を処理する問題を報告しました。彼らは今です。

Francois Jacq は、数日前に修正された書き込みを進めた後の読み取りの問題も報告し、環境変数を取得する方法がないことも報告したため、extern プロシージャ ‘getenv’ を追加しました。

Martin Aichele さんが、モジュール内の等価ブロックの配列命名に関する問題を報告しましたが、これは現在修正されています。

Douglas Cox は、MATMUL() が実装されていないことを指摘しました… 面倒を見てくれました。

私は明日カリフォルニアに出発し、誰もが間違いなくテレビで見たことがある理由で、サンタアナ高速道路を避けます.

10月29日
読み込みの不具合を修正…先日の書き込みの修正が原因でした。Joost と他の誰か (今はメールを見つけられません) がこの問題を報告しました。

モジュール プロシージャ名と Charlie Zender の外部プロシージャにアンダースコアを追加しました。netcdf はここでもアンダースコアを必要とするようです。Charlie は、ライブラリがほとんどリンクしていると報告しています。

Jim Rosinski は、倍精度整数である 8 進定数を持つコードを持っていました。標準では、BOZ 定数は常にデフォルトの整数である必要がありますが、種類指定の標準拡張を実装しました。

Lothar Birk と Martien Hulsen の両方が、非進行書き込みの後に読み取りを行うことについて不平を言う同じランタイム エラーを報告しました。まあ、彼らは両方とも書き込みを進めていて、チェックは偽物でした. 今修正しました。

スカラー化に関する Xavier の問題を修正しました。問題は、ベクトル式内のスカラー式を処理することでした。スカラーライザーは、ベクトル式からスカラーを削除することについて、より積極的になりました。

Martin Aichele は、配列コンストラクターではなく、スカラーによって初期化されたパラメーター配列であることが判明した問題を報告しました。このため、単純化プロセスでは、パラメーターがコンストラクターではなくスカラーに置き換えられました。今修正しました。

Michael Richmond さんは、一般的な関数解決に関するフロントエンドの問題を送信しました。この場合、組み込み関数は正しく解決されていましたが、最後に失敗しました。

私はまだバグに非常に遅れています。さらに悪いことに、私は来週町を離れる予定です。

10月28日
昨夜はぐちゃぐちゃだったので、今日は早めの更新です。Xavier がスカラー化の問題を報告し、私が修正を開始しましたが、手遅れで疲れていました。1 行の変更を誤って元に戻し、通常のチェックなしでパッケージをビルドしました。その結果、スカラー コンテキストで基本的な組み込み関数を使用するプログラムで g95 segfault が発生しました。ほとんどの場合。

10月27日
Charlie Zender さんは、彼の netcdf パッケージがほとんど g95 でコンパイルできると報告しました。欠けている唯一のものは、g95 が今まで生成しなかった末尾のアンダースコアでした。G77 には、ユーザーがさまざまな方法でグローバル名をマングルできるようにするための非常に精巧なシステムがありますが、これは誰も使用していないと思います。

この問題は、C ライブラリで system() 関数を呼び出していた Douglas Cox によって報告された SYSTEM() 拡張機能の問題も浮き彫りにしました。G95 のシステム コールは、C ライブラリを呼び出す前に、必要な末尾の nul を挿入します。Joost は自分のコードで ABORT() を呼び出すのが好きで、これも C ライブラリを直接呼び出していました。abort() 用に g95 インターフェイスを追加しました。

Martien Hulsen と Douglas Cox の両方が、ライブラリのデフォルトのレコード サイズが小さすぎて、長いレコードを印刷するとレコードの終わりエラーが発生することを報告しました。Martien はこの問題について調査を行い、g95 によって割り当てられた 2k が他のライブラリに比べて非常に小さいことが判明しました。デフォルトを 50 メガに増やしました。これよりも長い行が必要な場合は、事前接続されたユニットに G95_DEFAULT_RECL 環境変数を設定します (OPEN ステートメントには既に RECL パラメーターがあります)。

Michael Richmond は、複素数を実数に累乗してもうまくいかないと報告しました。複素数の複素累乗だけでなく、これに対するサポートが追加されました。

10月26日
Douglas は、f2003 で ‘[‘ と ‘]’ が配列コンストラクターを区切ることを指摘し、g95 でこれを要求しました。やり方は簡単でした。彼と Joost は、現在修正されている minloc と maxloc のバグも報告しました。

Martien Hulsen さんが、修正されたリストのフォーマットに関する微妙な問題を報告しました。

10月25日
Francois Jacq さんには、長さ引き継ぎ文字関数の結果が「結果」仕様にあるという問題がありました。彼と Michael Richmond は、仮定された長さ関数の結果の長さを取得する際の問題を指摘しました。今修正しました。

Helga Avlesen が 3 つのリグレッションを送ってくれました。そのうちの 1 つは、私が確認できるようになるまでに、すでにリグレッションが解除されて動作状態に戻っていました。もう 1 つは RESHAPE() のさらに別の修正です (この問題は Douglas Cox によっても報告されています)。RESHAPE() に対して行われた修正の多くは、互いに逆行していると思います。

Jim Rosinski は爆破したコードを送信しましたが、送信してから 1 週間経った今では正常にコンパイルされます。参考までに、私は小さなバグ報告に偏りがちです。

Michael Richmond は、文字ポインタを返す関数の問題を報告しました。これは Joost からの同様のレポートで 2 日前に修正されました。Xavier Leoncini と Michael Richmond は両方とも、スカラー化される式の非配列定数に関係するスカラー化の問題に気付きました。問題は、スカラー化された式ノードをスカラー ノードとしてマークしていませんでした。

Xavier には、スカラー化が式ツリーに完全に再帰されないという別の問題を浮き彫りにするコードもありました。これにより、非常に必要な再構築が完了しました。

10月24日
Martin Kleinschmidt さんが、派生型内の配列指定におけるパラメータ変数の問題を報告しました。彼らは自分たちの価値観に置き換えられていませんでした。今修正しました。

10月23日
Martien Hulsen さんが、修正された SHAPE 組み込み関数の戻り値の off-by-one エラーを報告しました。

Joost はしばらく前に 2 つの問題を報告しましたが、現在は修正されています。複素数を整数乗に累乗し、構造体ポインタを返すことです。

10月22日
少し前に Michael Richmond によって報告されたいくつかの問題を修正しました。1 つ目は、かなり標準的な拡張機能である DFLOAT 組み込み関数がないことです。2 つ目は、パラメータ変数に間違った型を与えるフロント エンドの問題でした。すべて修正。

Charlie Zender と Mats Hamrud の両方が RESHAPE() の問題を報告しています。Mats の問題は修正されましたが、Charlie の問題についてはわかりません。欠落しているインクルード ファイルがいくつかあったからです。

私はまだ多くのバグに遅れをとっています。

10月21日
Douglas Cox によって報告された配列式に関する 3 つの問題を修正しました。そのうちの 2 つは、配列の戻り値を代入する代わりに出力することに関係しており、2 つ目は、配列を返すネストされた関数に関係していました。

Larry Meadows は、J3 ミーティングで、スカラー化を実装するのは非常に難しいと語ったことがあります。彼は正しかったです。

TRANSPOSE() を実装しました

10月20日
RESHAPE、MINLOC、MAXLOC を実装しました。次に、配列の戻り値をスカラー化と統合しようとするという間違いを犯しました。これはやや難しく、私はまだそれに取り組んでいます。

10月15日
Douglas Cox さんは、修正された配列の戻り値に関する 2 つの問題を報告しました。問題は、配列関数の値と、実行時に範囲が決定された配列関数の出力でした。

Joost は、配列コンストラクターが実引数として渡されているという問題を送信しました。同様に修正しました。

Philippe Marguinaud–メールしてください。今朝あなたにメールを送ろうとしたら、「クライアントが承認されていません」と言ってメールが戻ってきました。

10月14日
Joost と Michael はどちらも、要素関数のスカラー化に関する問題を報告しましたが、簡単な修正がありました。Joost は、実引数リストで NULL() ポインタを渡す際の問題も報告しています。また、修正されました。

10月12日
ベクトル添え字のサポートが追加されました。

配列の戻り値 (ユーザー関数) のサポートを追加

10月11日
Martien Hulsen は、ファイルのデフォルトのレコード長に関する問題について、しばらく前に書きました。G95 の長さは、他のライブラリよりも大幅に短い場合があります。これをさらに調査します。

Michael Richmond が送信したいくつかの配列の問題は現在正常に機能しています。数日前の配列の作業は、おそらく実際に修正されたものです。スカラー化されるステートメントのステートメント ラベルに関係する問題とともに、DATA ステートメントに関連する内部エラーも同様に機能します。

Helge Avlesen さんは、配列ポインタが正しく機能しないためにクラッシュするプログラムを送信しました。頭を悩ませた結果、g95 はクラッシュすることが許されていることが判明しました。

Xavier Leoncini は、スカラー化中にクラッシュを引き起こしたコードの完全なバージョンを送り返しました。これも修正されました。

Mats Hamrud は、数日前にクラッシュしたコードを送信しましたが、現在は正常にコンパイルされています。問題が最近修正されたことは間違いありません。

10月10日
Francois Jacq さんは、ポインタ配列を返す関数が機能していないと報告しました。これは配列を返すのではなく、配列へのポインタです。これは修正されました。

10月9日
配列の祭典に続き、Helge は、1 次元のスライスが配列の最初の次元にない配列操作の問題を報告しました。もちろん、これは同様の問題のファミリー全体を修正します。

Xavier Leoncini が似たような問題を送ってきましたが、セグメンテーション違反を再現できなかったため、同じではない可能性があります。私たちはまだこれについて行ったり来たりしています。

Helge は、構造コンストラクタの問題も報告しています。これらにポインターを配置できるようになりました。

Michael Richmond は、データ ステートメントに関するいくつかのバグを送信しましたが、その間に 1 つを除いてすべて解消されました。この 1 つのクラッシュは、10^6 要素を持つ DATA 配列に関係していました。GCC のガベージ コレクターのマーク フェーズがクラッシュしていました。これは、マークを行うコードが再帰的であるため、要素と同じ数のスタック レベルが必要になるためです。ガベージ コレクターが再帰的である理由は、マーク コードが機械で生成されるためです。

他の言語では、配列の各要素にそれぞれの初期値を実際に提供する必要がありますが、fortran ではそうではありません。配列に100万個の1が必要な場合は、「1000000 * 1」を使用してください。または、本当に楽しいことが好きなら (/(i,i=1,1000000)/)。したがって、この問題を抱えている言語は実際には Fortran だけです。

ループを介してこれらのノードをマークする必要があることをコレクターに通知する方法があるかもしれませんが、他の人が抱えていた問題を考えると、g95 がすべてのツリー ノードのルートを常にマークするとは限らないことは明らかです。コレクション。ガベージ コレクターが実行されているのを見たことがあるときは、通常、5M アリーナを 1M アリーナに圧縮します。まあ、10 年前、5 M は多くのメモリでした。今はピーナッツです。

GCC は過去にメモリを独り占めするという評判があり、コレクターはおそらくその評判に応えたものでした。しかし、メモリが非常に安価なため、わざわざ気にする必要はありません。私は当分の間ガベージ コレクションを無効にしましたが、誰かが私を説得しない限り、ガベージ コレクションから完全に移行する予定です。

Michael は、次のような配列式も送信しました。

整数 :: s(3)
x = SUM(s(1:3)*y)
ここでの修正には、暗黙的な整数から実数への変換 (基本的な変換) を介しても、一時配列の範囲を決定するために SUM の引数をトラバースすることが含まれていました。もう 1 つの修正は、このケース (クラッシュ) のコピーアウトを無効にすることでした。コピーアウトが不要なその他のケースは、呼び出されるプロシージャーが PURE である場合であり、多くの組み込み関数があります。
10月8日
何人かの人々 (Douglas Cox、Joost、Michael) が、単純な代入から

print *, (/ .true., .false. /)
これらは現在機能しているようです。
Francois Jacq さんは、配列の関連付けが手続きに渡された配列に対して正しく機能していないと報告しました。コピーアウトは現在機能しています。

Xavier Leoncini は、割り当てられている配列の完全なランクが使用されていない、つまり x(i,:)=x(:,i) のような配列セクションの割り当てに関する問題を報告しました。これは修正されました。

10月7日
Tom Browder は、修正されたメイン プログラム ユニット内でのモジュールの使用に関するバグを含むプログラムを送信しました。

Michael Richmond は、IF ステートメントが失敗する奇妙なケースを指摘しました。修理済み。部分文字列の参照が適切に処理されないという別のフロント エンドの問題もありました。また、配列が構造内の遅延配列である場合の配列式の問題も修正されました。

10月6日
今日修正された多くのバグは、それらすべてを追跡できませんでした。ほとんどがマイケル・リッチモンド出身で、いくつかはヨースト・ヴァンデボンドル出身でした。スカラー化にいくつかの修正が加えられ、DATA ステートメントに厄介なメモリの問題がありました。TRANSFER 関数の初期サポートが追加されました。私はまだほとんどのバグで約 1 週間遅れています。

10月5日
一時配列が実装されました。これは、次のようなことができることを意味します。

整数 :: a(10)
i = 1、10を行います。a(i) = i; 遠藤

print *, count(a > 5)
また
整数 :: a(10)

プリント *, 2*a
10月2日
昨夜、Sourceforge シェル サービスがダウンしたため、更新はありませんでした。

私は配列式の実装に取り​​組んできましたが、一時的な配列を必要としない式で機能する暫定バージョンがあります。要素関数などが機能するはずです。一時的なものを生成するためのコードがありますが、遅くなっており、有効になっていません。ベクトルの添字も機能しませんが、それほど難しいものではありません。

9月29日
配列境界が仕様式であるという要件のチェックを解決フェーズに移動しました。解析時にこれを適切にチェックできるとは限りません。

Michael は、DATA ステートメントで 10^6 要素の配列を初期化する短いコードも送信しました。要素のリストは、恐ろしく非効率的な方法で構築されていました。新しいメソッドでは、1 時間ではなく 5 秒でリストが作成されるようになりました。

9月28日
Michael Richmond は、SUM 組み込み関数の欠如を指摘しました。実数/複素数 4/8 および整数 1/2/4/8 に対して実装されました。配列を返す DIM 形式はまだ実装されていません。PRODUCT 組み込み関数は、これらの型と種類に対しても実装されています。構造体コンポーネントの配列割り当てに関する別のバグが修正されました。

Michael はまた、フロント エンドに 2 つのバグを発見しました。1 つ目は、関数呼び出しと部分文字列の選択を誤ったことに関係していましたが、これは修正されています。2 番目の問題はさらに深く、いくつかのチェックのかなり基本的な並べ替えが含まれます。これは明日まで待たなければなりません。

マイケルも電気を取り戻しました!

Martien Hulsen による 2 つのバグを修正しました。1 つ目は、フォーマットの復帰中にデータ転送要素が取り込まれ、十分な要素が表示されないというものでした。2 つ目は、フォーマットされていない読み取りに対するファイルの終わりの検出が間違っていました。両方固定。

9月23日
休暇から戻って、DATA ステートメントの書き直しに取り組んで、使用できるいくつかの奇妙な方法を処理します。バグレポートはまだキューに入れられています。

マイケル・リッチモンドは、イザベルのせいでまだ電気がなく、一組の虫を送った。彼の唯一の照明源は彼のラップトップの LCD ディスプレイだと思います。

9月16日
Michael Richmond は、再帰サブルーチンの問題を報告しました。フロントエンドはこれらを適切に解決しておらず、バックエンドは呼び出し命令の挿入に失敗していました。修正しましたが、何が間違っていたのかわかりません。この問題は明らかにモジュール プロシージャにも及んでいました。

変数が大きすぎてスタックに置けないという長年の問題を修正しました。Michael は、この 2 週間にわたって Sylvain Heilliette や他の人々と一緒にこれを報告しました。既存のスキームは、特定のサイズを超える配列を静的メモリに配置することでした。これは、g77 およびその他の Fortran 77 コンパイラで使用されるアプローチです。再帰関数とサブルーチンの出現により、これが常に機能するとは限りません。

新しいスキームは、現在のプロシージャのスタックに割り当てられた配列の合計サイズを追跡します。特定の配列のサイズが臨界値よりも大きくなる場合、その配列はヒープに置かれます。サイズはデフォルトで 250k で、-fmax-frame-size で上書きできます。

他にもいろいろと忙しくメールが溜まっていました。残念ながら、これはあと 1 週間続くことになりますが、g95 のものを入れてみようと思います。

タイトルとURLをコピーしました