Delphiのランタイムライブラリは、製品の基盤のひとつです。VCLやFireMonkeyといったUIライブラリやデータベースアクセスライブラリ、さらには多くのサードパーティコンポーネントも、コアRTLに依存しているからです。 そのため、RTLの変更はすべての開発者に影響を及ぼすので、その変更について関心が高いのです。 以下は、まもなくリリースされるバージョンでの主要な変更点です。
Table of Contents
ビットカウント標準関数
一般的な低レベルのビット処理操作を行うための、新しい標準関数を導入します。
- Count Leading Zeros(先頭の0をカウント): パラメータXで1を保持する最上位ビットより上位ビットにある0の数を返します。Xが0の場合、ビット幅を返します。つまり、CountLeadingZeros32では32、CountLeadingZeros64では64を返します。
- Count Trailing Zeros(後ろの0をカウント): パラメータXで1を保持する最下位ビットより下位ビットにある0の数を返します。Xが0の場合、ビット幅を返します。つまりCountTrailingZeros32 では32、CountTrailingZeros64では64を返します。
- Count Population(範囲内の数をカウント): パラメータXの1の数をカウントします。戻り値は、0からビット幅の数字の範囲になります。つまり、CountPopulation32では32、CountPopulation64では64です。
従来のクラスへの追加機能
- TCustomIniFileクラスにWriteInt64およびReadInt64メソッドを追加
- TGUID型にIsEmptyメソッドを追加
- TJSONArrayクラスのItemプロパティをデフォルト配列プロパティに変更。これにより、myJArray.Items[2] ではなく、myJArray[2] のような記述が可能に
改善されたストリームバッファ
ベースクラスTStreamのCopyFrom関数では、データをコピーするのに使用する固定長のバッファ(60Kに設定)がありました。これは、大きいストリームをコピーする際には大変非効率でした。新しいデフォルトは1MB です。ただし、メソッドには追加のパラメータが用意され、行うコピー操作(ソースおよびターゲットストリーム)によって固有のバッファサイズを指定できるようになります。
パフォーマンスの最適化
- JSON読み込みの最適化: TJSONReaderを50%高速化
- ソートしたStringListを他のStringListに割り当てる際の最適化
- RTTIパフォーマンスの改善(以下を含む):
- TRttiMethod.Invokeが最大4倍高速化
- TVirtualInterface呼び出しが最大1.7倍高速化
- TRttiType.GetXxxx(AName) メソッドが最大10倍高速化
- TValue向けのいくつかの操作を高速化
- System.ClassesのQuickSort操作をより効率化
FreeAndNil
FreeAndNilプロシージャのシグネチャをアップデートしました。これは、インターフェイス参照や他のサポートされないデータ型での使用を回避するためのものです。新しく、TObjectへの参照を要求するように宣言されています。
これは、FreeAndNilの正しくない使い方をすると、コンパイルエラーが発生することを意味します。従来は、誤った使用法が検出されず、発見が困難なバグを誘発していました。パラメータはconstで宣言されていますが、参照渡しの変数は実際には変更されている点にご注意ください。
さまざまな追加機能
- Windows Server Coreで特定のコンソールアプリケーションの実行をブロックするいくつかの依存性を排除
- TStringHelper.GetHashCodeメソッドをハッシュを行う前に文字列を大文字に変換しないようにアップデート。これにより、TStringComparerクラスなどの内部操作と結果が一致
これは、期待されている改善のごく一部です。このほかにも、並列プログラミングライブラリ、AppTethering、RESTおよびHTTPクライアントライブラリ、その他のDelphi RTLのサブシステムについても、改善/強化の作業を行っています。これらの改善が、たとえ小さなものであっても、Delphi開発者の皆さんが日々取り組んでいる作業に役立つことを願っています。
この記事は、RAD Studioの将来のリリースに関するプレビューです。製品品質やスケジュール等の理由により、紹介した機能の提供が変更になる可能性があります。製品が正式にリリースされるまで、最終的な機能、スペック等について保証されません。詳細は、まもなく開催されるWebセミナーをご覧ください。