Publicouse a versión de GNU Guile 3.0.10, unha implementación gratuíta da linguaxe de programación funcional Scheme, que admite a posibilidade 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.
A astucia baséase en máquina virtual, que executa un conxunto de instrucións portátil xerado por un compilador de optimización dedicado. A máquina virtual Guile intégrase facilmente co código das aplicacións C e C++. Ademais de Scheme, para o que se implementa compatibilidade coas especificacións R5RS, R6RS e 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 comúns, como o traballo co protocolo HTTP, a análise XML e o uso de métodos de programación orientada a obxectos.
Entre os cambios na nova versión:
- Implementouse unha interface experimental para usar backends de terceiros. Os desenvolvedores teñen a oportunidade de usar o frontend existente, que converte o código fonte en representación interna, e o optimizador Guile xunto con outros backends que realizan a xeración de código.
- Introduciuse un backend externo para xerar código intermedio de WebAssembly que se pode executar no navegador. No futuro, é posible que WebAssembly se inclúa entre os principais obxectivos de compilación compatibles en Guile.
- Permítese o uso de "define" no contexto das expresións "when", "unless", "cond", "case", "and-let*" e "with-fluids".
- Engadido soporte para o mecanismo de portos personalizados, descrito no dialecto da linguaxe Scheme R6RS, que permite conectar controladores para a transformación de datos (por exemplo, compresión/descompresión ou cambio de codificación de caracteres) procesados en funcións como
ler, escribir e mostrar. Guile tamén ofrece un módulo "(ice-9 soft-ports)" que proporciona unha interface "soft port", que se sitúa como un análogo máis sinxelo de "ports personalizados". - Engadiuse soporte para a sintaxe de wisp simplificada, que lle permite escribir código máis lexible, por exemplo:
definir: factorial n
se: cero? n
. 1
* n : factorial (- n 1)
visualización: factorial 5
nova liñaen vez de
(definir (factorial n)
(se (cero? n)
1
(*n(factorial(-n1)))))(visualización (factorial 5))
(nova liña) - O compilador implementou un novo aviso que se emite cando se importan ao código módulos cuxas funcións non se utilizan.
- Engadiuse unha nova anotación "quizais non utilizado" que suprime os avisos sobre procedementos non utilizados.
- A saída do rastrexo da pila de chamadas agora está recortada en 500 caracteres en lugar de 80 (pódese cambiar mediante o ancho de cadro predeterminado).
- Engadiuse o parámetro "#:copy-on-write" ao procedemento "copiar-ficheiro", o que permite que o mecanismo de copia-on-write se use nos sistemas de ficheiros que o admitan.
- Engadida optimización para garantir a expansión en liña das chamadas de procedemento con argumentos de palabras clave.
Fonte: opennet.ru
