versjon , fri reisa funksjonelt programmeringsspråk , som støtter muligheten for å innebygge kode i applikasjoner skrevet i andre programmeringsspråk. Guile kan brukes som et språk for utvikling av utvidelser for applikasjoner, definisjon av konfigurasjoner eller utvikling av komponenter for å koble sammen ulike primitive som tilbys av applikasjonen. Guile er det offisielle språket for utvikling av utvidelser for GNU-operativsystemet.
Grunnlaget for Guile er en effektiv virtuell maskin som kjører et portabelt instruksjonssett, generert av en spesialdesignet optimaliseringskompilator. Guile sin virtuelle maskin kan lett integreres med kode skrevet i C og C++. I tillegg til språkene Scheme, som har støtte for spesifikasjoner , og , er det i prosjektet Guile utviklet kompilatorer for andre språk, som ECMAScript, Emacs Lisp og Lua (under utvikling). I pakken inngår et bibliotek med moduler som implementerer typiske tjenestefunksjoner, som HTTP-protokollhåndtering, XML-parsing og bruk av objektorienterte programmeringsmetoder.
Et av de viktigste nyvinningene i GNU Guile 3.0 var introduksjonen av JIT-kompilator, i tillegg til de tidligere tilgjengelige tolkeren og kompilatoren til bytekode, som kjøres i en spesialbygd virtuell maskin knyttet til applikasjonen i form av et bibliotek. JIT tillater generering av maskinkode på farten og gir betydelig raskere kjøring av Guile-applikasjoner (tester viser opptil 4x hastighetsforbedring). JIT-kompilatoren støtter drift på arkitekturer som x86-64, i686, ARMv7 og AArch64.
Noen av de andre forbedringene:
- Støtte for den nye spesifikasjonen av språket Scheme og de bibliotekmodulene som er definert i den;
- I Guile sin virtuelle maskin er det implementert støtte for et mer lavnivå bytekode, som muliggjør utvidede optimaliseringer;
- Støtte for å kombinere interne define-definisjoner og uttrykk (f.eks. «(define _ (begin (foo) #f))»);
- Et enhetlig oppsett for implementering av strukturerte datatyper («records»);
- Omstrukturering av primitive unntakshåndtering (throw og catch);
- Definert bindinger for utvidet syntaks «else», «=>», «…» og «_»;
- I http-request, http-get og andre prosesser knyttet til web-klienter, er det nå mulig å laste ned innhold via en kryptert forbindelse ved hjelp av TLS med korrekt sertifikatverifisering.
Kilde: opennet.ru
