GNU Guile

GNU Guile

Infobox Software
name = GNU Guile

developer = Free Software Foundation
latest_release_version = 1.8.5 Guile project site, [http://www.gnu.org/software/guile/ What's the latest news?] ]
latest_release_date = Release date and age|2008|05|07
operating_system = GNU
genre = Programming language
license = GNU Lesser General Public License
website = [http://www.gnu.org/software/guile/ gnu.org: guile]
standard = R5RS
GNU Guile is an interpreter/virtual machine for the Scheme programming language. It was first released in 1993. [Blandy 1997, p. 102.] Guile includes modularized extensions for POSIX system calls, APL array functionality, and others , packaged as an object"Strictly speaking, Guile is an object library, not an executable." Blandy 1997, p. 89.] library. "Libguile" allows the language to be embedded in other programs, and used as an interface for other languages which allow close integration ["To encourage customization, Guile provides extensive interfaces, allowing C code to interact with the Scheme world. C code can freely create, access, and mutate Scheme objects; C functions may call Scheme functions and vice versa; C code may add new types to the Scheme world and take advantage of Guile's garbage collection… Most of the standard Scheme procedures are implemented by C functions, visible to Guile clients; for example, applications can call the C function scm_cons, which is the underlying implementation of the Scheme procedures cons." Blandy 1997, pp. 94, 96.] .

Guile is the "official" extension language of the GNU Project, although, as of 2006, it has been used for only a handful of major projects. Its name was coined in a Usenet discussion by Lee Thomas."The name Guile was first suggested in a Usenet discussion by Lee Thomas." Guile Scheme 1995.] The idea is that "the developer implements critical algorithms and data structures in C or C++ and exports the functions and types for use by interpreted code. The application becomes a library of primitives orchestrated by the interpreter, combining the efficiency of compiled code with the flexibility of interpretation." [Blandy 1997, pp 87.]

cheme compliance

For much of its history, Guile did not strictly adhere to Scheme standards:

