Nouveautés

De RAD Studio
Aller à : navigation, rechercher

Remonter à Accueil

Remonter à Nouveautés des releases précédentes

Sommaire

La release RAD Studio 10.3 Rio contient des fonctionnalités nouvelles et des améliorations.

Remarque:
  • Pour connaître la liste des composants de 10.3 Rio - Release 1, cliquez ici.
  • Pour connaître la liste des composants de 10.3 Rio - Release 2, cliquez ici.
  • Pour connaître la liste des composants de 10.3 Rio - Release 3, cliquez ici.

Langage Delphi

Déclaration de variable inline

Dans 10.3, le langage Delphi a subi des modifications qui apportent une plus grande souplesse dans la déclaration des variables locales. Jusqu'à maintenant, en conformité avec les règles du langage Pascal, toutes les déclarations de constantes et de variables devaient être effectuées dans un bloc var ou const qui était écrit avant le début du code d'une fonction, d'une procédure ou d'une méthode.

La nouvelle syntaxe de déclaration des variables inline vous permet de déclarer la variable ou la constante directement dans le code et de lui assigner une valeur directement dans la même instruction. Il est aussi possible de déclarer des variables dans un bloc de code imbriqué, dont la visibilité et la durée de vie sont limitées à ce bloc imbriqué.

Inférence de type

Les variables déclarées comme inline bénéficient aussi de l'inférence de type. Vous n'avez pas besoin de spécifier un type pour une variable inline par une assignation directe, car il peut être interféré à partir de la valeur qui lui a été assignée.

Comptage de références mémoire dans le compilateur Linux

Dans 10.3, le fonctionnement du compilateur Linux 64 bits a été "rétabli" de façon à utiliser une implémentation de gestion de la mémoire des objets sans activation de ARC et de correspondre exactement au comportement de Windows.

La définition NEXTGEN a été désactivée pour le compilateur Linux 64 bits.

AnsiString / AnsiChar sur Linux

RAD Studio 10.3 Rio fournit la prise en charge des types de données d'ancien style AnsiChar/AnsiString sur Linux. Utilisez-les avec précaution, car Unicode reste le type de chaîne préféré même sur Linux. D'autre part, les pages de code Ansi sur Windows et Linux ne correspondent pas. Toutefois, cela peut permettre d'augmenter la compatibilité avec du code de gestion de chaînes de bas niveau.

C++

Mise à niveau de Clang : Prise en charge C++17

C++Builder et RAD Studio 10.3 introduisent une mise à jour du compilateur amélioré par Clang avec prise en charge de C++17 pour Windows 32 bits. Dans le cadre de la mise à niveau progressive du compilateur, vous pouvez désormais utiliser les dernières fonctionnalités du langage C++ pour bénéficier d'un code plus concis et plus puissant, d'optimisations du compilateur favorisant un code plus rapide, et de tirer parti de davantage de bibliothèques C++ tierces parties permettant de construire des applications plus puissantes.

  • Compilateur amélioré par Clang et chaîne d'outils C++17 pour Win32 (bcc32x et bcc32c).
  • Bibliothèque d'exécution C++ (RTL) construite avec le compilateur amélioré par Clang mis à jour pour Win32, y compris l'édition 2018 de la bibliothèque STL Dinkumware.
  • Inclut également la prise en charge de C++14.
  • Amélioration de l'achèvement de code.

Clang est la valeur par défaut.

Dans les versions précédentes, un nouveau projet C++ utilisait par défaut le compilateur classique pour la plate-forme Win32. Ce comportement a été modifié et le compilateur amélioré par Clang est maintenant utilisé par défaut.

Compatibilité descendante

Le compilateur Win32 utilise par défaut C++17 pour tous les projets. Cependant, dans la page Compilateur C++ de la boîte de dialogue Options de projet, vous pouvez choisir d'utiliser un langage antérieur, y compris C++14, C++11 et même C++98/03.

Nouveautés de C++17

C++17 comporte d'excellentes nouveautés visant à améliorer votre productivité et votre code.

Pour avoir un aperçu des nouveautés de C++17, lisez :

Dans le cadre de la mise à niveau de C++11 vers C++17, RAD Studio 10.3 Rio inclut également la prise en charge de C++14.

