|
GNU Guile (first released in 1993[1]) is an interpreter/virtual machine for the Scheme programming language and modularized extensions thereof (such as POSIX system call extensions or APL array functionality, packaged as a object[2] library ("libguile") so that it can be embedded in other programs, as well as interfaces for other languages such as Tcl/tk and especially C which allow close integration[3]. 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.[4] 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."[5] This close interaction can come at a cost, however. 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.[6] Implementing call/cc, another Scheme must, is also unsatisfactory - to handle continuations with C involves copies the entire C stack into the heap.[7] 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.[8] Image File history File links Guile-title. ...
Image File history File links Guile-title. ...
A logotype (from the Greek λογÏÏÏ
Ïο), commonly known as a logo, is the graphic element, symbol, and icon of a trademark or brand, which is set in a special typeface or arranged in a particular way. ...
An interpreter is a computer program that executes other programs. ...
In general terms, a virtual machine in computer science is software that creates a virtualized environment between the computer platform and the end user in which the end user can operate software. ...
Scheme is a multi-paradigm programming language and a dialect of Lisp which supports functional and procedural programming. ...
To meet Wikipedias quality standards, this article or section may require cleanup. ...
APL is an abbreviation, acronym, or initialism that may refer to: Acute promyelocytic leukemia, a subtype of acute myelogenous leukemia American President Lines, a Singapore-based container transportation and shipping company American Protective League, a WWI era pro-war organization Association of Pension Lawyers APL programming language, an array programming...
In computer programming, a group of homogeneous elements of a specific data type is known as an array, one of the simplest data structures. ...
Illustration of an application which may use libvorbisfile. ...
Illustration of an application which may use libvorbisfile. ...
Extension languages allow users, programmers, and third-party developers to add features to a program without having to re-write the program as a whole, and it allows people extending a program to co-operate with each other, without having to expend any extra effort. ...
The GNU logo, drawn by Etienne Suvasa The GNU Project was announced in 1983 by Richard Stallman. ...
Usenet is a distributed Internet discussion system that evolved from a general purpose UUCP network of the same name. ...
James LeRoy Lee Thomas (born February 5, 1936 in Peoria, Illinois) is a special assignment scout for the Milwaukee Brewers and a former player and front-office executive in American Major League Baseball. ...
In computer science, tail recursion is a special case of recursion that can be easily transformed into an iteration. ...
Call-with-current-continuation (abbreviated call/cc) is a Scheme control function that takes a function f as its only argument and calls f, passing it the current continuation, k. ...
In computing, a continuation is a representation of the execution state of a program (for example, the call stack or values of variables) at a certain point. ...
In computer science, a call stack is a special stack 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. ...
It has been suggested that Software pointer be merged into this article or section. ...
Originally 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).[9] In recent releases of Guile, symbols are still case sensitive, but the empty list and boolean false are distinct. The adjective Boolean (sometimes boolean), coined in honor of George Boole, is used in many contexts: An evaluation that results in either TRUE or FALSE. A boolean value is a truth value, either true or false, often coded 1 and 0, respectively. ...
It originated out of 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[1]. 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). Its earlier versions were forked from SIOD ("Scheme In One Day"[2]) and the SCM interpreter[10], before 1995[11] Flaming is the act of sending or posting messages that are deliberately hostile and insulting, usually in the social context of a discussion board on the Internet. ...
Richard Matthew Stallman (abbreviated to RMS) (born March 16, 1953) is both an acclaimed activist and hacker. ...
// Tcl (originally from Tool Command Language, but nonetheless conventionally rendered as Tcl rather than TCL; and pronounced like tickle) is a scripting language created by John Ousterhout. ...
Tom Lord is a free software developer, best known as the author of GNU arch. ...
Red Hat, Inc. ...
In software, a project fork or branch happens when a developer (or a group of them) takes code from a project and starts to develop independently of the rest. ...
One of the goals of Guile is that other languages could be translated into Scheme and thence into portable byte-code; thus Guile would effectively be a language-neutral runtime environment. This goal hasn't been fulfilled yet, though various attempts were 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). In computer science, porting is the process of adapting software so that an executable program can be created for a different computing environment (e. ...
Byte-code is a sort of intermediate code that is more abstract than machine code. ...
Emacs Lisp is a dialect of the Lisp programming language used by the GNU Emacs and XEmacs text editors (which we will collectively refer to as Emacs in this article. ...
Logo turtle graphic The Logo programming language is a functional 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. The Extensible Markup Language (XML) is a W3C-recommended general-purpose markup language for creating special-purpose markup languages, capable of describing many different kinds of data. ...
XPath (XML Path Language) is a terse (non-XML) syntax for addressing portions of an XML document. ...
...
An S-expression (S stands for symbolic) is a convention for representing data or an expression in a computer program in a text form. ...
Programs using Guile
GNU Anubis is an outgoing mail processor. ...
GnuCash is a Free Software double-entry book-keeping personal finance system. ...
GNU LilyPond is a free software program for engraving sheet music. ...
The GNU MDK (GNU MIX Development Kit) is a software package for developing, running and debugging programs written in MIXAL, an assembly-like language for programming a fictional computer called MIX. Both MIX and MIXAL were created by mathematician and computer scientist Donald Knuth in the first volume of his...
GNU Robots is a computer game for programmers. ...
TeXmacs on Fedora Core 2 GNU TeXmacs is a free scientific word processor, which was both inspired by TeX and GNU Emacs. ...
Scwm or Scheme Constraints Window Manager is a window manager for the X Window System. ...
The gEDA project is a free/open-source software collaborative working on producing a full GPLd suite of Electronic Design Automation tools. ...
An example of a web browser (Mozilla Firefox running under Microsoft Windows). ...
The term backwards compatible refers to the ability of a recent software or hardware components to be able to work with earlier versions of the same product. ...
Vixie cron is a cron daemon originally coded by Paul Vixie 1987. ...
References - ^ pg 102 of Blandy 1997
- ^ "Strictly speaking, Guile is an object library, not an executable." pg 89 of Blandy 1997
- ^ "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." pg 94, 96 of Blandy 1997 - ^ "The name Guile was first suggested in a Usenet discussion by Lee Thomas." From Guile Scheme 1995.
- ^ pg 87, Blandy 1997
- ^ pg 99 of Blandy 1997
- ^ "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..." pg 99 of Blandy 1997 - ^ pgs 99-100 of Blandy 1997
- ^ "An Anatomy of Guile, The Interface to Tcl/Tk", 1995
- ^ "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
- ^ "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." From Guile Scheme 1995.
- ^ "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/
- "Guile Scheme" -(December 1995; specification and history; copyright FSF)
- "An Anatomy of Guile, The Interface to Tcl/Tk" -(1995)
- "Guile: An Interpreter Core for Complete Applications" by Jim Blandy, pg 87-104 of 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
In computer science, a subroutine (function, method, procedure, or subprogram) is a portion of code within a larger program, which performs a specific task and is relatively independent of the remaining code. ...
CONS, Connection-Oriented Network Service, is one of the two OSI stack network layer protocols, the other being CLNS (Connectionless Network Service). ...
Garbage collector can refer to two different things: Garbage collection (computer science): an automatic way of reclaiming unused storage; Trash collector: Person employed to remove waste from homes and businesses. ...
Peter H. Salus is a linguist, computer scientist, historian of technology, author and editor of books on computing. ...
External links |