Premières informations concernant Delphi 10.3
Deux annonces de Marco Cantù

Le , par gvasseur58, Responsable Delphi
Contrairement aux habitudes, Embarcadero a décidé de faire jouer le teasing pour le lancement de la nouvelle version de Delphi 10.3 prévue d’ici la fin de l’année et c’est Marco Cantù qui a été commis à cet exercice à travers deux publications récentes sur son blog. L’exercice n’est cependant pas toujours facile quand les décisions peuvent surprendre...

Gestion de la mémoire ARC

Le 26 octobre dernier, Marco Cantù abordait les problèmes relatifs au modèle ARC pour la gestion mémoire. Ce modèle qui paraissait idéal sur le papier a produit des effets indésirables, spécialement pour les projets complexes fortement ralentis, à tel point qu’il a paru nécessaire de faire un retour en arrière d’importance en l’abandonnant tout simplement ! En particulier, le pas pour intégrer ARC au développement sous Windows a été considéré comme plus important que celui du passage à l’Unicode qui avait traumatisé plus d’un développeur à l’époque et sans présenter d’avantages décisifs sur d’autres techniques éprouvées. Après une étude des retours des utilisateurs et une âpre discussion interne, il a paru préférable de s’en tenir au principe fondateur du Delphi d’aujourd’hui : « une seul source pour des plates-formes multiples ». L’avenir de Delphi se fera donc sans ARC !

Le premier compilateur touché sera Linux 64 bits, mais les autres devraient suivre à plus ou moins long terme : celui annoncé pour macOS 64 bits ignorera ce modèle, ainsi que ceux pour les plates-formes mobiles qui l’abandonneront dès la prochaine version majeure.

S’il s’agit toujours de conserver un mécanisme de décompte par référence, il devrait prendre appui sur celui déjà utilisé pour les interfaces et les chaînes de caractères. Des améliorations du langage devraient en effet renforcer les outils déjà à la disposition du programmeur : après les références d’interfaces weak et unsafe, Delphi 10.3 introduira les enregistrements gérés, première étape vers « une gestion de la durée de vie (et de la gestion de la mémoire) des objets locaux à vie courte à travers des références de pile », une possibilité encore à l’état de projet.

Variables inline

La seconde annonce a un contenu nettement moins polémique et devrait répondre à une attente réitérée ces dernières années par de nombreux développeurs : Delphi intégrera enfin les variables inline. Marco Cantù fournit quelques exemples de cette nouvelle possibilité dont la suivante :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
 
procedure Test1; // multiple inline declarations (symbols declared when used)
begin
  var I: Integer := 22;
  var J: Integer := 22 + I;
  var K: Integer := I + J;
  ShowMessage (K.ToString);
end;

Ces déclarations pourront de même intervenir dans des boucles for...to ou for...in.

Ce qui pourrait n’être qu’une modification mineure cache des changements non négligeables. Ces variables locales auront ainsi une portée qui ne dépassera pas le bloc dans lequel elles figureront. De plus, leur type pourra être inféré suivant le code utilisé : dans de nombreux cas, il deviendra par conséquent inutile de préciser le type de la variable, ce qui constituera une révolution en Pascal ! Marco Cantù fait remarquer que cette nouvelle écriture sera aussi très utile pour des écritures complexes mettant en jeu des instances de types génériques. La même amélioration est annoncée pour les constantes typées ou non.

Les deux annonces devraient fournir la matière à des discussions pour tous ceux qui utilisent Delphi : alors, n'hésitez pas à donner votre avis ou vos impressions sur ces premières annonces !

Source : blog de Marco Cantù

Que pensez-vous des modifications annoncées ?
l'abandon d'ARC vous paraît-elle une bonne chose ?
quels avantages et inconvénients voyez-vous à l'introduction des variables inline ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de skywaukers skywaukers - Membre chevronné https://www.developpez.com
le 30/10/2018 à 23:23
bonsoir,