Nouvelle version de STL/Dinkumware

C++Builder utilise la bibliothèque STL Dinkumware pour fournir la bibliothèque C++ standard de Windows. C++Builder 10.3 utilise une version 2018 mise à jour de la bibliothèque STL Dinkumware pour Win32 et Win64.

Amélioration des performances mathématiques pour Win64

De nombreuses fonctions mathématiques C++ ont une nouvelle implémentation. En moyenne, ces méthodes sont près de deux fois plus rapides que dans la release précédente.

Amélioration de l'achèvement de code pour C++

Pour C++ Win32, l'achèvement de code à l'aide du compilateur amélioré par Clang mis à jour est sensiblement plus rapide et produit de meilleurs résultats que l'achèvement de code C++ précédent. Il utilise un serveur Language Server Protocol : cquery.

Pour ce compilateur, l'achèvement de code est maintenant asynchrone. La saisie n'est pas suspendue pendant le calcul de l'achèvement. Il utilise un serveur Language Server Protocol : cquery.

Error Insight for C++

Error Insight est désormais disponible pour C++. Il affiche une prévisualisation des problèmes de code dans l'éditeur en soulignant en rouge les erreurs. Il utilise un serveur Language Server Protocol et cquery et est disponible lorsque vous utilisez le nouveau compilateur amélioré par Clang pour Win32.

Débogage des builds optimisées

Avant, l'activation des informations de débogage désactivait l'optimisation du compilateur. Dans le compilateur Win32 mis à jour de la release 10.3, le débogage d'un build optimisé est maintenant pris en charge. Notez que dans un build optimisé, il est très courant que des expressions et des variables ne soient pas disponibles pour le débogueur du fait de l'optimisation.

Nouvelles bibliothèques dans GetIt

Plusieurs des bibliothèques C++ les plus utilisées sont disponibles via GetIt.

Delphi et C++

Compatibilité ABI C++/Delphi

Dans les versions précédentes, la transmission de la méthode ABI sous-jacente n'était pas toujours identique, en particulier avec les enregistrements de 4 à 8 octets transmis par valeur ou par référence. Cette irrégularité a été résolue, de même que les problèmes rencontrés lors de la migration du code C++ Win32 vers Win64 pendant une interaction avec Delphi, notamment lors de l'utilisation de gestionnaires d'événement. Cet exemple canonique montre un gestionnaire d'événement défini avec un paramètre TPoint. Dans Win32, cela permettait d'afficher les valeurs correctes des coordonnées x et y du point. Dans Win64, les valeurs affichées étaient incorrectes. Ce problème ne se produit plus.

La plupart des modifications concernent fastcall, mais RAD Studio 10.3 Rio inclut également des modifications de cdecl et la prise en charge d'une autre convention d'appel pour assurer une compatibilité complète, y compris sur les plates-formes mobiles.

EDI

L'apparence de la fenêtre principale de RAD Studio 10.3 Rio a été améliorée, de même que celle de plusieurs boîtes de dialogue clés. Cela permet de moderniser le style tout en optimisant la lisibilité et la clarté.

Deux nouveaux thèmes

RAD Studio 10.3 comprend un nouveau thème clair et une mise à jour du thème foncé mettant l'accent sur l'usabilité sur de longues périodes de temps.

Options de projet et EDI

Les boîtes de dialogue EDI et Options de projet ont une apparence plus nette due à l'alignement et à l'espacement régulier des contrôles. Le fond des boîtes de dialogue n'est plus gris mais a été remplacé par une apparence plus moderne avec un fond blanc, un libellé pour chaque page de paramètres et une arborescence d'options en pleine largeur.

De nouvelles catégories ont été introduites dans l'arborescence d'options et certaines options ont été déplacées dans de nouvelles catégories. Par exemple, dans la boîte de dialogue Options de projet, les icônes d'application ou les images ne se trouvent plus dans la page Application mais dans Application > Icônes.

Vous pouvez faire des recherches dans les deux boîtes de dialogue Options en utilisant une nouvelle zone de recherche dans la barre de titre.

Fenêtre principale de l'EDI

La fenêtre principale de RAD Studio 10.3 est plus claire, plus lisible et plus alignée. Les modifications sont les suivantes :

  • Les bordures et les lignes excédentaires ont été supprimées. Dans l'interface utilisateur, les sections sont identifiées par des couleurs de fond distinctes et non plus par des lignes.
  • Amélioration de la lisibilité et des zones à cliquer. Les onglets de l'éditeur sont plus grands et la police est blanche sur un fond sombre, ce qui facilite la lecture et les clics. La barre de titre des fenêtres ancrables est également plus grande.
  • Les modifications de focalisation dans l'EDI sont très claires. La zone de focalisation en cours, qu'elle soit dans un onglet de l'éditeur ou dans une fenêtre ancrée, est identifiée par un fond bleu foncé. Maintenant, vous voyez immédiatement où se trouve la focalisation du clavier.
  • Certaines fenêtres ont été renommées, y compris le Gestionnaire de projets qui se nomme maintenant Projets et la Palette d'outils qui se nomme maintenant Palette.
  • IDE Insight, qui permet de faire des recherches dans l'EDI, se trouve dans la barre de titre de l'EDI.

Boîte de dialogue Nouveaux éléments

La boîte de dialogue Nouveaux éléments répertorie les éléments dans une liste déroulante, avec un nom et une description. Pour faciliter la recherche, certains éléments ont été placés dans plusieurs catégories (par exemple, une bibliothèque dynamique est maintenant présente dans Fenêtres et Multi-périphérique) et la zone de recherche a été déplacée dans la barre de titre.

Boîte de dialogue de compilation

Le nombre de conseils, d'avertissements et d'erreurs apparaît maintenant clairement dans la boîte de dialogue de compilation. La nouvelle disposition la rend plus lisible.

Boîte de dialogue Gestionnaire de packages GetIt

La boîte de dialogue Gestionnaire de packages GetIt n'affiche plus les éléments dans des pages mais dans une liste déroulante. Son apparence est également plus nette et la zone de recherche a été déplacée dans la barre de titre.

Améliorations supplémentaires relatives à l'EDI

Optimisation du chargement de formulaires à l'aide de LiveBindings dans l'EDI à la conception

Dans RAD Studio 10.3, le chargement de formulaires à l'aide de LiveBindings ou avec de nombreux contrôles est maintenant beaucoup plus rapide. Les délais de chargement sont passés de trente secondes (pour un très grand formulaire) à quelques secondes seulement.

Amélioration relatives au pack de correction

RAD Studio 10.3 Rio comprend les corrections et les améliorations du Pack de correction de l'EDI (IDE Fix Pack) d'Andreas Hausladen. La plupart des corrections incorporées sont axées sur l'EDI et incluent ce qui suit :

  • Timer haute résolution grâce à l'utilisation de l'arborescence virtuelle.
  • Optimisation de FindHInstance.
  • Débogueur utilisant CREATE_DEFAULT_ERROR_MODE lors de la création du processus.
  • Optimisation de TStringList IndexOf et Name.

Architecture et outils de traduction intégrée de la VCL

Bien que l'architecture et les outils de traduction intégrée de la VCL soient toujours inclus dans 10.3, aucune amélioration ne leur a été apportée et ces outils seront supprimés dans une prochaine release. Nous vous conseillons de diminuer l'utilisation de ces outils et de migrer vers un autre jeu d'outils de traduction.

VCL

Prise en charge des listes d'images à résolution élevée

Avec le nouveau contrôle ImageList à résolution élevée de la VCL de 10.3, les développeurs qui construisent de nouvelles applications Windows VCL ou qui mettent à jour des applications existantes pour des écrans à résolution élevée peuvent prendre en charge les images pixel-perfect multirésolutions sur tous les contrôles, ainsi que les dessins personnalisés exigeant des images mises à l'échelle pour des moniteurs avec diverses résolutions. Pour ce faire, vous pouvez utiliser le composant TImageCollection en combinaison avec le composant TVirtualImageList.

Ces composants associés permettent de distinguer une collection d'images (où chaque image logique peut avoir plusieurs résolutions) d'une liste d'images avec une taille unique spécifique utilisée pour un contrôle.

