A liberazione di GNU Guile 3.0.10 hè stata publicata, una implementazione libera di u linguaghju di prugrammazione funzionale Scheme, chì sustene a capacità di incrustà codice in applicazioni in altre lingue di prugrammazione. Guile pò esse usatu cum'è una lingua per sviluppà estensioni di l'applicazione, definisce a cunfigurazione, o sviluppà cumpunenti per cunnette e diverse primitive furnite da l'applicazione. Guile hè a lingua ufficiale di sviluppu di l'estensione per u sistema operatore GNU.
A guilda hè basata annantu à macchina virtuale, chì esegue un inseme d'istruzzioni purtabile generatu da un compilatore d'ottimisazione dedicatu. A macchina virtuale Guile s'integra facilmente cù u codice di l'applicazione C è C++. In più di Scheme, per u quale hè implementatu u supportu per e specificazioni R5RS, R6RS è R7RS, u prughjettu Guile hà sviluppatu compilatori per altri linguaggi, cum'è ECMAScript, Emacs Lisp è Lua (in sviluppu). U pacchettu include una biblioteca di moduli chì implementanu funzioni di serviziu cumuni, cum'è u travagliu cù u protocolu HTTP, l'analisi XML è l'usu di metudi di prugrammazione orientati à l'ughjettu.
Trà i cambiamenti in a nova versione:
- Una interfaccia sperimentale per l'usu di backend di terzu hè stata implementata. I sviluppatori sò datu l'uppurtunità di utilizà u frontend esistente, chì cunverte u codice fonte in rapprisintazioni interna, è l'ottimisatore Guile cù altri backends chì realizanu a generazione di codice.
- Introduce un backend esternu per generà u codice intermediu WebAssembly chì pò esse eseguitu in u navigatore. In u futuru, hè pussibule chì WebAssembly serà inclusu trà i principali obiettivi di compilazione supportati in Guile.
- L'usu di "define" in u cuntestu di "quandu", "unless", "cond", "case", "and-let*" è espressioni "with-fluids" hè permessu.
- Aghjunghje supportu per u mecanismu di porti persunalizati, deskrittu in u dialettu di lingua Scheme R6RS, chì permette di cunnette i gestori per a trasfurmazioni di dati (per esempiu, compressione / decompressione o mudificazione di codificazione di caratteri) processati in funzioni cum'è
leghje, scrive è vede. Guile offre ancu un modulu "(ice-9 soft-ports)", chì furnisce una interfaccia "soft port", chì hè posizionata cum'è un analogu più simplice di "ports custom". - Aghjunghje un supportu per a sintassi di wisp simplificata, chì vi permette di scrive un codice più leggibile, per esempiu:
definisce : fattoriale n
si : zero ? n
. 1
* n : fattoriale (- n 1)
display: fattoriale 5
nova lineainvece di
(definisce (n fattore)
(se (zeru? n)
1
(* n (fattoriale (- n 1)))))(visualizza (fattoriale 5))
(nova linea) - U compilatore hà implementatu un novu avvisu chì hè emessu quandu i moduli chì e so funzioni ùn sò micca utilizati sò impurtati in u codice.
- Aggiunta una nova annotazione "forse inutilizata" chì supprime l'avvirtimenti nantu à e prucedure inutilizate.
- L'output di traccia di stack di chjama hè avà tagliatu à 500 caratteri invece di 80 (pò esse cambiatu cù a larghezza di frame predefinita).
- U paràmetru "#:copy-on-write" hè statu aghjuntu à a prucedura "copy-file", chì permette u mecanismu di copia-on-scrittura per esse utilizatu in i sistemi di schedari chì u supportanu.
- Ottimisazione aghjunta per assicurà l'espansione in linea di e chjama di prucedura cù argumenti di keyword.
Source: opennet.ru
