| GNU Guile | |
|---|---|
| Developed by | Free Software Foundation |
| Latest release | 1. A software developer is a person or organization concerned with facets of the software development process wider than design and coding a somewhat broader scope of The Free Software Foundation ( FSF) is a Non-profit corporation founded by Richard Stallman on 4 October 1985 to support the Free software movement A software release is the distribution whether public or private of an initial or new and upgraded version of a Computer software product 8. 5 [1] / May 7, 2008 |
| OS | GNU |
| Genre | Programming language |
| License | GNU Lesser General Public License |
| Website | gnu.org: guile |
| Standard(s) | R5RS |
GNU Guile is an interpreter/virtual machine for the Scheme programming language. Events 558 - In Constantinople, the dome of the Hagia Sophia collapses 2008 ( MMVIII) is the current year in accordance with the Gregorian calendar, a Leap year that started on Tuesday of the Common An operating system (commonly abbreviated OS and O/S) is the software component of a Computer system that is responsible for the management and coordination GNU ( pronounced) is a computer Operating system composed entirely of Free software. Computer software can be organized into categories based on common function type or field of use A programming language is an Artificial language that can be used to write programs which control the behavior of a machine particularly a Computer. A software license (or software licence in commonwealth usage is a Legal instrument governing the usage or redistribution of copyright protected software The GNU Lesser General Public License (formerly the GNU Library General Public License) or LGPL is a Free software license published by the Free Software A website (alternatively web site or Web site, a back-construction from the Proper noun World Wide Web) is a collection of Web pages A technical standard is an established norm or requirement It is usually a formal document that establishes uniform engineering or technical criteria methods processes and practices In Computer science, an interpreter normally means a Computer program that executes, i In Computer science, a virtual machine (VM is a Software implementation of a machine (computer that executes programs like a real machine Scheme is a Multi-paradigm programming language. It is one of the two main dialects of Lisp and supports a number of programming paradigms but is It was first released in 1993. [2] Guile includes modularized extensions for POSIX system calls, APL array functionality, and others, packaged as an object[3] library. POSIX (ˈpɒzɪks or "Portable Operating System Interface" is the collective name of a family of related standards specified by the IEEE to define In Computer science an array is a Data structure consisting of a group of elements that are accessed by indexing. In Computer science, a library is a collection of Subroutines used to develop Software. In Computer science, a library is a collection of Subroutines used to develop Software. "Libguile" allows the language to be embedded in other programs, and used as an interface for other languages which allow close integration[4].
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. "Scripting" redirects here For other uses see Script. The GNU Project is a Free software, Mass collaboration project announced in 1983 by Richard Stallman. Its name was coined in a Usenet discussion by Lee Thomas. Usenet, a Portmanteau of "user" and "network" is a world-wide distributed Internet discussion system [5] 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. "[6]
Contents |
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). [7]
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. Scheme is a Multi-paradigm programming language. It is one of the two main dialects of Lisp and supports a number of programming paradigms but is
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. In Computer science, tail recursion (or tail-end recursion) is a special case of recursion in which the last operation of the function is a recursive call [8] 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. In Computer programming, the function call-with-current-continuation, commonly abbreviated call/cc, is a Control operator that originated in In Computing, a continuation represents the rest of the computation given a point in the computation In Computer science, a call stack is a dynamic stack data structure which stores information about the active Subroutines of a Computer program In Computer science, dynamic memory allocation is the allocation of memory storage for use in a Computer program during the Runtime of that program [9] 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. In Computer science, garbage collection ( GC) is a form of automatic Memory management. [10]
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. Flaming is the hostile and insulting interaction between Internet users Richard Matthew Stallman (born March 16 1953 often abbreviated " rms " is an American software freedom activist Tcl (originally from "Tool Command Language" but nonetheless conventionally rendered as "Tcl" rather than "TCL" pronounced as " tickle " [11] Because an appropriate Scheme interpreter did not exist at that time, Guile was developed to fill the niche. Tom Lord was heavily involved in the development of Guile while employed by Cygnus Solutions (later acquired by Red Hat). In Computing, Red Hat Inc ( is a company dedicated to Free and open source software, and a major Linux distribution vendor Its earlier versions were forked from SIOD ("Scheme In One Day"[12]) and the SCM interpreter[13], before 1995[14]. In Software engineering, a project fork happens when developers take a copy of Source code from one software package and start independent development SCM is a Free software Scheme implementation in C written by Aubrey Jaffer, the same author as the SLIB Scheme library and the
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. See also Software portability In Computer science, porting is the process of adapting software so that an executable program can be created Bytecode is a term which has been used to denote various forms of Instruction sets designed for efficient execution by a software interpreter as well as being suitable 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). Emacs Lisp is a dialect of the Lisp programming language used by the GNU Emacs and XEmacs Text editors (which will be collectively referred to Logo is a Computer programming language used for Functional programming.
Guile Scheme supports XML, XPath, and XSLT in the forms of SXML, SXPath and SXSLT, respectively. Don't change "Extensible" XPath (XML Path Language is a language for selecting nodes from an XML document Extensible Stylesheet Language Transformations ( XSLT) is an XML -based language used for the transformation of XML documents into other XML or "human-readable" The S-expression-based XML processing is provided by guile-lib. The term S-expression or sexp (where S stands for symbolic refers to a convention for representing Semi-structured data in human-readable textual form
Guile is supported by SLIB the portable Scheme library. SLIB is a Scheme Library written by Aubrey Jaffer which uses only standard syntax and consequently works on many different Scheme implementations such
scm_cons, which is the underlying implementation of the Scheme procedures cons. In Computer science, a subroutine ( function, method, procedure, or subprogram) is a portion of code within a larger In Computer programming, cons (ˈkɒnz or /ˈkɒns/ is a fundamental function in all dialects of the Lisp programming language. " Blandy 1997, pp. 94, 96. 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.