la deuxième annonce me fait un peu plus réagir. C'est une évolution dictée par les tendances actuelles, je le comprend bien, mais cela bouscule un peu la philosophie du langage. Pas tellement de pouvoir déclarer une variable n'importe où, mais surtout le fait de ne pas être obligé de préciser le type de la variable. Cela peut enlever de la lisibilité au code je pense, et surtout il n'y a plus qu'un tout petit pas pour permettre de redéclarer une variable de même nom avec un type différent dans la même portée, chose qui m'écorche toujours les yeux dans les langages qui le permettent.
Mais c'est très encourageant de voir que le langage évolue.

@++
Dany
Avatar de SergioMaster SergioMaster - Rédacteur/Modérateur https://www.developpez.com
le 31/10/2018 à 7:39
Bonjour,

C'est une sorte de teasing que je ne connaissais pas, je ne connaissais que le sens "se moquer gentiment" qui "attise".
Du coup Marco attise bien ou plutôt allèche en dévoilant quelques nouveautés histoire de faire saliver ou pour désamorcer des polémiques, l'histoire nous le dira.

Gestion de la mémoire ARC
Là, ça vole un peu au-dessus de mon reste de cheveux. Pour ce que j'en savais c'était assez casse-cou s'en séparer et garder en robustesse moi ça me va.

Variables inline
Comme skywaukers, cela m'écorche un peu les yeux, d'un autre côté j'en avais un peu marre de déclarer les fameux i des boucles, le faire à l'intérieur du for
for var i:integer :=0 to 10 doet que la variable n'existe plus après, oui, ça peut avoir de l'intérêt. Je pense qu'en vieux programmeur j'en resterai aux bons vieux principes

Citation Envoyé par skywaukers
le fait de ne pas être obligé de préciser le type de la variable.
C'est quand même dans des cas particulier, comme par exemple la boucle for, qu'il peut y avoir "simplification"
for var i :=0 to 10 do et pour l'instant je ne vois dans le blog que pour le type integer.
mais en ce qui concerne les constantes ne pouvait-on pas déjà écrire ?
Code : Sélectionner tout
1
2
const aString = 'Hello World';
const i=1;
le type étant reconnu. Ce ne serait donc qu'une extension qui fait tiquer certes, je préférerai que le type soit obligatoire pour éviter toutes surprises
Avatar de pprem pprem - Membre actif https://www.developpez.com
le 31/10/2018 à 11:13
Et si j'osais, je dirais que ce n'est qu'un début... la suite des annonces va faire frémir et ça tombe bien puisque c'est Halloween.

Outre le côté bien pratique des variables inline, il est à noter que tout fichier Pascal utilisant cette forme de déclaration sera incompatible avec les versions antérieures de Delphi, Lazarus et les autres logiciels qui permettent de programmer en Pascal. Alors restons prudents et utilisons ces ajouts à bon escient.
Avatar de gbegreg gbegreg - Membre émérite https://www.developpez.com
le 31/10/2018 à 13:42
Bonjour,

J'ai hâte d'être au 15 novembre ! Les variables inline sont une bonne chose mais comme le dit Patrick, attention aux anciennes versions de Delphi et à Lazarus si on souhaite proposer du code à la communauté.