TVirtualImageList est entièrement compatible avec les listes d'images traditionnelles qu'il peut remplacer, y compris en fournissant un handle HIMAGELIST, et peut être utilisé par les contrôles de la VCL et les codes utilisant des appels de liste d'images d'API Windows.

TImageCollection prend en charge les images avec des canaux alpha, y compris les images PNG. Vous pouvez également charger des bitmaps de transparence à code couleur de style ancien. Il existe aussi des outils de migration que vous pouvez utiliser pour convertir facilement des TImageList traditionnels en une nouvelle collection d'images et listes d'images virtuelles.

Prise en charge de Per Monitor V2

RAD Studio 10.3 inclut la prise en charge de Per Monitor V2 pour la VCL. Cela permet aux applications VCL de s'adapter aux échelles Windows et aux modifications d'échelle DPI entre les différents écrans. Pour activer la prise en charge dans votre application, accédez à Projet > Options > Application > Manifeste, puis dans la section Reconnaissance DPI, choisissez Per Monitor V2.

Fonctionnalités de Windows 10 - Prise en charge étendue du Windows Store/API

Dans 10.3, le nombre d'API Windows que les développeurs VCL et FireMonkey peuvent utiliser dans leurs applications a augmenté. Il s'agit d'API WinRT et d'API Windows 10 récentes, y compris des composants prêts à utiliser pour les achats in-app et les versions d'évaluation dans le Windows 10 Store.

Mises à jour de l'API WinRT

Dans RAD Studio 10.3, des mises à jour ont été apportées aux déclarations d'en-têtes Pascal Objet API WinRT, y compris la prise en charge de nombreuses API ayant été ajoutées depuis la première release de Windows 10. Ces API suivent le même modèle de déclaration introduit dans RAD Studio 10 Seattle et concernent les unités suivantes (sous le dossier source système Windows WinRT) :

WinAPI.ApplicationModel.Background.pas Winapi.ApplicationModel.Contacts.pas WinAPI.ApplicationModel.Core.pas WinAPI.ApplicationModel.DataTransfer.pas WinAPI.ApplicationModel.pas Winapi.CommonNames.pas WinAPI.CommonTypes.pas WinAPI.DataRT.pas Winapi.Devices.AllJoyn.pas Winapi.Devices.Bluetooth.Advertisement.pas WinAPI.Devices.Bluetooth.pas WinAPI.Devices.Enumeration.pas Winapi.Devices.Geolocation.pas Winapi.Devices.Midi.pas WinAPI.Devices.pas Winapi.Devices.PointOfService.pas Winapi.Devices.Scanners.pas Winapi.Devices.Sensors.pas Winapi.Devices.Sms.pas WinAPI.Foundation.Collections.pas WinAPI.Foundation.pas WinAPI.Foundation.Types.pas WinAPI.Gaming.pas WinAPI.Globalization.pas WinAPI.GraphicsRT.pas WinAPI.Management.pas Winapi.Media.Devices.pas Winapi.Media.MediaProperties.pas WinAPI.Media.pas WinAPI.Networking.Connectivity.pas WinAPI.Networking.NetworkOperators.pas WinAPI.Networking.pas WinAPI.Networking.Proximity.pas Winapi.Networking.PushNotifications.pas WinAPI.Networking.Sockets.pas WinAPI.Networking.Vpn.pas Winapi.Perception.pas WinAPI.Security.Credentials.pas WinAPI.Security.Cryptography.pas WinAPI.Security.pas Winapi.ServicesRT.pas Winapi.ServicesRT.Store.pas WinAPI.Storage.pas WinAPI.Storage.Streams.pas WinAPI.SystemRT.pas WinAPI.UI.Composition.pas WinAPI.UI.Core.pas WinAPI.UI.Input.Inking.pas WinAPI.UI.Input.pas WinAPI.UI.Notifications.pas WinAPI.UI.pas WinAPI.UI.Text.pas WinAPI.UI.ViewManagement.pas WinAPI.UI.WebUI.pas WinAPI.UI.Xaml.pas WinAPI.WebRT.pas

Mises à jour de l'API Windows

Les mises à jour de l'API Windows concernent différents domaines. Elles concernent notamment les API associées à une résolution élevée, y compris la reconnaissance DPI et du thread, les paramètres DPI pour les moniteurs et les fenêtres, les thèmes à résolution élevée et ainsi de suite.

Elles concernent aussi la prise en charge de la nouvelle fonctionnalité de saisie à l'aide du stylet, les messages WM_POINTER_xxx, les API associées et les structures de données.

Dans 10.3, des déclarations de type dupliquées ont également été réorganisées. Par exemple, PUint32 n'est pas dans System.pas. Par ailleurs, certains types de handle Windows ont été déplacés et ont une déclaration légèrement différente.

TWindowsStore

Le composant TWindowsStore vou permet de connecter une application Windows avec le Windows Store et d'utiliser des fonctionnalités comme l'obtention d'une liste des applications appartenant à l'utilisateur, des add-ons disponibles, des add-ons achetés et la gestion du mode d'évaluation.

Le composant TWindowsStore est pris en charge pour les plates-formes Windows uniquement et RAD Studio 10.3 Rio inclut une version VCL et une version FireMonkey.

TWindowsStore est un wrapper de composant pour TWindowsStoreCore.

Améliorations supplémentaires de la VCL

  • Prise en charge des fontes colorées dans TDirect2DCanvas.
  • Exposition des API et des messages liés à wm_pointer.
  • Partage des extensions de contrat.

FireMonkey

Niveau 26 ou supérieur de l'API Android