The Guile version of Scheme differs from standard Scheme ( [Clinger] ) in two ways. First, in Guile Scheme, symbols are case sensitive. Second, in Guile Scheme, there is no distinction made between the empty list and boolean false (between '() and #f). ["An Anatomy of Guile, The Interface to Tcl/Tk", 1995]

In recent releases of Guile, symbols are still case sensitive, but the empty list and boolean false are now distinct. A switch in the reader procedure, which is Guile's lexical scanner and parser, enables Guile to treat symbols as case-insensitive. The latest adopted Scheme standard, R6RS, departs from the previous standards by adopting case-sensitive symbols as the default.

The close interaction between Guile and the application can come at a cost. Scheme requires implementations to optimize tail recursion because of Scheme's heavy use of recursion, but most techniques interfere with interoperation; Guile is forced to compromise and optimize tail calls within purely Scheme functions and programs, but to abandon tail recursion when C functions enter the picture. [Blandy 1997, p. 99.] Implementation of call/cc, another requirement of the Scheme standard, is also unsatisfactory — to handle continuations with C involves copying the entire C stack into the heap. ["Because Guile allows C functions and Scheme functions to call each other freely, a Guile continuation may include both C and Scheme stack frames. For simplicity, Guile's implementation of call/cc copies the entire C stack into the heap; invoking a continuation copies the stack back from the heap and uses the longjmp function to reactivate it. This implementation has a number of drawbacks…", Blandy 1997, p. 99.] Garbage collection, too, is not high-performance because C code could well have a pointer to a Scheme object; to avoid loss of needed cons cells, Guile's garbage collector is a conservative one which can miss cells that could be reclaimed. [Blandy 1997, pp. 99–100.]

History

Guile had its origin in a heated discussion (later dubbed "the Tcl Wars") started by Richard Stallman, who stated that Tcl was underpowered for application scripting; he proposed Scheme as the preferred language for extending GNU applications and eventually launched the Guile project. [http://www.vanderburg.org/OldPages/Tcl/war/ Tcl war] .] Because an appropriate Scheme interpreter did not exist at that time, Guile was developed to fill the niche. Tom Lord (later the developer of GNU arch) was heavily involved in the development of Guile while employed by Cygnus Solutions (later acquired by Red Hat). Its earlier versions were forked from SIOD ("Scheme In One Day" [http://www.cs.indiana.edu/scheme-repository/imp/siod.html SIOD] .] ) and the SCM interpreter"It's hard to determine just who designed Guile. A large share of the credit surely belongs to Aubrey Jaffer whose excellent Scheme interpreter, SCM, forms the core of the implementation. The module system was designed and built by Miles Bader…" "An Anatomy of Guile, The Interface to Tcl/Tk", 1995] , before 1995 ["Here is a very, very brief history of this interpreter. I hope that people involved in its past will contribute more to this document. SIOD: George Carrette wrote SIOD, the earliest version. Although most of this code as been rewritten or replaced over time, the garbage collector from SIOD is still an important part of Guile. SIOD is still actively developed and freely available (search for "siod"). It has a very small footprint." Guile Scheme 1995.] .

One of the goals of Guile is to allow other languages to be translated into Scheme and thence into portable byte-code; thus Guile would effectively be a language-neutral runtime environment. This goal has not been fulfilled yet, though various attempts have been made (a dialect of Scheme essentially differing only in its C-like syntax; a translation of Emacs Lisp; a Tcl converter motivated by TkWWW; and something roughly resembling the Logo programming language).

Guile Scheme supports XML, XPath, and XSLT in the forms of SXML, SXPath and SXSLT, respectively. The S-expression-based XML processing is provided by guile-lib.

Guile is supported by SLIB the portable Scheme library.

Programs using Guile

* GEDA
* GNU Anubis
* GnuCash
* GNU LilyPond
* GNU MDK
* GNU Robots
* GNU Serveez
* GNU TeXmacs
* GnoTime
* mcron — a backwards compatible replacement for Vixie cron written in Guile ["It is written in pure Guile, and allows configuration files to be written in scheme (as well as Vixie's original format) for infinite flexibility in specifying when jobs should be run." [http://www.gnu.org/software/mcron/ mcron] , Project GNU.]
* OpenCog [ [http://opencog.org OpencCog] ]
* Scwm
* Skribilo
* Snd (software)
* TkWWW — defunct web browser; was a Free GNU browser written & extensible in Tk

References

* [http://hepunx.rl.ac.uk/~adye/asis-doc/html/GNU.LANG/guile-1.0/guile.ps.gz "Guile Scheme"] . December 1995; specification and history; © FSF.
* [http://www.usenix.org/publications/library/proceedings/tcl95/full_papers/lord.ps "An Anatomy of Guile, The Interface to Tcl/Tk"] (1995)
* Jim Blandy, "Guile: An Interpreter Core for Complete Applications", "Handbook of Programming Languages, Volume IV: Functional and Logic Programming Languages", ed. Peter H. Salus. 1998 (1st edition), Macmillian Technical Publishing; ISBN 1-57870-011-6, pp. 87–104.

External links

* [http://www.gnu.org/software/guile/ GNU Guile homepage]
* [http://www.gnu.org/software/guile/guile.html What Is Guile?]
* [http://www.vanderburg.org/OldPages/Tcl/war/ Archives of the Tcl Wars]
* [http://www.network-theory.co.uk/articles/vollmer.html A 2003 interview with GNU Guile maintainer Marius Vollmer]


Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Look at other dictionaries:

  • GNU Guile — Développeur Projet GNU Première version 1997 …   Wikipédia en Français

  • Gnu Guile — Entwickler: Free Software Foundation Aktuelle Version: 1.8.6 [1] …   Deutsch Wikipedia

  • GNU Guile — Desarrollador Proyecto GNU GNU Guile …   Wikipedia Español

  • GNU Guile — Dieser Artikel wurde aufgrund von inhaltlichen Mängeln auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf… …   Deutsch Wikipedia

  • GNU Guile-Ncurses — Développeur Projet GNU Dernière version …   Wikipédia en Français

  • Guile — GNU Guile Entwickler: Free Software Foundation Aktuelle Version: 1.8.6 [1] …   Deutsch Wikipedia

  • GNU Dico — Développeur Projet GNU Dernière version …   Wikipédia en Français

  • GNU — Famille Type Unix Langue Multilingue Type de noyau Micronoyau …   Wikipédia en Français

  • GNU LilyPond — Desarrollador Graham Percival, Joe Neeman, Neil Puttock, Carl Sorensen, John Mandereau http://l …   Wikipedia Español

  • Guile — may refer to:* GNU Guile, an interpreter/virtual machine for the Scheme programming language * Guile ( Street Fighter ), a video game character from Street Fighter series * Guile (Chrono Cross), a video game character from Chrono Cross …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”