GNU Guile 3.0 vio la luz del día

tuvo lugar relizar GNU Astucia 3.0, una implementación libre de un lenguaje de programación funcional Esquema, que admite la capacidad de incrustar código en aplicaciones en otros lenguajes de programación. Guile se puede utilizar como lenguaje para desarrollar extensiones de aplicaciones, definir configuraciones o desarrollar componentes para comunicar las diversas primitivas proporcionadas por una aplicación. Guile es el lenguaje de extensión oficial del sistema operativo GNU.

En el corazón de Guile hay una máquina virtual eficiente que ejecuta un conjunto portátil de instrucciones generadas por un compilador de optimización especial. La máquina virtual Guile se integra fácilmente con el código de aplicación C y C++. Además del lenguaje Scheme, para el cual se implementa soporte de especificación R5RS, R6RS и R7RS, el proyecto Guile también ha desarrollado compiladores para otros lenguajes como ECMAScript, Emacs Lisp y Lua (en desarrollo). El paquete incluye una biblioteca de módulos que implementan funciones de servicio típicas, como trabajar con el protocolo HTTP, analizar XML y utilizar métodos de programación orientados a objetos.

Una innovación clave en GNU Guile 3.0 fue la introducción de un compilador JIT, además del intérprete y compilador ofrecido anteriormente para bytecode, que se ejecuta en una máquina virtual especial que está vinculada a la aplicación en forma de biblioteca. JIT le permite generar código de máquina sobre la marcha y acelera significativamente la ejecución de aplicaciones Guile (las pruebas muestran una aceleración de hasta 4 veces). El compilador JIT es compatible con las arquitecturas x86-64, i686, ARMv7 y AArch64.

Algunas de sus otras mejoras:

  • Compatibilidad con la nueva especificación de lenguaje Scheme R7RS y módulos de biblioteca definidos en él;
  • Guile VM tiene soporte para bytecode de nivel inferior que permite optimizaciones avanzadas;
  • Soporte para combinar definiciones y expresiones internas (por ejemplo, "(define _ (begin (foo) #f))");
  • Una implementación unificada de un tipo de datos estructurados ("registros");
  • Primitivos de manejo de excepciones reelaborados (lanzar y atrapar);
  • Enlaces definidos para la sintaxis extendida "else", "=>", "..." y "_";
  • Se agregó la capacidad de descargar contenido a través de un canal de comunicación encriptado usando TLS con verificación correcta de certificados en http-request, http-get y otros procedimientos relacionados con el cliente web.

Fuente: opennet.ru

Añadir un comentario