Zu den vielen Bereichen von Delphi, die in 10.4 verbessert werden, gehört die Laufzeitbibliothek, die viele Qualitäts- und Leistungsverbesserungen aufweisen wird.
Die Delphi Runtime Library ist eine der Grundlagen des Produkts, da die UI-Bibliotheken wie VCL und FireMonkey sowie die Bibliotheken für den Datenbankzugriff und viele Komponenten von Drittanbietern auf dem RTL-Kern aufbauen. Aus diesem Grund sind Änderungen an der RTL besonders wichtig, da sie sich auf alle Entwickler auswirken. Hier sind einige wichtige Änderungen, die in Kürze verfügbar sein werden.
Bit-Zählung Standard Funktionen
Wir haben neue Standardfunktionen für gängige Low-Level-Bitverarbeitungsoperationen eingeführt, die unten aufgeführt sind.
- Führende Nullen zählen: Zählt die Anzahl der führenden Nullen vor dem höchstwertigen Bit des Parameters X. Wenn X gleich Null ist, wird die Bitbreite zurückgegeben, d.h. 32 für CountLeadingZeros32 und 64 für CountLeadingZeros64
- Nachstehende Nullen zählen: Zählt die Anzahl der hinteren Nullbits, die auf das niedrigstwertige Bit des Parameters X folgen. Wenn X gleich Null ist, wird die Bitbreite zurückgegeben, d.h. 32 für CountTrailingZeros32 und 64 für CountTrailingZeros64.
- Zählung Bevölkerung: Zählt die Anzahl von 1 des Parameters X. Der Rückgabewert liegt im Bereich von 0 bis zur Bitbreite, d.h. 32 für CountPopulation32 und 64 für CountPopulation64
Zusätzliche Funktionen für Classic Classes
- Die Klasse TCustomIniFile hat bew Methoden WriteInt64 und ReadInt64
- Der TGUID-Typ hat eine neue IsEmpty-Methode
- Die Items-Eigenschaft der TJSONArray-Klasse ist jetzt eine Standard-Array-Eigenschaft, so dass Sie myJArray[2] statt myJArray.Items[2] schreiben können.
Bessere Stream-Pufferung
Die Funktion CopyFrom der Basisklasse TStream hatte bisher einen festen, konstanten Puffer für das Kopieren von Daten (auf 60K eingestellt). Dies kann beim Kopieren großer Streams sehr ineffizient sein. Der neue Standardwert ist 1MB, aber die Methode hat einen zusätzlichen Parameter, mit dem Sie je nach Kopiervorgang (Quell- und Ziel-Streams) eine bestimmte Puffergröße angeben können. Die neue Signatur der Methode lautet
// class TStream function CopyFrom(const Quelle: TStream; Count: Int64 = 0; BufferSize: Integer = $100000): Int64;
Optimierung der Leistung
- Optimierung des JSON-Lesens: TJSONReader ist jetzt 50% schneller
- Optimierte Zuweisung einer sortierten StringList an eine andere StringList
- Die RTTI-Leistung wurde unter anderem verbessert:
- TRttiMethod.Invoke ist ~ 4 mal schneller
- TVirtualInterface-Aufruf ist ~ 1,7 Mal schneller
- TRttiType.GetXxxx(AName) Methoden sind ~ 10 mal schneller
- Bei TValue sind mehrere Vorgänge schneller
- Die QuickSort-Operation in System.Classes ist jetzt effizienter
FreeAndNil
Wir haben die Signatur der FreeAndNil-Prozedur aktualisiert, um ihre Verwendung mit Schnittstellenreferenzen und anderen nicht unterstützten Datentypen zu vermeiden. Die Prozedur ist jetzt so deklariert, dass sie eine Referenz auf ein TObject benötigt:
procedure FreeAndNil(const [ref] Obj: TObject); inline;
Das bedeutet, dass eine falsche Verwendung von FreeAndNil jetzt einen Compilerfehler verursacht. In der Vergangenheit wurde eine falsche Verwendung nicht erkannt, was zu schwierigen Fehlern führte. Beachten Sie, dass, obwohl der Parameter als const deklariert ist, die by-reference-Variable tatsächlich geändert wird.
Zusätzliche sortierte Funktionen
- Wir haben einige Abhängigkeiten entfernt, die die Ausführung bestimmter Konsolenanwendungen unter Windows Server Core verhindern
- Die Methode TStringHelper.GetHashCode wurde aktualisiert, um den String vor dem Hashing nicht in Großbuchstaben zu schreiben, so dass das Ergebnis mit anderen internen Operationen wie der Klasse TStringComparer übereinstimmt.
Das ist nur ein Teil der Vorfreude. Wir haben auch viel Arbeit in die Parallel Programming Library, AppTethering, die REST- und HTTP-Client-Bibliotheken und weitere Delphi RTL-Subsysteme gesteckt. Wir hoffen, dass diese Verbesserungen, auch wenn sie relativ unbedeutend sind, in der täglichen Arbeit der Delphi-Entwickler positiv wahrgenommen werden.
Dies ist eine Vorschau auf eine kommende Version von RAD Studio. Es kann immer wieder zu Fehlern oder Änderungen in letzter Minute kommen. Nichts hier ist endgültig, bis die Version offiziell zur Verfügung gestellt wird.

