GNU Guile 3.0 est sorti

A eu lieu libération GNU Guile 3.0, une implémentation gratuite d'un langage de programmation fonctionnel Schème, qui prend en charge la possibilité d'intégrer du code dans des applications dans d'autres langages de programmation. Guile peut être utilisé comme langage pour développer des extensions d'application, définir une configuration ou développer des composants pour connecter les différentes primitives fournies par l'application. Guile est le langage officiel de développement d'extensions pour le système d'exploitation GNU.

Au cœur de Guile se trouve une machine virtuelle efficace qui exécute un ensemble portable d'instructions générées par un compilateur d'optimisation spécial. La machine virtuelle Guile s'intègre facilement au code d'application en C et C++. En plus du langage Scheme, pour lequel le support des spécifications est implémenté R5RS, R6RS и R7RS, le projet Guile a développé des compilateurs pour d'autres langages, comme ECMAScript, Emacs Lisp et Lua (en cours de développement). Le package comprend une bibliothèque de modules qui implémentent des fonctions de service standard, telles que l'utilisation du protocole HTTP, l'analyse XML et l'utilisation de méthodes de programmation orientées objet.

Une innovation clé de GNU Guile 3.0 a été l'introduction d'un compilateur JIT, en plus de l'interpréteur et du compilateur de bytecode précédemment proposés, exécuté dans une machine virtuelle spéciale liée à l'application sous la forme d'une bibliothèque. JIT vous permet de générer du code machine à la volée et accélère considérablement l'exécution des applications Guile (les tests montrent une accélération jusqu'à 4 fois). Le compilateur JIT prend en charge les architectures x86-64, i686, ARMv7 et AArch64.

Quelques autres améliorations :

  • Prise en charge de la nouvelle spécification du langage Scheme R7RS et les modules de bibliothèque qui y sont définis ;
  • La machine virtuelle Guile prend en charge le bytecode de niveau inférieur, permettant des optimisations avancées ;
  • Prise en charge de la combinaison de définitions et d'expressions internes (par exemple, "(define _ (begin (foo) #f))");
  • Une implémentation unifiée d'un type de données structurées (« enregistrements ») est proposée ;
  • Les primitives de gestion des exceptions (lancer et attraper) ont été retravaillées ;
  • Liaisons définies pour la syntaxe étendue "else", "=>", "..." et "_" ;
  • Dans http-request, http-get et d'autres procédures liées au client Web, la possibilité de télécharger du contenu via un canal de communication crypté à l'aide de TLS avec une vérification correcte du certificat a été ajoutée.

Source: opennet.ru

Ajouter un commentaire