GNU Guile
Encyclopedia
GNU Guile is an interpreter
Interpreter (computing)
In computer science, an interpreter normally means a computer program that executes, i.e. performs, instructions written in a programming language...

/virtual machine
Virtual machine
A virtual machine is a "completely isolated guest operating system installation within a normal host operating system". Modern virtual machines are implemented with either software emulation or hardware virtualization or both together.-VM Definitions:A virtual machine is a software...

 for the Scheme programming language. It was first released in 1993. Guile includes modularized extensions for POSIX
POSIX
POSIX , an acronym for "Portable Operating System Interface", is a family of standards specified by the IEEE for maintaining compatibility between operating systems...

 system calls, APL array
Array programming
In computer science, array programming languages generalize operations on scalars to apply transparently to vectors, matrices, and higher dimensional arrays....

 functionality, and others packaged as an object library
Library (computer science)
In computer science, a library is a collection of resources used to develop software. These may include pre-written code and subroutines, classes, values or type specifications....

. "Libguile" allows the language to be embedded in other programs, and used as an interface for other languages which allow close integration.

Guile stands for the GNU Ubiquitous Intelligent Language for Extensions, and is the official extension language of the GNU Project
GNU Project
The GNU Project is a free software, mass collaboration project, announced on September 27, 1983, by Richard Stallman at MIT. It initiated GNU operating system development in January, 1984...

, although, as of 2006, it has been used for only a handful of major projects. Its name was coined in a Usenet
Usenet
Usenet is a worldwide distributed Internet discussion system. It developed from the general purpose UUCP architecture of the same name.Duke University graduate students Tom Truscott and Jim Ellis conceived the idea in 1979 and it was established in 1980...

 discussion by Lee Thomas. 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."

Implementation compromises

The close interaction between Guile and the application comes 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 compromises by optimizing tail calls within purely Scheme functions and programs, but not when foreign functions enter the picture. Implementation of call/cc, another requirement of the Scheme standard, is not entirely satisfactory — to handle continuation
Continuation
In computer science and programming, a continuation is an abstract representation of the control state of a computer program. A continuation reifies the program control state, i.e...

s in this environment it must copy the entire execution stack
Call stack
In computer science, a call stack is a stack data structure that stores information about the active subroutines of a computer program. This kind of stack is also known as an execution stack, control stack, run-time stack, or machine stack, and is often shortened to just "the stack"...

 into the heap, and back. Because foreign code may have pointers to Scheme objects, Guile's garbage collector
Garbage collection (computer science)
In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...

 is the "conservative" variety which must periodically touch all of allocated memory.

History

Guile had its origin in a heated discussion (later dubbed "the Tcl Wars") started by Richard Stallman
Richard Stallman
Richard Matthew Stallman , often shortened to rms,"'Richard Stallman' is just my mundane name; you can call me 'rms'"|last= Stallman|first= Richard|date= N.D.|work=Richard Stallman's homepage...

, who stated that Tcl
Tcl
Tcl is a scripting language created by John Ousterhout. Originally "born out of frustration", according to the author, with programmers devising their own languages intended to be embedded into applications, Tcl gained acceptance on its own...

 was underpowered for application scripting; he proposed Scheme as the preferred language for extending GNU applications and eventually launched the Guile project. 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
GNU arch
In computing, GNU arch is a distributed revision control system that is part of the GNU Project and licensed under the GNU General Public License...

) was heavily involved in the development of Guile while employed by Cygnus Solutions (later acquired by Red Hat
Red Hat
Red Hat, Inc. is an S&P 500 company in the free and open source software sector, and a major Linux distribution vendor. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North Carolina with satellite offices worldwide....

). Its earlier versions were forked from SIOD
SIOD
Scheme In One Defun is a small-footprint implementation of the Scheme programming language, written in C and designed to be embedded inside C programs. It was originally written by Professor George J...

 ("Scheme In One Day") and the SCM
SCM (Scheme implementation)
SCM is a free software Scheme implementation in C written by Aubrey Jaffer, the same author as the SLIB Scheme library and the JACAL interactive symbolic mathematics program.It conforms to the R4RS, R5RS, and IEEE P1178 standards....

 interpreter, before 1995. After its initial release, development languished for many years, but 2009-10 saw major performance improvements.

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
Emacs Lisp
Emacs Lisp is a dialect of the Lisp programming language used by the GNU Emacs and XEmacs text editors . It is used for implementing most of the editing functionality built into Emacs, the remainder being written in C...

; a Tcl converter motivated by tkWWW
TkWWW
tkWWW was an early web browser/WYSIWYG HTML editor written by Joseph Wang at the MIT as part of the Project Athena and the Globewide Network Academy project. The browser was based on the Tcl language and the tk toolkit extension but did not achieve broad user acceptance or market share although it...

; and something roughly resembling the Logo programming language.

Guile Scheme supports XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

, XPath
XPath
XPath is a language for selecting nodes from an XML document. In addition, XPath may be used to compute values from the content of an XML document...

, and XSLT
XSLT
XSLT is a declarative, XML-based language used for the transformation of XML documents. The original document is not changed; rather, a new document is created based on the content of an existing one. The new document may be serialized by the processor in standard XML syntax or in another format,...

 in the forms of SXML
SXML
SXML is a way to write and process XML data in the form of S-expressions.Textual correspondence between SXML and XML for a sample XML snippet is shown below: XML SXML Text node SXML is a way to write and process XML data in the form of S-expressions.Textual correspondence between...

, SXPath and SXSLT, respectively. The S-expression
S-expression
S-expressions or sexps are list-based data structures that represent semi-structured data. An S-expression may be a nested list of smaller S-expressions. S-expressions are probably best known for their use in the Lisp family of programming languages...

-based XML processing is provided by guile-lib.

Guile programs can use facilities from SLIB
SLIB
SLIB is a Scheme library written by Aubrey Jaffer. It uses only standard syntax and consequently works on many different Scheme implementations, such as Bigloo, Chez Scheme, Extension Language Kit 3.0, Gambit 3.0, GNU Guile, JScheme, MIT/GNU Scheme, Pocket Scheme, Racket, RScheme, Scheme 48, SCM,...

, the portable Scheme library.

Programs using Guile

  • AisleRiot - part of the GNOME Games
    GNOME Games
    GNOME Games is a collection of computer games that is part of the standard open-source GNOME desktop environment. It includes the following games:* AisleRiot - - a suite of Solitaire card games....

     package.
  • BoBot++ - a Internet Relay Chat
    Internet Relay Chat
    Internet Relay Chat is a protocol for real-time Internet text messaging or synchronous conferencing. It is mainly designed for group communication in discussion forums, called channels, but also allows one-to-one communication via private message as well as chat and data transfer, including file...

     bot extensible in Guile Scheme.
  • GNUbik
    GNUbik
    GNU Gnubik is a puzzle game - a software implementation of the Rubik's Cube. It is cross platform and is included in all major operating systems including Debian, Red Hat and Ubuntu.- Features :...

  • AutoGen
  • gEDA
    GEDA
    The term gEDA refers to two things:# A set of software applications used for electronic design released under the GPL. As such, gEDA is an ECAD or EDA application suite. gEDA is mostly oriented towards printed circuit board design...

  • GNU Anubis
    GNU Anubis
    GNU Anubis is an outgoing mail processor. It goes between the Mail User Agent and the Mail transport agent , and can perform various sorts of processing and conversion on the outgoing mail in accord with the sender's specified rules, based on a configurable regular expressions system. It operates...

  • GnuCash
    GnuCash
    GnuCash is a free and open source accounting software program that implements a double-entry bookkeeping system. It was initially aimed at developing capabilities similar to Intuit, Inc.'s Quicken application, but also has features for small business accounting...

  • Denemo
    Denemo
    Denemo is a free software graphical interface for music notation, mainly to GNU LilyPond, a program for engraving musical scores. Denemo has been under development since 1999. Using GTK+ 2.0, it works on Linux and Microsoft Windows....

  • GNU LilyPond
    GNU LilyPond
    GNU LilyPond is a computer program for music engraving. One of LilyPond's major goals is to produce scores that are engraved with traditional layout rules, reflecting the era when scores were engraved by hand....

  • GNU MDK
  • GNU Robots
  • GNU Serveez
  • GNU TeXmacs
  • GnoTime
  • Liquid War 6
    Liquid War
    Liquid War is a unique multi-player action game. It is based on an original shortest path algorithm and core concept by Thomas Colcombet and programmed by Christian Mauduit.-Description:...

  • mcron — a backwards compatible replacement for Vixie cron written in Guile.
  • OpenCog
    OpenCog
    OpenCog is a project that aims to build an open source artificial general intelligence framework. OpenCog Prime is a specific set of interacting components designed to give rise to human-equivalent artificial general intelligence...

  • Scwm
    Scwm
    Scwm or Scheme Constraints Window Manager is a window manager for the X Window System. Its main features are dynamic configurability and programmability via a language based on GNU Guile and the embedded arithmetic Cassowary constraint solver. The primary developers were Greg Badros and Maciej...

  • Skribilo
  • Snd (software)
  • tkWWW
    TkWWW
    tkWWW was an early web browser/WYSIWYG HTML editor written by Joseph Wang at the MIT as part of the Project Athena and the Globewide Network Academy project. The browser was based on the Tcl language and the tk toolkit extension but did not achieve broad user acceptance or market share although it...

     — defunct web browser
    Web browser
    A web browser is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. An information resource is identified by a Uniform Resource Identifier and may be a web page, image, video, or other piece of content...

    ; was a Free GNU browser written & extensible in Tk

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK