Compilateur de langage D version 2.100

Les développeurs du langage de programmation D ont présenté la sortie du principal compilateur de référence DMD 2.100.0, qui prend en charge les systèmes GNU/Linux, Windows, macOS et FreeBSD. Le code du compilateur est distribué sous la licence gratuite BSL (Boost Software License).

D est typé statiquement, a une syntaxe similaire à celle du C/C++ et offre les performances des langages compilés, tout en empruntant certains des avantages en termes d'efficacité de développement et de sécurité des langages dynamiques. Par exemple, il prend en charge les tableaux associatifs, l'inférence de type, la gestion automatique de la mémoire, la programmation parallèle, un garbage collector facultatif, un système de modèles, des composants de métaprogrammation, la possibilité d'utiliser des bibliothèques C et certaines bibliothèques C++ et Objective-C.

Parmi les changements de la nouvelle version :

  • L'ancien style de surcharge d'opérateurs utilisé dans la branche D1 a été abandonné. Remplace opNeg, opAdd_r, opAddAssign, etc. sont venus opUnary, opBinary, opBinaryRight et opOpAssign. L'ancien style de surcharge d'opérateurs est obsolète en 2019 et générera une erreur à partir de la version 2.100.
  • Le mot-clé delete est obsolète depuis 2018. Au lieu de supprimer, vous devez utiliser la fonction destroy ou core.memory.__delete.
  • Un nouvel attribut @mustuse a été implémenté et peut être appliqué aux types struct et union comme méthode alternative de gestion des erreurs lorsque le code ne peut pas gérer les exceptions (par exemple, dans les blocs @nogc). Si une expression marquée avec l'attribut @mustuse n'est pas utilisée dans le code, le compilateur générera une erreur.
  • Pour les tableaux statiques, l'utilisation de la propriété ".tupleof" est autorisée pour obtenir la séquence de valeurs (lvalue) de chaque élément du tableau. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // analogique foo(1, 2, 3); flotteur[3] fa; fa.tupleof = ia.tupleof; // une affectation simple fa = ia entraîne une erreur assert(fa == [1F, 2F, 3F]);

Source: opennet.ru

Ajouter un commentaire