64ビットコンパイルのDelphiは現在ベータ版ですが、招待されたベータテスターのみがこのバージョンを手に入れることができます。
ベータテスターは何をテストする必要がありますか?
64ビットコンパイルのDelphiは現在ベータ版ですが、招待されたベータテスターのみがこのバージョンを手に入れることができます。
ベータテスターは何をテストする必要がありますか?
Embarcaderoは、おそらくベータテスター向けのテスターガイドを提供します。しかし、ここにいくつかのアイデアがあります:
メモリの割り当て、配置、ヒープ、およびスタック。 32ビットは64ビットバージョンのWindowsで最大4GB(まあ、3.5)のアドレス空間を使用できます。/LARGEADDRESSAWARE
スイッチ:Delphi64はもっと多くを使用できるはずです。8、16、および32GBを割り当ててみてください。(RAMが少ない場合でも、仮想アドレス空間であるため、割り当ては機能するはずです。)次に、特定の場所で値の読み取りと書き込みを行います。割り当てとポインターがすべて機能することを確認します。ProcessExplorerがアプリについて報告する内容を確認してください。スタックを調べます。ヒープとは異なり、トップダウンで実行されます。どのように見えますか、どのアドレスを使用していますか?16バイトのアライメントはどのように見えますか?そのアライメントは、すべての内部Pascal関数に対して保持されますか、それとも外部コードを呼び出す関数に対してのみ保持されますか?32ビットVCLには、2GBを超えるアドレスに対して安全ではないコードがいくつかありました。それらは修正されましたか?たとえば、プログラムのアドレス空間の53 GBに割り当てられたときに、何かが壊れますか?(大量に割り当ててみてください、次に、フォームやコントロールなどを動的に作成します。これらはおそらく高いアドレスで作成されます。)メモリマネージャーは断片化しますか?メモリの移動とコピーの速度はどれくらいですか?
コンパイラの警告。(これは重要です。) プログラムをアップグレードします-変更せずにコンパイルし、どのような警告/エラーが表示されるかを確認します。いずれかを修正します。次に、警告されていなくても発生するバグを修正します。どのような問題に遭遇しましたか?コンパイラは警告する必要がありましたが、警告しませんでしたか?整数にキャストするときにポインタを切り捨てると警告が表示されますか?より複雑な問題についてSingle
はどうでしょうか。浮動小数点型を使用するとどうなりますか?警告、またはそれは黙って?として表されdouble
ますか?たとえば、異なるサイズのメソッドにパラメータをPostMessage
渡し、32ビットサイズの値をhandle
パラメーター-コンパイラーは、サイズが間違っていると、小さいタイプを大きいパラメーターに渡すことが有効であることが多いにもかかわらず、コードが間違っている可能性があると推測するのに十分賢いでしょうか?どのような状況でそうすべきですか?(別のこと:64ビット型へのポインターを期待するメソッドで64ビットポインターを32ビット型に渡すとどうなりますか?型の安全性は大声で叫ぶはずですが、そうですか?その使用例は次のとおりです。バイナリファイルからのブロック。間違ったサイズの型で問題を簡単に引き起こす可能性があります。)...など。
コンパイラの警告は、アップグレードする人にとっておそらく最も便利なツールの1つであるため、コンパイラは、できるだけ多くの状況で、できるだけ多くの誤検知を少なくして、できるだけ多くのツールを生成する必要があります。 Delphiは幅広いプログラマーによって使用されていることを忘れないでください。コンパイラーがサイレントであっても、警告の意味を知っているか、悪いコードを認識しているかもしれませんが、初心者(または悪い日を過ごしている優れたプログラマー)を助けるものはすべて重要です。
カスタムコントロールとWinAPI。 おそらく、VCLの代わりにWindowsAPIを多用するいくつかのカスタムコントロールまたはコードがあります。Windows API固有の問題はありますか?
言語の互換性。 古いファイルのIOコードは機能しますか-AssignFile
など?RTTI?タイプのあるイベントシグニチャがInteger
あり、イベントハンドラがIDEによって自動作成される場合、現在設定されているプラットフォームに応じて、整数タイプまたはサイズ固有の整数タイプとして生成されますか?イベントがNativeIntの場合はどうなりますか?(C ++側でのみですが、以前にイベントハンドラーメソッドのシグネチャ生成にバグがありました。)
さまざまな種類のアプリケーション。 GUIプログラムは十分にテストされていると想定できます。コンソールおよびサービスアプリケーションはどうですか?
C++Builder互換のファイル生成。 C ++ BuilderはXE2では64ビットではありませんが、XE3ではうまくいけばそうなります。ただし、DelphiはPascalコード用の..hppファイルと.objファイルを生成できます。64ビットプラットフォームではどうなりますか?役に立たないのに、それらのファイルを作成できますか?コンパイラは64ビットモードでC++固有の警告を生成しますか、それともあきらめてあなたにそれをさせませんか?32ビットモードで、C ++ヘッダーの構築に関する警告を生成する64ビット互換性のためにできることはありますか?
リンカ。 他のコンパイラで作成された.libファイルと.objファイルをリンクできますか?(.libはい、.objいいえを期待します。)リンカーは64ビットにCOFFまたはOMFを使用しますか?それらは変更されましたか? このスレッドはELF形式を意味します。32ビットにも変更されましたか?これはDCU形式に影響しますか?それでも超高速のコンパイル/リンクは可能ですか?
COMおよび64ビットプラグイン。 マーシャリングの問題はありますか?Explorer用の64ビットプラグインを今すぐ作成できますか?
呼び出し規約。 Safecall
まだ異なる唯一の「呼び出し規約」(safecall
カウントする場合...)であると思われます-それはまだ機能しますか?関数とプロシージャのポインタ、およびクロージャ(オブジェクトメソッドのポインタ):それらは機能しますか?デバッグインスペクターではどのように見えますか?すべての呼び出し規約が同じになったとすると、メソッド宣言と呼び出しポインターで呼び出し規約を混在させると、どうなりますか?壊れたり、透過的に機能したりするレガシーなものはありますか?タイプに互換性がないという(誤った)警告が表示されるようになりましたか?
浮動小数点演算。Delphi 64プレビューでは、浮動小数点は2倍のみになると述べています。Delphiはを処理できますlong double
か?Real
古い(48ビットだと思いますか??)タイプを処理するための互換性ルーチンはありますか?コンパイラーはSSEまたはSSE2コードまたはミックスを生成しますか?それはどれくらい優れていますか?
パフォーマンス。 これは、64ビットコンパイラでの最初の試みです。おそらく、今後数回のリリースで改良されるでしょう。しかし、明らかなパフォーマンスの問題はありますか?
コンパイル; リンク; IDEの洞察?
生成されたコード:プログラムは速いですか、遅いですか?FPの計算は速いですか、遅いですか?inline
動作し、インラインメソッドの周りに不要なヘッダー/フッタービットを生成しますか?
デバッグ。これは、他のすべてをテストするプロセス全体を通してテストするのがおそらく最も簡単ですが、64ビットデバッガーはどの程度うまく機能しますか?32ビットのもののすべての機能を備えていますか?IDEデバッグビジュアライザープラグインは引き続き機能しますか?通常の実行ではなく、Delphi以外の64ビットプログラムをデバッグしたり、プロセスに接続したりするとどうなりますか?
その他Delphi自体は64ビットプログラムとしてコンパイルされていますか?そうでない場合は、なぜですか?(彼らは「自分のドッグフードを食べている」のですか?)コードは新しいVCLを検査します(プレビューにVCLソースが付属していると仮定します)。VCL32/ 64と互換性を持たせるために彼らは何をしましたか?エラーはありますか、または他のIDEから64ビットコードをすでによく知っている場合は、代わりにそれらが取ることができるより良いアプローチがありますか?
...等。私は何時間もタイピングを続けることができましたが、それは良いスタートだと思います:)
Embarcaderoがいくつかのテストガイダンスを提供すると確信しています。これが価値があるのは、私がテストすることです。主にそれが私が気にかけているものだからです:
WriteLn('I''m using all 64 bits!!!!');
ShowMessage
。一般的に言って、64ビットDelphiが本当に必要なのはFirebird64ビットUDFだけです。これはマイナーであり、FPCを使用して「修正」できます。最良のテストは、実際に64ビットのデルファイを必要とする人々によって行われると思います。そして、それらの人々はテストの提案を必要としません。
Delphi32が使用できないものにDelphi64を使用できるようにするために、基本的な基盤のものが最初に来ます。
また、ボーナスとして、通常のC++コンパイラから64ビットオブジェクトファイルを受け入れる機能。
非視覚的なもの...私は思います。すでにライブラリを移植している一部のベータテスターからはすでに成功しています。プレビューはわかりませんが、私が持っていない情報から、より複雑な非視覚的なシナリオが現在理にかなっていると思います。それをよく知っている人は私を訂正してください...
プレビューでは、最初に移行戦略を設定できると思います。これが私の意図です。VCL ...は、1つのコードベースで動作し、コードをアセンブラーではなく純粋なパスカルにバックポートすることを目的としています。
マイク