J'utilise très souvent le raccourci clavier CTRL+SHIT+V qui permet de générer automatiquement la déclaration de la variable. Surtout lorsque j'écris une boucle for : en saisissant "for" suivi d'un espace, l'IDE génère automatiquement :
Code : Sélectionner tout
for I := Low to High do
Si l'itérateur I n'est pas déjà déclaré il est souligné par de petites vagues rouges. En mettant le curseur juste devant cette variable I et en faisant CTRL+SHIT+V, une boite de dialogue apparaît proposant de déclarer la variable I de type Integer. Il suffit de valider cette boite de dialogue (touche ENTREE) et la variable est déclarée comme il faut. Je trouve cela très pratique au moins dans le cas de la déclaration de l'itérateur dans un for. En effet, si l'IDE ne parvient pas à déterminer seul le type de la variable, il faut sélectionner le type dans la liste déroulante de la boite de dialogue : il faut donc "attraper" la souris et faire des clics (c'est un poil plus long...).

Ça fonctionne bien également si on saisit :
Code : Sélectionner tout
maVariable := '';
L'IDE va proposer automatiquement le type String pour maVariable, il suffit donc là encore de valider directement la boite de dialogue avec la touche ENTREE et c'est bon : maVariable est déclarée.
Avatar de SergioMaster SergioMaster - Rédacteur/Modérateur https://www.developpez.com
le 01/11/2018 à 11:07
Bonjour,

il n'y a pas que Marco Cantù qui dévoile des choses un peu avant l'heure. David Millington nous dévoile ici les nouveautés de l'EDI histoire de nous faire saliver davantage ?
Avatar de ShaiLeTroll ShaiLeTroll - Expert éminent sénior https://www.developpez.com
le 01/11/2018 à 11:26
Variable Inline + Générique ... c'est possible ?
Non car on va peut-être avoir du RAII avec la portée de bloc ... ça c'est le développeur C++Builder en moi qui parle

le for var i: integer :=0 ça c'est top, le compilateur de toute façon nous dit que i est foireux à la sortie de boucle, là cela va dans la logique de la boucle for optimisée
Avatar de pprem pprem - Membre actif https://www.developpez.com
le 01/11/2018 à 13:47
Citation Envoyé par gbegreg Voir le message
J'utilise très souvent le raccourci clavier CTRL+SHIT+V qui permet de générer automatiquement la déclaration de la variable.
Dans la série "on en apprend tous les jours" même après des décades d'utilisation, j'ignorais l'existence du SHIFT + CTRL + V, m'en vais l'ajouter à l'article en cours sur les raccourcis clavier utiles et vérifier ce qu'il fait sur la version que vous découvrirez le 15/11 si vous venez nous rejoindre à Paris pour la journée.

Citation Envoyé par SergioMaster
il n'y a pas que Marco Cantù qui dévoile des choses un peu avant l'heure. David Millington nous dévoile ici les nouveautés de l'EDI histoire de nous faire saliver davantage ?
En fait c'est chacun son tour, en fonction des attributions de chacun. Puisque David s'y est collé, vais pouvoir ajouter mes remarques. Top.

Citation Envoyé par ShaiLeTroll
Variable Inline + Générique ... c'est possible ?
hé hé, je réponds ou je ne réponds pas à cette question ?
Avatar de Anselme45 Anselme45 - Membre éprouvé https://www.developpez.com
le 01/11/2018 à 14:28
Perso, je vois plus d'inconvénients que d'intérêts aux variables inline:

1. Perte de lisibilité du code

2. Incompatibilité du code avec les vieilles version Delphi et les EDI concurrents.

3. Modification du langage Pascal qui n'est pas l'espace gardé de Embarcadero

PS: Je ne peux m'empêcher de voir tout l'intérêt que peut trouver la stratégie commerciale de l'éditeur: Cela va dans le sens de tuer la concurrence et d'obliger à passer à la caisse pour acheter à longueur d'année la dernière version à la mode de l'EDI
Avatar de ShaiLeTroll ShaiLeTroll - Expert éminent sénior https://www.developpez.com
le 01/11/2018 à 15:04
Citation Envoyé par pprem Voir le message
Citation Envoyé par ShaiLeTroll Voir le message
Variable Inline + Générique ... c'est possible ?
Non car on va peut-être avoir du RAII avec la portée de bloc ... ça c'est le développeur C++Builder en moi qui parle
hé hé, je réponds ou je ne réponds pas à cette question ?
Citation Envoyé par pprem Voir le message
Et si j'osais, je dirais que ce n'est qu'un début... la suite des annonces va faire frémir et ça tombe bien puisque c'est Halloween.
Mince, j'ai grillé qu'il allait nous sortir au passage une petite bibliothèque type Boost pour profiter à fond de la portée de bloc et un SmartPtr<TObject>
Ou alors encore autre chose que je ne connais pas et qui va me surprendre
Avatar de SergioMaster SergioMaster - Rédacteur/Modérateur https://www.developpez.com
le 05/11/2018 à 11:05
Autres petites "fuites" (enfin pas tant que ça puisque les brésiliens ont déjà eu leur présentation )
http://delphi.org/2018/10/unexpected...er-directives/
http://delphi.org/2018/11/android-z-...-and-10-3-rio/
Responsables bénévoles de la rubrique Delphi : Gilles Vasseur - Alcatîz -