Nouvelle version du langage de programmation Nim 0.20

A eu lieu version du langage de programmation système Nim 0.20.0. Le langage utilise le typage statique et a été créé en pensant à Pascal, C++, Python et Lisp. Le code source de Nim est compilé dans une représentation C, C++ ou JavaScript. Par la suite, le code C/C++ résultant est compilé dans un fichier exécutable à l'aide de n'importe quel compilateur disponible (clang, gcc, icc, Visual C++), ce qui permet d'atteindre des performances proches du C, si l'on ne prend pas en compte les coûts d'exécution. le éboueur. Semblable à Python, Nim utilise l'indentation comme délimiteurs de blocs. Les outils de métaprogrammation et les capacités de création de langages spécifiques à un domaine (DSL) sont pris en charge. Code de projet fourni sous licence MIT.

La version Nim 0.20 peut être considérée comme une candidate pour la première version stable 1.0, intégrant plusieurs modifications révolutionnaires en matière d'interopérabilité nécessaires pour former la première branche stable qui validera l'état du langage. La version 1.0 est présentée comme une version de support stable et à long terme qui garantira le maintien de la compatibilité ascendante dans la partie stabilisée du langage. Par ailleurs, le compilateur disposera également d'un mode expérimental dans lequel de nouvelles fonctionnalités susceptibles de rompre la compatibilité ascendante seront développées.

Parmi les changements proposés dans Nim 0.20 figurent :

  • "Not" est désormais toujours un opérateur unaire, c'est-à-dire les expressions telles que « assert(not a) » ne sont désormais plus autorisées et seul « assert not a » est autorisé ;
  • Activation de contrôles stricts pour la conversion des nombres entiers et des nombres réels au stade de la compilation, c'est-à-dire l'expression "const b = uint16(-1)" entraînera désormais une erreur, puisque -1 ne peut pas être converti en un type entier non signé ;
  • Le déballage des tuples pour les constantes et les variables de boucle est fourni.
    Par exemple, vous pouvez désormais utiliser des affectations telles que « const (d, e) = (7, « Eight ») » et « for (x, y) in f » ;

  • Initialisation par défaut fournie des hachages et des tables. Par exemple, après avoir déclaré « var s: HashSet[int] », vous pouvez immédiatement exécuter « s.incl(5) », ce qui entraînait auparavant une erreur ;
  • Informations d'erreur améliorées pour les problèmes liés à l'opérateur « case » et à l'index de tableau hors limites ;
  • La modification de la longueur de la table pendant l'itération est interdite.

Source: opennet.ru

Ajouter un commentaire