10.4 Sydney - Release 1
RAD Studio 10.4 Sydney - Release 1(別名 10.4.1)がインストール可能となりました。10.4.1 は、10.4 の機能セット上に構築されており、製品全体にわたって既存機能の強化と、新機能の追加が行われています。Delphi 10.4.1、C++Builder 10.4.1、および RAD Studio 10.4.1 が、有効な更新サブスクリプションのユーザーにダウンロード可能となっています。
RAD Studio 10.4.1 は、特に品質向上にフォーカスを置いて進められました。鍵となる品質向上の対象領域には、次があります:
- IDE
- Delphi 支援機能(LSP)
- 並列ライブラリ
- SOAP & XML
- C++ ツールチェイン
- FireMonkey
- Vcl
- Delphi コンパイラ
- iOS のデプロイメント
RAD Studio 10.4.1 には、10.4 パッチ 1、パッチ 2、パッチ 3 で行われたすべての修正が含まれています。
品質向上に加え、次の詳細のとおり、10.4.1 ではさらに数多くの新機能が含まれています:
目次
10.4.1 のインストール
すでに 10.4 Athens(2020/5/26)をインストールしている場合、10.4 Athens - Release 1 をインストールするには、完全アンインストール後に再インストールする必要があります。アンインストール プロセスの過程で、設定の保存に関するオプションを確認することができます。これは、デフォルトで有効になっています。別途、設定移行ツールを使用して、設定を保存することも可能です。
10.4.1 における製品領域での主な強化
サポート プラットフォーム
RAD Studio は、Windows Server 2019 でのアプリケーションの配置をサポートしました。
IDE
プロジェクト
- パッケージ AUTO libsuffix: パッケージが、バージョン サフィックスの自動割り振りに対応しました。これにより、新しいリリースのたびに、正しいバージョン サフィックスに手動して更新または指定する必要がなくなります。(10.4 でコンパイラはこれをすでにサポートしていましたが、IDE およびパッケージ プロジェクト設定でのフル サポートは 10.4.1 から導入されています。)
- Pentium セーフ FDIV コンパイラ オプションは、Delphi コンパイラ オプションで表示されなくなりました。
- 10.3 以降は利用できなかったプロジェクト ペインのコンテキスト メニューの項目(プロジェクト ペインの空の領域を右クリックすることで起動される)が、プロジェクト ペイン ツールバーのドロップダウンから利用可能になりました。
レイアウト
- 複数のスクリーンにわたって複数のエディタ ウィンドウを使用する、マルチモニタ デスクトップ レイアウトのサポートが向上されました。
- フローティング フォーム デザイナが削除されました。セカンド ウィンドウでのフォーム デザイナを含む、マルチ編集ウィンドウを引き続き使用できることに注意してください。実際、それに対するサポートは強化されています。
- デバッグに入る/出る、(プロジェクトの開始、終了などで)起動に入る/出るなど、IDE がレイアウトを切り替える際、両方の状態に対して同じレイアウトが指定されていると、そのレイアウトは適用されません。これにより、不必要なレイアウトの切り替えが回避されます。
- 適用できないデスクトップ レイアウト(サポートされなくなったフローティング レイアウトなど。上記参照)は、タイトル バーの[デスクトップ レイアウト]コンボボックスに淡色で表示されます。フローティング レイアウトが適用されると、IDE は代わりにダイアログを表示します。
- 4K モニタに対するサポートの向上: IDE が、4K スクリーンが拡大縮小されていない場合でも、4K スクリーン上のレイアウトを正しく復元するようになりました。
- IDE がプロジェクトの .dsk ファイルを想定しているが見つからない場合には、デフォルトのレイアウトを使用して開きます。
UI
- Options and other dialogs:
- プロジェクト オプション、IDE オプション、GetIt、そして[項目の新規作成]ダイアログが、スクロールバー追跡対応となりました(スクロール バーをドラッグすると移動します)。これには、マウス ホイールでのスクロールも含まれます。
- オプション ダイアログ(環境オプション)は、以前は Win64 ターゲット プラットフォームの設定を表示するため開かれていました。現在、その時点でアクティブなプラットフォームに従って開きます。
- 複数のリストビュー コントロール。ダーク テーマでは読みにくい場合もあったため、仮想ツリー ビューに置き換えられました。
- ガイド ツアーがウェルカム ページから削除されました。
- オブジェクト インスペクタについて修正が複数あります。 特に、フリッキングと誤ったプロパティの選択について行われました。
- 構造ペインでの項目選択が向上されました。項目をクリックする場所や別の項目が選択された場所などが含まれます。
一般
- 「デバイスへのブロードキャスト]がデフォルトでオフとなりました。これは、IDE 起動時に常にネットワークにアクセスするため、一部のユーザーでエラーを起こしていました。現在無効になったため、(妥当な)ネットワーク エラーのみが起動時に発生します。
- 64 ビットWindows デバッガの名前([プロセスにアタッチ]ダイアログに表示される)が、どれが Delphi 用でどれが C++ 用なのかを明示するようになりました。これは、プロセスにアタッチする際に使用するデバッガを選択するのに役立つでしょう。
小規模だが注目される修正
- [無効なパスの削除]で有効なパスが削除されなくなりました。
- ツールバーを移動しても問題は発生しなくなりました。
- "-showotamenunames" (ToolsAPI 開発者が使用)が再び有効になりました。
- コード エディタでの文字列リストの編集が再び有効になりました。
- ダイアログが、IDE でモダン スタイルを使用して表示されます。
- 描画上の問題(プロジェクトを開く際に IDE ウィンドウが単色で表示されるなど)が解決されました。
- Windows 7 で、タイトル バーの上部に白い線がなくなりました。
- 画像を黒で描画するために使用されるアクション エディタが解決されました。
- 一部の IDE メニューが正しく描画されるようになりました(例、監査のポップアップ メニューなど)。また、「チェック済み」の状態が表示されなかった一部のメニューが、表示されるようになりました。
- デバッグ シンボルの検索パスで、$(Platform) や $(Config) の環境変数がサポートされました。
- コード エディタで、ユニットに対して無効な(フォームにのみ有効である)エンコーディングを選択できていました。これらは使用できなくなりました。
- パッケージ インストールで、パッケージが読み込み不可を表示される問題。ファイル名の大文字/小文字がディスク上で異なるパッケージで発生しており、通常、大規模プロジェクトで見られていたものが、解決されました。
Delphi LSP/ コード補完における変更点
- 支援機能で、クラス宣言での補完がサポートされました。
- Significant performance work:
- メモリ使用量の改善。DelphiLSP プロセスでのメモリ使用量が大幅に削減されました。
- 速度の向上。コード補完の結果が、大幅に迅速に表示されるようになりました。
- コード補完の内部では、定義に移動してホバリングし、すべてにおいてより良い結果を提供するようになりました(例、コード補完では、提示するシンボルのリストが改善されています)。
- コード補完の制御に新しいオプションがあります。これにより、機能を調整し、従来の補完にかなり近い動作にさせることができます。 これらの設定については、こちらを参照してください。
- 入力に従いコード補完がフィルタリングされる際、文字のマッチングが、任意で下線が描画されるようになりました。
- クラス補完の設定が、支援機能の設定ページに移動されました。
- IDE の外で変更されたファイル(外部エディタやソース コントロールなどで)が、LSP サーバーで認識され、再スキャンされるようになりました。
- 補完の結果が表示されないなどの一般的な支援機能の問題について、複数の修正が行われました。これには、パスにおける + シンボルの問題や、その他いくつかの問題が含まれます。
- Improved handling of packages
- ユニットを格納するパッケージがエラーを起こさなくなりました。
- コード補完が必要なパッケージからシンボルを提供するようになりました。
- パッケージで報告される誤ったエラーはもうないはずです。
- 総じて、パッケージでのコード補完が改善されています。
- ヘルプ インサイトで、シンボルにカーソルを合わせると、正確な内容が表示されます。
- コード補完は、「部で MSBuild を使用してコンパイル」がオンの場合に機能します。
- 赤い波線の長さが正しくない場合の「赤い波線」の描画エラーが解決されました。
- コード補完のリストがスコープではなく名前でソートするように設定されている場合、項目を選択すると間違ったテキストが挿入されました。これは修正されています。
- 10.4.1 は、10.4 パッチ 2 でのすべての修正も含んでいます。() かっこがすでに存在している場合に挿入されない、スペースを押すと現在の補完が選択されない、補完の遅延とテキストが正しくされない、 キーストロークによる構造ペインでのエラー インサイトの遅延などが挙げられます。
大規模プロジェクトでの支援機能
次の修正が、大規模プロジェクトで特に顕著に効果が表れます。上記のメモリ使用とパフォーマンスにおける修正は、大規模プロジェクトにおいて特に顕著に表れます。
- コンパイラで、過去の致命的なエラーを解析するよう改善されました。
- IDE 側に変更があった際のサーバーへの通知が改善されました。これにより、重複処理が減少し、補完の制度が向上します。
RTL での向上
新しい TLightweightMREW レコード
すべてのサポート プラットフォームにわたって機能し、古い TMultiReadExclusiveWriteSynchronizer(別名 TMREWSync)より高速で軽量な、新しい読み書きロックの実装が導入されました。TLightweightMREW は、各プラットフォームにおける読み書きロックのネイティブ実装をラッピングしています。
詳細については、TLightweightMREW ドキュメントを参照してください。
並列プログラミング ライブラリ
TThread.WaitFor、TParallel.For、TParallel.Join、TConditionVariableMutex.WaitFor for Linux、TTask.WaitForAny、TPoolThread クラスの IdleWorkerThreadCount に対する多くの修正。 また、PopItem に関連する TThreadedQueue の問題や、多数のスレッドの使用などにも対処しました。
SOAP と XML
- XML 品質に関する作業: TXMLDocument コンポーネントに関する長年にわたる問題が数点改善され、サポートされているさまざまな DOMVendors(OmniXML、ADOM)に関連付けられました。これらの問題の一部は、UTF のサポートやエンコーディングに関連するものです。
- SOAP WSDL インポータ: WSDL のインポート ロジックと、SOAP クライアントの呼び出しも改善されました。
Web クライアント
- Winapi.Winsock2 が、IPv6 アドレスのさらなるサポートのため、inet_ntop を含むようになりました。
- TRESTResponseDataSetAdapter は、JSON 文字列を適切な長さでインポートします。
- TJSONSerializer における列挙型サポートの向上
- TRestResponseDataSetAdapter の修正
- URL からの TIPAddress 作成が、Windows でも機能するようになりました
- NSURLConnection API は、Mac OS X 10.11 および iOS 9 の Apple で非推奨になりましたが、HTTP クライアント ライブラリでは引き続き使用されていました。10.4.1 では、両方のプラットフォームで新しい NSURLSession API のサポートが導入されています。この変更により、macOS でのプロキシ サポートの問題も解決されます。
データベース
- DataSnap の膨大な数の問題が解決されました。これには、パフォーマンス問題やメモリ リーク、MidasLib 問題、DatasetProvider や TClientDataSet の問題などが含まれています。
- SQL Server 関数パラメータの FireDAC サポートの向上
- IndexFieldNames を伴う TFDMemTable FindFirst での修正
- 計算フィールドや BLOB フィールドを持つ TFDQuery の改善
- TFDTable PostgreSQL 複数列インデックス フィールド順の向上
- 文字列内の QuoteTag の FireDAC-PostgreSQL 解析
その他の RTL の向上
- カスタム LineBreak を持つ TStrings のパフォーマンスの向上
- TObject メソッドの戻りや文字列チェックの最適化
- UTF8IdentXxx 関数の公開
- LoadResString の最適化
VCL の向上
- 10.4 での TGrid のいくつかのリグレッション(一部 10.4 パッチ2 ですでに対応済み)が解決されました。これには、TStringGrid および他のグリッド コントロール、OnDrawCell におけるグリッドStretchDraw メソッドの不整合、その他が含まれます。
- TGridPanel のペーセンテージ ベースの間隔処理の向上設定時に変更するのではなく、列または行に正確なパーセンテージを指定してそれらを適用できるようになりました。 これは大きな改善で、TGridPanel レイアウト コントロールを使用して、レイアウトに必要な間隔を正確に取得できるようになりました。
- TBitBtn の組み込みグラフィックが HighDPI に移動し、加えてスケーリングも改善されました
- カスタム タイトル バーが、高 DPI スケーリングをサポートし、また、他に数多くの品質上の修正が行われました。
- TUpDown コンポーネントの Position プロパティと OnChangingEx イベントの向上
- StatusBar コンポーネントの DoubleBuffered 描画サポート
- TPageControl SetTabIndex メソッドが、非表示タブの状態でも正しく機能するようになりました
- TDateTimePicker テキストは移動ホバリング時に、ぼやけなくなりました
- TLabel ワード ラップが、フォントの高さの計算ロジックを置き換えることにより改善されました
- TListView 情報チップが、より長く表示されるようになりました
- DB コントロールの境界線が、非データ対応コントロールと同じ外観になりました
- 複数のスタイルの向上
- 所有者が描画したトップレベルのメニュー項目のキャプション幅の問題、スタイル付きメニューとそのスケーリングが改善されました
- スタイルは、TButton の ImageMargins および TButton のテキスト位置を尊重します
FireMonkey
FMX TMemo の向上
私たちは新たな FireMonkey TMemo コンポーネント アーキテクチャの作業を継続しており、Windows の実装にさらに改善を加え、また、この新しい FMX TMemo コンポーネント アーキテクチャに macOS のサポートを追加しています。主な重点対象は、(他の言語の中でも)韓国語、日本語、中国語 のTMemo IME モードですが、パフォーマンス、安定性、スクロール動作、マウスの選択、コピーと貼り付けなど。全般的な改善にも力を入れています。また、TEdit に対する修正も行われています。
小規模だが注目される修正
- Storyboard Launch Screen には、Apple for iOS に必要なアイコン サイズのサポートが追加されています。
- iOS Push 通知の権限管理の向上
- TListView OnItemClick は、すでに選択されている場合でも発生します
- Android 上の TMediaPlayer.Duration の値に一貫性がない問題の修正
- 外部リンクに関する iOS WebBrowser の問題
- TStringGrid OnCellDblClick イベント
- TListView Checkmark アクセサリの消失
Delphi 言語
10.4.1 リリースでは、いくつかの領域で、Delphi コンパイラの改善が行われています。特に、LSP コード補完のサポートと、管理レコードの品質向上に重点が置かれていましたが、10.4 のリグレッションと予期しない変更(goto 文の問題やその他の一般的でないシナリオを含む)にも対応しています。パッケージ参照と C++ HPP ファイル生成において、いくつかの修正が行われています。また、このリリースでは、いくつかの領域でコンパイラのパフォーマンスが向上し、ユニット名の検索やその他の内部検索が最適化され、大規模プロジェクトに利益をもたらしています。また、コード生成の改善もいくつか行われています(つまり、コンパイラがパフォーマンスの高いコードを生成できるようになっています)。
管理レコード
このリリースでは、管理レコードの品質の向上が行われており、次が含まれます:
- 戻り値の最適化
- いくつかのコンパイラ エラーのクリーンアップ
- 代入演算子の向上
- 管理レコードのデフォルト(T) の変更
- 管理レコードとジェネリック型のより良い共存
- 初期化呼び出しがないケース
C++ 言語
Win64 デバッガ
- Win64 LLDB ベースのデバッガには、特に例外の捕捉とそこからの継続、およびパフォーマンス(特にスレッド数が多い場合)に関するいくつかの改善点があります。
- Delphi ビジュアライザの呼び出し場所の問題の修正: TStringList、Currency、TDateTime のビジュアライザは呼び出されなくなりました。
- F7 を使用して新しいデバッグ セッションを開始した際、例外ダイアログが表示される問題の修正
- OS 例外の処理の向上
- スレッドが数百ある際のステップ実行時の IDE パフォーマンスの向上
リンカ
- Win64 リンカー(ilink64)のメモリ処理が大幅に改善されました。これにより、大規模なプロジェクト、またはデバッグ ビルドでのメモリ不足エラーが減少します。
例外処理
- いくつかの主な例外処理の問題が修正されました。これには、Windows API が SEH 例外を発生させる可能性がある場において、ACE/TAO のメモリ割り当てに影響する問題が含まれています。
品質全般
- いくつかのクラッシュ、ICE などが Clang コンパイラにおいて解決されました。
- クロージャに対する RTTI 生成問題が解決されました。
- 特に Delphi スタイル クラスでのデバッグ情報の生成の向上
- RTL での向上。主に、MFC 互換性マクロの削除と常時これらのシンボルをエクスポートする点について。また汎用 C++ ライブラリのサポート時に見つかった互換性についても改善されました。
その他の強化
- License Manager アプリケーションのアクセス違反に対処しました
- GetItCmd.exe を直接呼出しても、インストール済みパッケージをシステムから削除しなくなりました。