GNU Guile 3.0 est désormais disponible

A eu lieu la sortie GNU Guile 3.0, une réalisation libre d'un langage de programmation fonctionnel Scheme, prenant en charge l'intégration de code dans des applications écrites dans d'autres langages de programmation. Guile peut être utilisé comme langage pour le développement d'extensions d'applications, la définition de configurations ou le développement de composants pour relier différents primitifs fournis par l'application. Guile est le langage officiel de développement d'extensions pour le système d'exploitation GNU.

La base de Guile repose sur une machine virtuelle efficace, qui exécute un ensemble d'instructions portables, générées par un compilateur optimisateur spécialisé. La machine virtuelle Guile s'intègre facilement avec le code des applications écrites en C et C++. En plus du langage Scheme, pour lequel le support des spécifications a été mis en œuvre R5RS, R6RS et R7RS, dans le cadre du projet Guile, des compilateurs ont été développés pour d'autres langages, tels que ECMAScript, Emacs Lisp et Lua (en cours de développement). Le package comprend une bibliothèque de modules, qui implémente des fonctions de service standard, telles que l'utilisation du protocole HTTP, le parsing XML et l'application de méthodes de programmation orientée objet.

La principale innovation de GNU Guile 3.0 est l'introduction d'un compilateur JIT, en plus de l'interpréteur et du compilateur vers le bytecode précédemment proposés, exécuté dans une machine virtuelle spéciale, intégrée à l'application sous forme de bibliothèque. Le JIT permet de générer du code machine à la volée et accelère considérablement l'exécution des applications Guile (des tests montrent une augmentation de performance allant jusqu'à 4 fois). Le compilateur JIT prend en charge les architectures x86-64, i686, ARMv7 et AArch64.

Quelques autres améliorations :

  • Support de la nouvelle spécification du langage Scheme R7RS et des modules de bibliothèque définis dans celle-ci ;
  • La machine virtuelle Guile prend en charge un bytecode de niveau inférieur, permettant d'appliquer des optimisations avancées ;
  • Support de la combinaison de définitions internes define et d'expressions (par exemple, «(define _ (begin (foo) #f))»);
  • Proposition d'une mise en œuvre unifiée du type de données structuré («records») ;
  • Révision des primitives de gestion des exceptions (throw et catch) ;
  • Définition de liaisons pour la syntaxe avancée «else», «=>», «…» et «_» ;
  • Dans les procédures http-request, http-get et d'autres liées aux clients web, il est désormais possible de charger du contenu via un canal de communication chiffré en utilisant TLS avec une vérification correcte des certificats.

Source : opennet.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