RAD Studio 10.3 Rio prend en charge le développement pour la version 26 de l'API Android, comme demandé par Google pour le déploiement des nouvelles applications dans Play Store à partir d'août 2018 et pour les mises à jour commençant en novembre 2018. Cela concerne les modifications suivantes :

  • Nouvelles informations dans le manifeste (avec le niveau d'API correct).
  • La configuration par défaut utilise une version récente du SDK/NDK.

Vous devez mettre à jour le SDK de façon à inclure une bibliothèque de plate-forme récente. Sinon, les apps Android ne pourront pas être construites.

Nouveau modèle de permissions Android

Le mécanisme de demandes de permissions a été modifié dans les versions récentes de l'API Android. L'utilisateur peut appeler PermissionsService.RequestPermissions (depuis la nouvelle unité System.Permissions) et la transmettre comme référence à une routine qui sera appelée avec les réponses de l'utilisateur et optionnellement une routine pour afficher le motif d'une permission demandée. Voir le modèle de permission Android pour de plus amples informations.

Ordre Z Android

Dans 10.3, l'ordre Z Android prend en charge l'utilisation de contrôles stylés FireMonkey comme les boutons, les libellés, les cases à cocher avec des contrôles de rendu natifs comme le navigateur et le contrôle de carte sur une même fiche sans que le contrôle natif ne recouvre le contrôle stylé.

Contrôles natifs Android

10.3 comprend un certain nombre de capacités conçues pour prendre en charge l'utilisation des contrôles natifs et des contrôles stylés FireMonkey sur une même fiche Android.

L'un des changements concerne l'utilisation du thème Material Design pour les contrôles natifs Android dans les applications FireMonkey. Les contrôles natifs tels que TWebBrowser, TMapView et d'autres contrôles natifs utiliseront le thème Material Design sur des périphériques fonctionnant sous Android version 5.0 ou ultérieure.

La liste suivante présente tous les contrôles prenant actuellement en charge la présentation native :

  • TCalendar
  • TEdit
  • TSwitch

Prise en charge d'iOS 12

RAD Studio 10.3 inclut la prise en charge d'iOS 12 pour cibler des périphériques et construire des applications d'entreprise et des apps déployées dans l'App Store.

Prise en charge de Mojave

RAD Studio 10.3 permet de construire des applications 32 bits pouvant être exécutées sur macOS 10.14 Mojave. Delphi permet de créer des applications ciblant le SDK 10.14.

Améliorations supplémentaires de FireMonkey

  • Prise en charge des Emoji Unicode.

FireDAC et les bases de données

Améliorations relatives à MySQL

  • Prise en charge de MySQL v 8.0.
  • Prise en charge de MariaDB 10.3.

Améliorations relatives à SQL Server

  • Prise en charge de SQL Server 2017.

Améliorations relatives à PostgreSQL

  • Prise en charge de PostgreSQL v 10, incluant les nouveautés suivantes :
    • Colonnes IDENTITY.
    • Macaddr8.
    • Chiffrement des mots de passe.
  • Nouveaux paramètres de connexion GUIDEndian=Little|Big.

Améliorations relatives à Firebird

  • Prise en charge de Firebird v 3.0, incluant les nouveautés suivantes :
    • Protocole de connexion locale.
    • Package FB$OUT.
    • Eléments d'information isc_database_info().
    • Fonctionnalité Statistiques dans la sortie gbak.
    • Prise en charge de la longueur d'instruction > 64Ko.
  • Nouveau composant TFDFBOnlineValidate.
  • Nouveaux paramètres de connexion GUIDEndian=Little|Big.

Améliorations relatives à MongoDB

  • Nouveau paramètre de connexion TimeZone=Local|UTC.

Améliorations relatives à InterBase

  • Prise en charge de InterBase v 2017, incluant les nouveautés suivantes :
    • Commande TRUNCATE.
    • Prise en charge de TRUNCATE dans les "Change Views".
    • Temps d'attente des transactions
  • Nouveaux paramètres de connexion GUIDEndian=Little|Big.

Améliorations relatives à SQLite

  • Prise en charge de 3.23.1.
  • Prise en charge améliorée de la plate-forme Linux, incluant les nouveautés suivantes :
    • Prise en charge du chiffrement.
    • Prise en charge des classements

Améliorations relatives à SQL Anywhere

  • Nouvelle propriété TFDPhysASADriverLink.ToolHome.
  • Ajout de la prise en charge de TFDEventAlerter.

Autres modifications relatives à FireDAC

  • Ajout de TFDBatchMoveJSONWriter.
  • Optimisation de TFDBatchMove et de ses composants associés.

Améliorations relatives aux bases de données

  • Nouvelle propriété TClientDataSet.IncludeBlobsInDelta.

Améliorations relatives à DataSnap

  • Nouvelle propriété TDSRestConnection.SecureProtocols.
  • DataSnap REST spécifie explicitement maintenant "Content-Type=application/json".

Améliorations relatives à REST

  • Amélioration de la prise en charge des différents types MIME.
  • Ajout de la propriété TRESTClient.OnNeedClientCert.
  • Ajout de la propriété TRESTClient.OnAuthEvent.
  • Ajout de la propriété TRESTClient.RedirectsWithGET.
  • Ajout de la propriété TRESTClient SecurityProtocols.
  • Remplacement de Indy par THTTPClient.
  • Ajout des options TRESTRequestParameterOption.poFlatArray, poPHPArray, poListArray.
  • Ajout de la méthode TRESTRequestParameter.AddValue.
  • Ajout de la méthode TRESTRequestParameter.SetStream.
  • Ajout de la propriété TRESTRequestParameter.Stream.
  • Ajout de la propriété TRESTRequestParameter.StreamOwner.
  • Ajout de la propriété TRESTRequestParameter.Bytes.
  • Ajout de TRESTRequestParameterList.AddItem.
  • Modification du comportement de TRESTRequestParameterKind.pkGETorPOST.
  • Ajout de la valeur TRESTRequestParameterKind.pkQUERY.
  • Ajout des méthodes TRESTRequestParameterList.AddBody pour remplacer la classe TBodyParams.
  • Ajout du paramètre AOwnsObject: TRESTObjectOwnership pour les méthodes TCustomRESTRequest.TBody.Add.
  • Ajout de l'argument AContentType: TRESTContentType pour TCustomRESTRequest.DoPrepareQueryString.
  • Ajout des arguments booléens AContentType: TRESTContentType, ABodyStreamOwner: pour TCustomRESTRequest.DoPrepareRequestBody.
  • Optimisation de THTTPClient sur la plate-forme Windows.
  • Ajout de TMultipartFormData.AddStream et AddBytes.
  • Ajout des méthodes de surcharge TNetHTTPClient.Put / THTTPClient.Put pour TMultipartFormData, FileName, TStrings.
  • Ajout de la classe TAcceptValueList pour gérer des valeurs prenant en compte les en-têtes HTTP Accept-Xxxx.
  • Ajout de la classe TMimeType pour gérer les types MIME.

Améliorations relatives au Cloud

  • Prise en charge améliorée de l'émulateur de stockage Azure.
  • Mise à jour de la prise en charge AWS S3 pour prendre en compte les régions récemment ajoutées.
  • Ajout de la propriété TAmazonConnectionInfo.Region.
  • Ajout du paramètre "BucketRegion:TAmazonRegion = amzrNotSpecified" pour la plupart des méthodes relatives aux compartiments/objets TAmazonStorageService.
  • Amélioration des performances générales de la prise en charge du Cloud.

RAD Server

Amélioration des performances

RAD Studio 10.3 comprend les améliorations de performances suivantes pour RAD Server :

Nouveaux attributs des points de terminaison pour le mappage basé sur Content-Type et Accept

Pour prendre en charge l'amélioration du mappage de ressources, qui ne dépend pas seulement de l'URL mais aussi des en-têtes de requête HTTP Accept et Content-Type. Cela signifie que vous avez deux méthodes distinctes mappées sur la même URL et le même verbe HTTP, mais qui retournent différents types de données en fonction de la requête.

Mappage de verbe HTTP sur un nom de méthode personnalisé

Dans les versions antérieures de RAD Server, le système générait des mappages personnalisés de verbes HTTP (GET, POST, etc.) sur les noms de méthode. Ce comportement par défaut n'a pas changé, mais vous pouvez également mapper un verbe HTTP sur une méthode avec un nom personnalisé, à l'aide du nouvel attribut EndpointMethod.

Capacité de déléguer le traitement d'une requête à une classe ou à un composant personnalisé(e)

Dans l'API de ressources personnalisée de RAD Server, ajout de la capacité de déléguer le traitement des requêtes aux champs Delphi du module de ressources, qui sont des classes/composants de publication de points de terminaison personnalisés.

Composants d'assistance pour le traitement JSON

RAD Studio 10.3 tire parti de la nouvelle capacité à déléguer le traitement à un composant pour introduire de nouveaux composants qui simplifient le traitement JSON, en particulier lors de l'exécution de requêtes de bases de données. Les composants peuvent être ajoutés à une classe mappée sur une ressource RAD Server (ou un module de données) et les méthodes HTTP peuvent être mappées dessus sans écrire aucun code.

Améliorations supplémentaires de RAD Server

  • Les performances de RAD Server ont été sensiblement améliorées. Le débit des opérations simples a été multiplié par dix (une partie des corrections associées a déjà été livrée dans un correctif pour 10.2.3).

RTL

Dans 10.3, les performances et la compatibilité avec les standards JSON et HTTP de la RTL de Delphi ont été sensiblement améliorées.

Stratégie de croissance des structures de données

Une stratégie de croissance souple est maintenant définie pour étendre certaines structures de données (TStringList, TList, TList <T>, TQueue<T>, TStack<T>) lorsqu'elles sont pleines. Elle remplace l'ancienne stratégie x2 et peut être modifiée. La nouvelle stratégie de croissance est implémentée dans une fonction globale partagée, déclarée dans SysUtils.pas :

function GrowCollection(OldCapacity, NewCount: Integer): Integer;

Par ailleurs, vous pouvez personnaliser l'implémentation en écrivant une nouvelle fonction compatible et en appelant la procédure globale SetGrowCollectionFunc.

Si vous installez une fonction personnalisée de croissance de collection dans un package d'exécution, n'oubliez pas de la définir sur nil en sortie, sinon l'exécution tentera d'appeler la fonction non existante une fois les packages déchargés.

Modifications relatives à TStringBuilder

Plusieurs modifications ont été apportées à la classe pour améliorer ses performances, notamment une stratégie similaire d'extension de la mémoire, la suppression des codes redondants et le nettoyage global de l'implémentation.

L'énumérateur TStringBuilder a été optimisé.

Un paramètre supplémentaire est aussi disponible pour la méthode TStringBuilder.ToString. La signature est ToString (argument booléen UpdateCapacity:). ToString(True) fournit de meilleures performances si aucune modification supplémentaire n'est attendue pour TStringBuilder, car cela réduit la quantité de données copiées.

Améliorations relatives à JSON

Amélioration Amélioration du traitement et de l'analyse JSON à des fins de correction et de performance.

Améliorations relatives aux listes

  • TList et TDictionary ont de nouvelles propriétés publiques pour rendre leurs comparateurs accessibles après l'initialisation (la définition de leurs opérations de comparaison pour le tri).
  • La méthode TryAdd a été ajoutée à TDictionary<TKey,TValue>.
  • ExtractAt(Index: Integer): T a été ajouté à TObjectList<T>.
  • Amélioration des performances de TList<T>.IndexOf
  • Amélioration générale des performances TList<T>, TQueue<T>, TStack<T> pour l'ajout d'éléments aux listes. Un TList<T>.Add standard est environ 30 % plus rapide.
  • Optimisation des énumérateurs de TList, TStrings, TComponent, TCollection, TList<>. Désormais la boucle "for in" vide est 2,5 à 4 fois plus rapide.
  • L'état de l'énumérateur une fois l'itération terminée est clairement défini par RAD Studio dans les types d'énumérateurs de la collection : Lorsque MoveNext renvoie False, l'état de l'énumérateur n'est plus valide. L'énumérateur doit être libéré ou recréé et n'est plus accessible.

Modifications supplémentaires relatives à la RTL

  • TStringHelper.Split produit maintenant les mêmes résultats que la fonction globale SplitString à partir de StrUtils.
  • zlib a été mis à niveau vers 1.2.8 avec des corrections supplémentaires (et est maintenant compilé avec le compilateur C++ de RAD Studio pour 64 bits).
  • PCRE a été mis à niveau vers 8.42 et inclut la prise en charge d'UTF-16 sur Windows (et est maintenant compilé avec le compilateur C++ de RAD Studio).
  • La table Unicode (unité System.Character) prend en charge Unicode v11.0.
  • La méthode TStringHelper.Split a différents comportements possibles en fonction de la nouvelle option TStringSplitOptions.ExcludeLastEmpty.
  • Réorganisation de l'ordre des procédures et des fonctions des unités SysUtils pour améliorer la prise en charge de l'inlining.
  • Les alias Float32 et Float64 ont été ajoutés dans l'unité System.

Envoi de chaînes longues avec le tethering d'app

L'implémentation actuelle des opérations SendString/AsString dans la classe TTetheringAppProfile (utilisée pour le tethering d'app) est limitée à une longueur d'environ 1 400 caractères. RAD Studio 10.3 inclut les modifications et ajouts suivants, autorisant les chaînes longues tout en préservant la compatibilité :

  • Les nouvelles méthodes TTetheringAppProfile SetLongString et SendLongString utilisent un flux au lieu d'une chaîne pour la communication sous-jacente.
  • TResourceValue.AsString peut maintenant retourner une valeur chaîne du flux reçu, si elle est disponible. Sinon, elle retourne la valeur de la chaîne reçue. Cela fonctionne pour une chaîne normale et une chaîne longue.

Il est recommandé d'utiliser TTetheringAppProfile.SendString uniquement si la longueur de chaîne est inférieure à environ 1,3 Ko, sinon TTetheringAppProfile.SendLongString doit être utilisée.

Optimisation de TMemIniFile

RAD Studio 10.3 Rio a optimisé l'implémentation de TMemIniFile. La lecture et la construction d'un TMemIniFile sont 10 à 25 fois plus rapides. La consommation de la mémoire est divisée par deux. D'autres opérations TMemIniFile sont également améliorées. Elles sont 50 à 100 % plus rapides par rapport à l'implémentation précédente.

Par ailleurs, 10.3 inclut la capacité de charger un TMemIniFile à partir d'un flux, avec deux constructeurs supplémentaires surchargés :

  • TMemIniFile.Create(Stream).
  • TMemIniFile.Create(Stream, UseLocale).

Ces paramètres de constructeur restent disponibles dans la classe et sont exposés dans de nouvelles propriétés :

  • propriété Stream
  • propriété UseLocale

Voir aussi