Lanzouse GNU Guile 3.0

tivo lugar liberación GNU Guile 3.0, unha implementación gratuíta dunha linguaxe de programación funcional Esquema, que admite a capacidade de incorporar código en aplicacións noutras linguaxes de programación. Guile pódese usar como linguaxe para desenvolver extensións de aplicacións, definir a configuración ou desenvolver compoñentes para conectar as distintas primitivas proporcionadas pola aplicación. Guile é a linguaxe oficial de desenvolvemento de extensións para o sistema operativo GNU.

No corazón de Guile hai unha máquina virtual eficiente que executa un conxunto portátil de instrucións xeradas por un compilador de optimización especial. A máquina virtual Guile intégrase facilmente co código da aplicación en C e C++. Ademais da linguaxe Scheme, para o que se implementa soporte de especificación R5RS, R6RS и R7RS, o proxecto Guile desenvolveu compiladores para outras linguaxes, como ECMAScript, Emacs Lisp e Lua (en desenvolvemento). O paquete inclúe unha biblioteca de módulos que implementan funcións de servizo estándar, como traballar co protocolo HTTP, análise XML e o uso de métodos de programación orientada a obxectos.

Unha innovación fundamental en GNU Guile 3.0 foi a introdución dun compilador JIT, ademais do intérprete e compilador de bytecode ofrecidos anteriormente, executado nunha máquina virtual especial vinculada á aplicación en forma de biblioteca. JIT permítelle xerar código de máquina sobre a marcha e acelera significativamente a execución das aplicacións Guile (as probas mostran unha aceleración de ata 4 veces). O compilador JIT admite arquitecturas x86-64, i686, ARMv7 e AArch64.

Algunhas outras melloras:

  • Soporte para a nova especificación da linguaxe Scheme R7RS e módulos da biblioteca definidos nela;
  • A máquina virtual Guile ofrece soporte para código de bytes de nivel inferior, permitindo optimizacións avanzadas;
  • Soporte para combinar definicións e expresións internas (por exemplo, "(define _ (begin (foo) #f))");
  • Proponse unha implementación unificada dun tipo de datos estruturados (“rexistros”);
  • Reelaboráronse as primitivas de manexo de excepcións (throw and catch);
  • Ligazóns definidas para a sintaxe estendida "else", "=>", "..." e "_";
  • En http-request, http-get e outros procedementos relacionados co cliente web, engadiuse a posibilidade de descargar contido a través dunha canle de comunicación cifrada mediante TLS coa verificación correcta do certificado.

Fonte: opennet.ru

Engadir un comentario