GNU+Guile

[|What is Guile?] What can it do for you?
Guile is the //GNU Ubiquitous Intelligent Language for Extensions//, the official extension language for the [|GNU operating system]. Guile is a library designed to help programmers create flexible applications. Using Guile in an application allows the application's functionality to be //extended// by users or other programmers with plug-ins, modules, or scripts. Guile provides what might be described as "practical software freedom," making it possible for users to customize an application to meet their needs without digging into the application's internals. There is a long list of proven applications that employ extension languages. Successful and long-lived examples of Free Software projects that use Guile are [|TeXmacs], [|LilyPond] , and [|GnuCash].

Guile is a programming language
Guile is an interpreter and compiler for the [|Scheme] programming language, a clean and elegant dialect of Lisp. Guile is up to date with recent Scheme standards, supporting the [|Revised5] and most of the [|Revised6] language reports (including hygienic macros), as well as many [|SRFIs]. It also comes with a library of modules that offer additional features, like an HTTP server and client, XML parsing, and object-oriented programming.

Guile is an extension language platform
Guile is an efficient virtual machine that executes a portable instruction set generated by its optimizing compiler, and integrates very easily with C and C++ application code. In addition to Scheme, Guile includes compiler front-ends for [|ECMAScript] and [|Emacs Lisp] (support for [|Lua] is underway), which means your application can be extended in the language (or languages) most appropriate for your user base. And Guile's tools for parsing and compiling are exposed as part of its standard module set, so support for additional languages can be added without writing a single line of C.

Guile gives your programs more power
Using Guile with your program makes it more usable. Users don't need to learn the plumbing of your application to customize it; they just need to understand Guile, and the access you've provided. They can easily trade and share features by downloading and creating scripts, instead of trading complex patches and recompiling their applications. They don't need to coordinate with you or anyone else. Using Guile, your application has a full-featured scripting language right from the beginning, so you can focus on the novel and attention-getting parts of your application. 

How do I get Guile?
See the [|Download] page for additional ways of getting Guile.
 * The current //stable// release is [|2.0.7].