GNU Guile
# GNU Guile

Guile, ein Akronym für GNU Ubiquitous Intelligent Language for Extensions, ist die offizielle Erweiterungssprache für das Betriebssystem GNU und wird im Rahmen des GNU-Projekts entwickelt. Guile ist ein Interpreter für die Programmiersprache Scheme, einen Lisp-Dialekt. Die Compiler-Infrastruktur, Bibliotheken und dynamische Programmierumgebung machen Guile zu einer mächtigen Sprache zum Schreiben von Anwendungen. Guile wird als Programmbibliothek implementiert, die in andere Programme – vor allem C- und C++-Programme – eingebunden werden kann, um deren Erweiterbarkeit zu fördern.

## Geschichte

Die Ursprünge von Guile liegen in einer Diskussion, die von Richard Stallman angefangen wurde und die später unter dem Namen „Tcl-Wars“ bekannt geworden ist: Stallman behauptete, dass Tcl nicht leistungsfähig genug sei, um als Erweiterungssprache zu dienen und kündigte die Absicht der Free Software Foundation an, Guile als Erweiterungssprache für das GNU-Projekt zu fördern. Es ist hingegen ein weit verbreitetes Missverständnis, dass Guile als Reaktion auf Tcl geschaffen wurde. Zwar geschah die öffentliche Ankündigung von Guile zur gleichen Zeit wie die „Tcl-Wars“, aber Guile wurde aus einem Zustand heraus geschaffen, der außerhalb der Polemik existierte. Eine gute Einführung in die Entstehungsgeschichte zu GNU Guile findet sich im Reference Manual zu Guile.

## Eigenschaften des Guile-Interpreters

Der Guile-Interpreter erweitert Scheme unter anderem um folgende Fähigkeiten:

* Ein erweitertes Modulsystem
* Vollen Zugriff auf POSIX-Systemaufrufe
* Netzwerkunterstützung
* Multithreading
* Dynamisches Linken
* Eine Schnittstelle zur Ausführung Scheme-fremder Funktionsaufrufe
* Verbesserte Verarbeitung von Zeichenketten
* Objektorientierung durch das Modul goops, ähnlich zum Common Lisp Object System

Anders als Scheme selbst ist Guile case sensitive.

## Projekte, die Guile einsetzen

* gEDA
* GNU Anubis
* GnuCash
* GNU Debugger (gdb) – von Version 7.8 an
* GNU Make – von Version 4.0 an
* GNU MDK
* GNU Robots
* GNU Serveez
* GNU TeXmacs
* GnoTime
* LilyPond
* Scwm
* Taxbird
* GNU Guix und GNU Guix System
