Derniers compilateurs D

L'équipe de développement LDC a fermé l' année dernière avec la version 1.19.0 du compilateur D utilisant LLVM , et l'équipe principale a commencé la nouvelle année avec la version 2.090.0 du compilateur de référence DMD . Et si vous ne l'avez pas entendu, il n'y a pas si longtemps, il y avait des nouvelles importantes concernant le compilateur D basé sur GCC, GDC . Maquillez!

LDC 1.19.0


Cette version contient une mise à jour du compilateur LDC vers la version D du frontend 2.089.1, qui était la version actuelle au moment de la publication, immédiatement après le Noël catholique. Les assemblys assemblés sont basés sur LLVM 9.01 .

Parmi les points forts de cette version, il y a une certaine sympathie pour Android. La bibliothèque DRuntime / Phobos prête à l'emploi est désormais disponible pour toutes les cibles Android. Cette version peut être utilisée conjointement avec Android Project D d' Adam Ruppe , une compilation de programmes d'assistance et d'interfaces, maintenant en version bêta presque terminée , pour le développement sur Android D avec LDC.

Les utilisateurs de Windows constateront que les bibliothèques de liens basées sur MinGW ont été mises à jour. Maintenant, ils sont dérivés des fichiers .def du package MinGW-w64 7.0.0 . Ces bibliothèques vous permettent d'utiliser les bibliothèques système Windows sans avoir à installer le SDK Windows.

DMD 2.090.0


La dernière version de DMD a été annoncée le 7 janvier . Elle est sortie avec 10 changements majeurs et 71 bugs fermés, aimablement fournis par 48 co-auteurs .

Avec cette version, plus est désormais possible avec des paramètres paresseux. D a longtemps pris en charge les options paresseuses :
L'argument du paramètre paresseux n'est évalué que lorsque la fonction est appelée. L'argument n'est traité que si / lorsque le paramètre est évalué à l'intérieur de la fonction.
Par conséquent, l'argument paresseux peut être exécuté 0 ou plusieurs fois.
Sous le capot, ils sont mis en œuvre en tant que délégués. Vous pouvez maintenant accéder au délégué de base en prenant l'adresse du paramètre, qui était auparavant interdite.

import std.stdio; void chillax(lazy int x) { auto dg = &x; assert(dg() == 10); writeln(x); } void main() { chillax(2 * 5); } 

Cette version rend également obsolète l' idiome D utilisé par ceux qui doivent faire la distinction entre la finalisation (destruction non déterministe d'objets, généralement initiée par le garbage collector) et la destruction normale (destruction déterministe d'objets) de l'intérieur d'un destructeur de classe ou de structure.

Dans l'état actuel du GC, toute opération du GC pendant la finalisation est interdite. Cependant, D ne fournit pas de finaliseurs et destructeurs séparés. Il n'y a que cela , ce qu'on appelle un destructeur, malgré le fait qu'il joue les deux rôles. Cela crée parfois des difficultés lors de l'implémentation de destructeurs pour les types conçus pour les allocateurs GC et non GC. Tout appel au GC pendant le nettoyage peut provoquer une erreur InvalidMemoryOperationError. Cela implique la nécessité de la solution de contournement susmentionnée.

Vous pouvez maintenant appeler la fonction GC statique, core.memory.GC.inFinalizer, pour obtenir votre état dans le destructeur. Il renvoie true si le thread en cours est en cours de finalisation, auquel cas vous ne souhaitez effectuer aucune action impliquant des opérations avec le GC. (Je m'attendais à quelque chose comme ça avant d'écrire le prochain article de ma série GC ).

Gdc


Grâce au travail acharné de Ian Bucklau, Johannes Pfau et de tous les bénévoles qui ont soutenu et contribué au fil des ans, le GDC a été accepté dans GCC 9 à la fin de 2018 et est devenu disponible dans le cadre du kit GCC 9.1 publié en mai dernier. GCC 9.2 est sorti en août dernier. Cette version de GDC implémente la version 2.076 du frontal D. Vous pouvez le construire vous - même ou l'installer au même endroit où vous obtenez habituellement GCC 9.x.

Du traducteur


Ce numéro du blog a presque complètement bloqué le blocage de l'article à venir sur la programmation fiable, y compris D, eh bien, à l'exception des critiques et de la situation avec l'IDE, il s'est donc avéré extrêmement réussi.

Source: https://habr.com/ru/post/fr483440/


All Articles