11 Alexandria - Release 1
メインページ への移動
以前のリリースでの新機能 への移動
RAD Studio 11.1 Athens の更新版がリリースされました(2022.03.15)。
RAD Studio 11 Alexandria - Release 1(別名 11.1)がインストール可能となりました。 RAD 11.1 は、11 の機能セット上に構築されており、製品全体にわたって既存機能の強化と、新機能の追加が行われています。 Update Subscription の有効なユーザーは、Delphi 11、C++Builder 11、RAD Studio 11 をダウンロードして利用することができます。
RAD Studio 11.1 は、特に品質向上にフォーカスを置いて進められました。 鍵となる品質向上の対象領域には、次があります:
- IDE
- リモート デスクトップ
- Delphi と C++ のコンパイラ
- C++ ツールチェイン
- Delphi LSP
- C++ LSP
- Delphi RTL
- Vcl
- FireMonkey
- データ
- インターネット
目次
11.1 の製品領域での主な強化
IDE の拡張
一般的な IDE の機能向上
- インストールが完了した後の「作業開始」操作は、IDE を効果的に再起動するため、最初の実行は、昇格されたアクセス権限ではなく、ユーザーのアクセス権限で実行されます。
- [ランタイム テーマを有効にする]は、プロジェクトの基本構成で有効になりました。
- dproj/cbproj ファイルの ProjectRoot は、常に一貫してソートする必要があります。
- IDE 待機ダイアログの ToolsAPI インターフェイスでは、一部のパラメータの名前がその機能をより表すように変更されました。
- [別の編集ウィンドウを開く]メニュー項目が、ビューがクローンをサポートしていないときに無効になるようになりました。これはウェルカム ページを含んでおり、複製したり、他のウィンドウにドラッグすることはできません。
- [オプション...|保存とデスクトップ]ページが、2 つの新しいページに分割されました:
- 保存とリカバリ(自動リカバリと自動保存オプションを含む)
- デスクトップとレイアウト(残りのオプションを含む)
- [オプション]ダイアログの[メッセージ]ビューで、エラー、警告、およびヒントに使用される色を変更できるようになりました。IDE テーマごとに異なる色を設定できます。つまり、淡色テーマと濃色テーマ、またはその他のテーマに異なる色を設定できます。
- ファイルの上書きの確認または警告、Unicode プロジェクト名の確認、無効なコードページの使用時、IDE で使用されるいくつかの非主要ダイアログに、スタイルのサポートを追加しました。
- デプロイされたファイルにおいて、プロジェクト ファイルの並べ替え順序に一貫性がなく、意義のあるコンテンツ変更なく、プロジェクト ファイルが変更される、という問題がありましたが、それが修正されました。
- デフォルトの C++ コンソール アプリケーションが改善され、コンソール アプリケーションの作成が、C++ と Delphi の両方の[ファイル|新規](および[新規作成])メニューの高速ショートカットになりました。
- IDE 修正パックより、少数の項目が統合されました。
- IDE ツールバー(編集ツールバーなど)
- [オプション]ダイアログ ページの欠けていたスクロールバー
- オブジェクト インスペクタのレンダリング グリッチ
- デバッグ時の IDE とコード エディタを空白に
- FMX フォーム デザイナのテキスト入力の特殊キー(Windows キーなど)
- プロジェクト ビューでのリスト モード
- さまざまな例外や、その他
- [新しい項目] ダイアログには、すべてのアイテムのプラットフォームが表示されます。
- プロジェクトに項目を追加できる[新規]ダイアログでは、プロジェクトのアクティブなプラットフォームに基づいて、項目が非表示になります。
- [新規]ダイアログは、垂直リスト(カード、リスト、アイコンや小さいアイコンなど)だけでなく、複数のビュー スタイルもサポートします。
- [新しい項目]ダイアログは TControlList VCL コントロールを使用するようになり、スクロールが改善されています。
- [コンパイル]ダイアログでは、プラットフォームの表示、構成の作成が行われ、警告やヒントよりもエラーが優先されます。
IDE の高 DPI 品質
- データ モジュールが、その値がデフォルトの 96 のときに、PixelsPerInch プロパティを保存するようになりました。これは、VCL フォームでも同様です。
- 高 DPI での設計時に、動的に作成されたフレームが正しくスケーリングされるようになりました。
ウェルカム ページ
- ウェルカム ページで背景画像がサポートされるようになりました。画像を選択すると、ウェルカム ページ領域に合わせて画像が拡大縮小されます。アスペクト比は保持されるため、他の軸がウェルカム ページのサイズに収まる限り、画像の左側/右側または上部/下部が画面外に表示される場合があります。
- ウェルカム ページ設定を行う[IDE オプション]ダイアログに新しいページがあり、背景(テーマごとに設定可能)やプロジェクトを開くときにウェルカムページを閉じるか、などの設定があります。このページには、レイアウト エディタからもアクセスできます。
- ウェルカム ページのフレームがデフォルトで透過となりました。設定した壁紙は部分的に透明になります。透明度の量は、ToolsAPI で使用できるウェルカム ページの数値の 1 つです。
- フレームとウェルカム ページの上下のエッジ間の間隔が、わずかですが調整されています。
ToolsAPI のサポート
ウェルカム ページにて、ToolsAPI を使用したウェルカム ページ フレームの作成が、完全にサポートされました。弊社独自のフレームでも同じ API を使用しているので、私たちのフレームでできることは、いずれもユーザーのフレームでもできることとなります。
シンプルかつ高度な使用法を示すウェルカム ページ デモが 2 つあり、パブリック Github より利用できます。
最もシンプルなフォームでは、TFrame の継承を作成し、キャプション付きで表示しています。このフレームには、必要なものをすべて含めることができます。ただし、より複雑な機能もあり、それを利用することもできます:
- フレームのキャプションには、一部のフレームに見られるように、[最近開いたフレーム](ボタン)や[フレームの作成](Delphi と C++ の切り替え)など、カスタム UI クローム(2 番目のフレームを介して実装)を含めることができます。
- フレームは MVC パターンを使用し、バックグラウンドのスレッドでデータをロードします。独自の実装を使用できます。これには、私たちが構築したものと同じフレームおよびリスト ビューを使用することも含まれます。これは、将来、デフォルトのレイアウトやサイズなどに変更が加えられた場合を含め、セットアップを模倣することなく、同じ動作とルックアンドフィールを取得できることを意味します。
GetIt ダイアログの向上
- GetIt ダイアログ ボックスが再設計され、同様の UI が維持されていますが、パッケージのリストに ControlList コンポーネントを採用しています。これは、パフォーマンスに顕著な影響があります。
- RAD Studio は、パッケージ アイコンを GetIt にキャッシュし、ダイアログを再度開くための時間を短縮します。
- GetIt にはパッチを無視する新しいオプションがあるため、パッチのインストールをスキップしても、保留したパッチの通知を停止することができます。
コンパイラとツールチェーンの向上
Delphi と C++ の両方にて
ASLR、DEP/NX、TSAWARE
Delphi と C++ の両方にて、Windows リンカがプラットフォームのセキュリティ設定をより適切にサポートするようになりました。
Delphi の場合:
- これらの機能はすでにコンパイラ/リンカ フラグとして利用可能です:
ASLR の {$DYNAMICBASE}
DEP/NX の {$SetPEOptFlags $40}、またはマッチングの peflags オプション
C++ の場合:
- -GE: リンカ オプションを使用すると、これらフラグのオン/オフを切り替えられます:
-GE:option|0xNNNN[=on|off] DLL 特性フラグを設定 ALLOWBIND | ALLOWISOLATION | DYNAMICBASE | HIGHENTROPYVA NXCOMPAT | TSAWARE HIGHENTROPYVA は ASLR、NXCOMPAT は DEP/NX、TSAWARE はターミナル サーバーのためのものです。
Delphi と C++ の両方: これらの設定はデフォルトで有効になりました。
- 再配布可能バイナリ(BPL ファイルのパッケージなど)が、セキュリティ設定が有効化された状態でビルドされます。
macOS ARM および Android の Delphi デバッガ
macOS アプリケーションを Apple ARM デバイス上で実行するための、新しいデバッガがあります。このデバッガは、Intel マシンの使用時には使用できません。
この新しいデバッガは、LLDB の最新ビルドであり、その主要技術は、Delphi 構文のサブセットを理解するための Delphi パーサーです。(たとえば、これは Delphi 式を理解しますが、新しいクラスを定義することはできません。これは、使用される可能性のあるすべてのデバッガ式は十分理解できるものとなります)。この構文は、十分に Delphi のようである必要があり、大文字/小文字は区別せず、Delphi 構文にて複雑な式を評価します。
また、このデバッガはAndroid 64 ビットに対しても有効となりました。このデバッガは、エラー「切断されました」やフリーズを引き起こす率がはるかに下がっています。
C++ コンパイラとツールチェーン
- UnicodeString のデフォルト コンストラクタはインラインではなくなりました。これは、デバッグ時は文字列を返す関数の呼び出し時に、コンストラクタにステップ インしたくない場合に便利です。
- AnsiStringT には、ネームスペース接頭辞 System:: があります。
- 多くの組み込みヘッダー(xmmintrin.h など)が利用可能になりました。
- C++ RTL は、本リリースで大きく変更されています。このため、C++ ライブラリは 11.1 で再ビルドする必要があります(つまり、11.0 でビルドされたオブジェクト ファイルや .lib-s に対してリンクしてはなりません)。この変更は、Win64 に対してハンドルを正しき処理するためです。一部の内部 RTL 構造が今までは拡大されず、ハンドルが切り詰められることがありました。これらは、現在十分な領域が確保されます。
- より多くの組み込み機能(SSE-AVX など)が、RTL では同梱されています。
- System::DynamicArray には、反復処理のための STL メンバーが含まれています(begin() など)。
- Delphi のヘルパにあったいくつかの String 関数が、C++ からも利用できるようになりました。
- IDE では、リンク パスにおいて、リンカが clang リリース バイナリより前に、従来のデバッグ ライブラリ(もし提供されていたら)を検知してしまう、という問題がありました。これはつまり、コンポーネントやライブラリのデバッグ ビルドを提供し、かつ、両コンパイラをサポートしている場合、あなたの顧客は、誤ったコンパイラのバージョンに対してリンクしてしまう結果となります。これについては、すでに解決されました。
- デバッガ(特に Win64)における幅広い種類のコンパイラ バグと、デバッグ情報が改善されました。リリース モードでの TDS ファイルの使用、ロケールやその他多くの RTL や STL 領域への微調整、ライブラリのインポートに関わる多くの改善、生成される OMF ライブラリの coff2omf に対する修正、などがあります。
LSP の向上(Delphi および C++)
Delphi LSP
- DelphiLSP は品質と速度に重点を置いており、11.1 ではパフォーマンスが大幅に向上しています。
- このベータ版の主な変更点は、新たな高機能な作業が、パッケージを含むすべてのプロジェクト タイプに適用されることです。
- ヘルプ インサイトに例外情報が再表示されます。
- 配列およびセットについて、ヘルプ インサイトで行番号情報が利用できるようになりました。
- 非アクティブなマクロや ifdef で、〔Ctrl+Shift+↓〕を押下すると、宣言された次のメソッドの実装にジャンプします。
- 〔Ctrl+クリック〕ナビゲーションが、エイリアスが設定されたジェネリック型で機能するようになりました。たとえば、IntArray が TArray<Integer> の場合、IntArray 上で〔Ctrl+クリック〕すると、System.pas 内の TArray<Integer> ではなく、TArray<Integer> 型宣言の場所に移動します。
- ユニット内に include 指令がある場合に、〔Ctrl+Shift+ ↑ または ↓〕でのナビゲーションが正しく機能しない問題は、解決されました。
- プロジェクトが、プロジェクトとは別のドライブにあるファイルを使っている場合に、エラー インサイトが機能しませんでした。
- 通常のプロジェクトが、かなり速く読み込まれるようになりました。プロジェクトを読み込むために使用している技術は、パースの大量削減により大きく変更され、DelphiLSP は、はるかに迅速に、プロジェクトの読み込みを完了し、リクエストに応答するようになりました。
- エラー インサイトの結果が、はるかに迅速に更新されるようになりました。ここでも 5~30倍の速度向上が期待されます。最も劇的な改善は、多くの依存関係を持つ(多くの他のユニットを使用する)ユニットで見られます。
その他の改善点は次のとおりです:
- マクロ(定義)の処理向上。クラス宣言内のコード補完と同様、メソッドの実装と宣言間の切り替えが、IFDEF がある場合に、より機能するようになりました。
- マクロ(定義)は、インクルードされたファイルで宣言されている場合にも検出され、上記に影響します。
- プロパティを宣言すると、コード補完により、取得関数と設定関数が提案されます。
- コード補完により、セット型が表示されます。
- 型パラメータが、ジェネリック宣言においてジェネリック型(例、T)を含む形で、クラス宣言のコード補完で表示されます。
- パラメータ ツールチップ/ヘルプは、 ジェネリック型をインスタンス化した際に表示されます。
- レコード宣言内でコード補完を行うと、TObject 固有の補完(AfterConstruction など)が表示されていました。これは解決されました。
C++ および cquery
新しい[LSP 動作]タブには、cquery LSP サーバーがファイルにインデックスを付ける方法( コード補完、ナビゲーションなどを実行するために使用する情報の格納方法)を制御するオプションが、2 つあります。プロジェクトがアクティブ化されるたびにサーバーを再起動し、インデックスのみがエディタで開かれるファイルとなります。<詳細はこちら>
その他の改善点は次のとおりです:
- コード補完の項目は、[Alpha Sort]がオンでない限り(デフォルトはオフ)、cquery が返す順序(スコープの順序)で表示されます。
- すべての C++ プロジェクトのプロジェクト オプションで、インデックスはデフォルトでオンになっているはずです。
- 直接プロジェクトの一部分ではない(例、cpp/ヘッダーの単位ペアの一部ではない)ヘッダー ファイルでも、コードを補完できるようになりました。
- プロジェクト オプションやアクティブ プラットフォームを変更すると、新しいプロジェクト設定に一致するようサーバーを再起動します。
- サーバーは、ファイルがいつ保存されたかを認識し、正しく更新されるようになりました。このビルドのコード支援機能では、ファイルがディスク上に存在するまで機能しないため、これは新しいファイルにとって重要です。
その他の C++ 機能
- IDE は、サーバーが準備できるまで正しく待機します。
- プロジェクトのメイン フォース ファイルをコード補完できます。
パフォーマンスの向上
- コード補完は、プロジェクトのサイズに関わらず、2秒以内に表示されます。VCL プロジェクトのグローバル スコープで、コード補完を呼び出すと、8万を超える項目が返されます。
ライブラリの向上
FMX や VCL でビルドされたプロジェクト間でのコード共有を支援するため、フレームワーク固有の定義済みシンボルを追加しました:
- FRAMEWORK_VCL - プロジェクトが VCL フレームワークを使用している場合、この定義済み変数は True に設定されます。
- FRAMEWORK_FMX - FireMonkey (FMX) フレームワークを使用している場合に、この定義済み変数は True に設定されます。
Delphi RTL
最適化作業
- Delphi RTL に関して、パフォーマンス最適化に関して作業を行いました。
- また、次に対して改良を行っています: _CopyArray、_IntToStr64、_IntToStr32、InitInstance、InvokeRecordInitializer、_FinalizeRecord、_UStrAsg(purepascal 版を含む)、_LStrAsg、_LStrLAsg、AnsiLowerCase / AnsiUpperCase、TStringHelper.IndexOf。
新しい TURLStream クラス
- 新たに1つのストリーム クラス TURLStream と、1つの汎用基底クラスがあり、TAsyncStream は非同期ストリームのための新しい基底クラスです(TMemoryStream より継承)。TURLStream は URL パスをサポートする非同期ストリームで、TAsyncStream から継承します。
- TAsyncStream.Create は、バックグラウンド スレッドで APopulate を開始します。これが完了するまで、TAsyncStream に対する TStream メソッド呼び出しはブロックされます。アプリケーションでは次のことができます:
- IAsyncResult を使用して、TAsyncStream の値補完の待機/チェックを行うことができます。TAsyncStream は IAsyncResult をサポートします。
- 値の設定が完了すると呼び出される、AProvide アノニマス メソッドの提供。
- TURLStream コンストラクタは基底クラスのコンストラクタを拡張しており、次のように宣言されています:
constructor TURLStream.Create(const AURL: string; const AProvide: TAsyncStream.TStreamer; ASynchronizeProvide、AFreeOnCompletion: Boolean);
- TURLStream は、TAsyncStream 基底クラスの動作を継承していますが、内部的に、URL スキームに応じて THttpClient または TFileStream を使用しています。
- TAsyncStream は、次のパブリック メソッドを定義しています: Destroy、AfterConstruction、Read、Write、Seek、SetSize(Int64)、SetSize(Longint)、SaveToStream
- TURLStream は、次のパブリック メソッドを定義しています: Destroy、RegisterSyncReqExexcutor、UnRegisterSyncReqExecutor
その他の RTL の向上
- TOSVersion データ構造体における、Windows 11 および Server 2022 のサポート
- TURI.ToString は、ポートを考慮に入れます
- TMetaFile は大きなストリームから読み込めるようになりました
TMemIniFile と重複セクション
- TIniFile は、セクションが重複している場合に、10.3 より前の動作との互換性を高めるように変更されました。
VCL
最近の機能に関連する問題を中心に対応してきており、主に、TTreeView、TRichEdit、TEdgeBrowser、TNumberBox の拡張があげられます。
FireMonkey
改善された Android SDK の統合
- advmanager のサポートにより、android.bat ファイルへの依存関係を削除し、Android プラットフォームのための IDE の SDK マネージャ ダイアログを更新しました。
- DEX のコンパイルと DEX のマージは、C++/Delphi のリンク後まで遅延され、デプロイなしでのコンパイルは高速になりました。
- Android プラットフォームのコアインテグレーションのために、メソッドのオーバーロードで Java インターフェイスを実装する Delphi クラスのサポートを追加しました。これは、Android 12 とセンサ アクセスに関する問題への対処に役立ちます(SensorInfo デモを修正)。
- Java インターフェイスを実装する Delphi クラスは、Int8、Int16、Int64、Float32、Float64 値を返す関数を持てるようになりました。
TWebBrowser
- Windows 上での TWebBrowser に対する改善(WebView 2 サポートと共に)。ウィンドウ エンジンを複数回変更する機能を含みます。WindowsEngine プロパティのデフォルト値が変わりました。
- チームはまた、コントロールにおけるサイズ変更や透明性の問題についても取り組みました。また、モバイル上のローカル ファイルで作業するための、WebBrowser の機能も改善されています。
その他の FMX 品質
- いくつかの Windows HighDPI 関連の問題に対処
- TMessageManager.Unsubscribe のパフォーマンスを改善
- TMemo コンテキスト メニューへの[元に戻す]を追加し、コンテンツの自動スクロールに関する問題に対処
- Android と iOS の両方で絵文字の色を改善
- macOS プラットフォーム上での Metal GPU ドライバのサポートの改善
データ
一般
- フィールド リンク デザイナのペインと、[新しいフィールド]ダイアログを、より大きく使いやすいものにしました。
- Firebird 4 の長いフィールド名(最大63文字)をサポートするため、データベース RTL でのフィールド名における 31 文字の制限が削除されました。
FireDAC
- FireDAC の 構造ビュー のサポートが実装されました。また、一部の FireDAC ウィンドウは、より優れた高 DPI サポートを提供しています。
- 10.6 クライアントと共に MariaDB 10.6 サーバーに対してサポートを追加
- SQLite SEE のサポートを追加。C++Builder for FireDAC 静的バインディングで SQLite OBJ をビルドするためのコマンドライン バッチを提供します。readme ファイルの sqlite_see.txt では、この手順を説明しています(この機能は、GetIt プラグインを介した RAD Studio 11.0 ではすでに利用可能です)。
- FireDAC では、Firebird 4 ドライバが改善され、追加データ型のサポートが提供されました:
- INT128
- 精度 19~38 の NUMERIC
- タイムゾーン付きタイム、タイムゾーン付きタイムスタンプ(制限付き)
- DECFLOAT(16/34)
- ネイティブ ステートメントのタイムアウト
- FireDAC は、FireBird 4 ページサイズ 32768 のサポートを追加します。
インターネット
Android 上での WebBroke
- WebBroker サーバー アプリケーションを、Android デバイスや開発者ボード(Android OS を実行している RaspBerry Pi など)上にデプロイできるようになりました。Android 32 ビットおよび 64 ビットの両方にてです。
DataSnap
- Web.Win.ISAPIThreadPool を拡張し、64 以上のスレッドが可能になりました。NumberOfThreads 変数型が、Cardinal に変更されました。ShutdownTimeout 変数(ミリ秒単位のタイムアウト。スレッド プールはすべてのワーカ スレッドをファイナライズするために待機します)は、デフォルト値が 2 分となりました。
RAD サーバー
- 一部のデータベース構造が改善され、新たに一致する REST SysAdmin エンドポイントが提供されました:
- GET /sysadmin/log - LOG テーブルの内容についての情報を返します。
- POST /sysadmin/log?minTime=<ISO8601 date> - 指定した日時より古い LOG テーブルからすべてのレコードを削除します。
- DELETE /sysadmin/log - LOG テーブルからすべてのレコードを削除します。
- GET /sysadmin/backup?backupFile=<file path> - emsserver.ib データベースの指定されたバックアップ ファイルを作成します。バックアップ ファイルは InterBase サーバー上に作られます。
- POST /sysadmin/backup?backupFile=<file path> - emsserver.ib データベースを指定されたバックアップ ファイルから復元します。バックアップ ファイルは InterBase サーバー上に作られます。
- GET /sysadmin/validate - emsserver.ib データベース検証を実行し、データベース ステータスを返します。
- RAD サーバー ユーザーに、複数のセッションから同時にログインできるようにします。
- RSLite の新しいデプロイ機能
- Data セクションで ClientLib エントリを持つ、特定の Interbase クライアント ライブラリ (for embedded or regular DB) を選択するための EMS.INI オプション。
- RSLite に対して、即利用可能なデプロイ機能があります。
その他
- REST デバッガで、クライアント側の証明書を選択するためのオプションが追加されました。
- REST デバッガが DPI を認識するようになりました。
- TCustomRESTRequest クラスには新たに BodyCodePage プロパティができ、これはリクエストの本体のコード ページを示します。一部の特殊値は次のとおりです:
- -1(デフォルト値) - プラットフォームのデフォルト エンコーディングを使用
- 0 - 現在のアクティブ コード ページ
- 65001 - UTF8
- AmazonAPI におけるリージョンの切り替えのサポート