Publication du langage de programmation Nim 1.4.0

Une nouvelle version du langage de programmation système Nim est sortie, qui a célébré son premier anniversaire en septembre dernier depuis la sortie de la première version stable. En termes de syntaxe, le langage est similaire à Python, mais en matière de performance, il se rapproche presque de C++. Selon FAQ le langage emprunte beaucoup à (par ordre d'importance) : Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Il fonctionne partout grâce à la possibilité de compilation en C/C++/Objective-C/JS. Il supporte les macros, la POO, génériques, les exceptions, le rechargement à chaud du code et bien plus encore. Licence — MIT.

Les changements les plus significatifs :

  • Un nouveau ramasse-miettes ORC a été ajouté, utilisant un algorithme d'ARC, mais traitant de manière spéciale les références circulaires. Il s'active avec l'option —gc:orc. Pour plus de détails sur les différences entre ARC/ORC il y a un excellent article.

  • Un mode de definitions fonctionnelles strictes a été ajouté, qui inclut une vérification supplémentaire sur la mutabilité des objets. Il s'active via la pragma {.experimental: "strictFuncs".} ou la clé —experimental:strictFuncs.

  • Le mot-clé from peut désormais être utilisé comme un opérateur.

  • Ajout de la pragma .noalias. Elle est associée au mot-clé C restrict, afin d'améliorer l'efficacité que peut apporter ce mot.

  • Des avertissements spécifiques peuvent maintenant être transformés en erreurs via —warningAsError[X]:on|off.

  • Nouvelle commande : nim r main.nim [args…], qui compile et exécute main.nim, et inclut —usenimcache pour que le résultat soit sauvegardé dans $nimcache/main$exeExt, utilisant la même logique que nim c -r pour éviter la recompilation lorsque les sources n'ont pas changé. Exemple :

nim r compiler/nim.nim —help # compilé pour la première fois
echo ‘import os; echo getCurrentCompilerExe()’ | nim r — # cela fonctionne aussi
nim r compiler/nim.nim —fullhelp # sans recompilation
nim r —nimcache:/tmp main # binaire sauvegardé dans /tmp/main

  • Ajout d'un nouvel indice —hint:msgOrigin, qui montre où le compilateur a généré des messages d'erreur/avertissements. Cela aide lorsque l'origine du message n'est pas évidente.

  • Ajout d'un drapeau —backend:js|c|cpp|objc (ou -b:js, etc.) pour changer de backend.

  • Ajout d'un drapeau —usenimcache pour la sortie des binaires dans nimcache.

  • Suppression des clés : —oldNewlines, —laxStrings, —oldast, —oldgensym

  • L'outil nimsuggest montre désormais non seulement la déclaration préliminaire, mais aussi l'emplacement de l'implémentation selon la demande def.

En outre, de nombreux changements ont été apportés à la bibliothèque standard et de nombreux bugs ont été corrigés.

Source : linux.org.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster