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 ?