Dezvoltat de | Proiectul GNU |
---|---|
Prima versiune | 1997 |
Ultima versiune |
2.2.7 (7 martie 2020) 3.0.5 (7 ianuarie 2021) |
Depozit | git.savannah.gnu.org/cgit/guile.git |
Scris in | VS |
Interfață | Nursice |
Sistem de operare | GNU / Linux , BSD ( d ) și Microsoft Windows |
Mediu inconjurator | GNU , GNU / Linux |
Tip | Limbaj de programare |
Licență | GNU LGPL |
Documentație | www.gnu.org/software/guile/manual |
Site-ul web | (ro) Site oficial |
Guile ( GNU Ubiquitous Intelligent Language for Extensions ) este un interpret al limbajului de programare Scheme dezvoltat ca parte a proiectului GNU pentru a servi ca limbaj de extensie oficial pentru sistemul de operare GNU .
În 1994, Richard Stallman și-a expus ideile pentru proiectarea unui limbaj de extensie pentru proiectul GNU. Una dintre ideile principale a fost că utilizatorii ar trebui să aibă posibilitatea de a alege limbajul de programare. Limba principală luată în considerare a fost o variantă a Schemei, dar alte limbi ar putea fi sprijinite prin intermediul traducătorilor.
Tom Lord a început imediat să lucreze la proiect. În 1995, au fost puse la dispoziție două prime versiuni de lucru. Compania Cygnus Support a adăugat multe funcții și a scos propriile sale versiuni Cygnus Guile r0.3 și R0.4. Prima versiune oficială a proiectului GNU a apărut în 1997.
Proiectul este întreținut în special de Andy Wingo .
Guile poate fi folosit ca un interpret de schemă clasic. Dar a fost proiectat de la început să fie integrat ca o limbă extensie în programe scrise în limbajul C .
Guile acceptă multe extensii la limbajul Scheme , precum și diverse module de sistem, programare de rețea și multi-threading .
Funcționează fie ca interpret, fie ca un compilator Scheme pentru bytecode pe o mașină virtuală .
Guile 2.0 compilează codul schemei în bytecode , care este apoi interpretat de o mașină virtuală. Acest lucru oferă o îmbunătățire vizibilă a performanței față de versiunile mai vechi ale Guile.
Codul sursă este compilat automat în mod implicit odată găsit, fără intervenție manuală. Comanda de construire a instrumentelor de înșelăciune oferă totuși o interfață de linie de comandă , plus proceduri de schemă pentru gestionarea compilatorului.
În afară de Scheme, compilatorul vine cu un front end pentru limbile ECMAScript și Emacs Lisp .
Un nou REPL (in) este disponibil de la versiunea 2.0 cu caracteristici care simplifică acest tip de programare interactivă. REPL este, de asemenea, prevăzut cu posibilități de depanare .
Versiune | Data de lansare | Principalele modificări |
---|---|---|
2.0.3 | 22 octombrie 2011 |
|
2.0.2 | 2 iulie 2011 |
|
2.0.1 | 27 aprilie 2011 |
|
2.0.0 | 16 februarie 2011 |
Guile este limbajul oficial de extensie pentru proiectul GNU. Tom Tromey, menținător al proiectului GNU Debugger , a anunțat însă retragerea sa din GDB pe 8 octombrie 2010, preferând Python ca singurul limbaj de extensie.
Folosirea Guile într-o aplicație permite programatorilor să scrie pluginuri și permite utilizatorilor să aibă o aplicație care se potrivește mai bine nevoilor lor.
Guile poate fi de fapt integrat în software-ul terților sub forma unei biblioteci software a cărei interfață le oferă funcționalitățile limbajului Scheme și ale modulelor asociate. Guile este astfel folosit ca limbaj de extensie în multe aplicații, inclusiv Gimp , Anubis , GnuCash , LilyPond , MDK , Robots , Serveez , TeXmacs sau Scwm
Hackerii din proiectul GNU Guile lucrează și din 2010 la migrația totală de la GNU Emacs la Guile, Emacs Lisp fiind acum implementat de Guile.
Guile-Ncurses este o implementare Ncurses care permite crearea de interfețe textuale în limbaj Scheme / Guile. Acesta conferă interpretului Schema GNU Guile capacitatea de a interacționa la introducerea de caractere în modul text de mediu , indiferent de terminal . Este un pachet al bibliotecilor Ncurses subiacente. Acest proiect, a cărui primă versiune stabilă datează din 2010, este încă întreținut de așa-numitul Mike Gran, creatorul său.
Există multe proiecte periferice independente de proiectul GNU, dar dedicate GNU Guile sub formă de module , printre care: