GNU Guile

は、プログラミング言語  のインタプリタ/仮想マシン。1993年に初めてリリースされたBlandy 1997, p. 102.。
はPOSIXシステムコールのモジュール化された拡張やAPL アレイの機能などを含み、オブジェクト「」 、、1997年, p.89. ライブラリとしてパッケージングされている。「」を使うことで、を他のプログラムの中に組み込んで、 他言語との密接な統合が可能なインターフェースとして使用することができる「」、1997年, pp. 94, 96.。

名前「」は「」から来ている。後付けのものではないが（注を参照）公式ウェブページの冒頭にあらわれたのは2011年の春頃であるInternet Archive Weyback Machine で確認。2011年1月1日のスナップショットには無いが、同年5月14日のアーカイブにはある。1997年7月のGNU's Bulletin, vol. 1 no. 23 で確認できるので、後付けではない。。

はGNUプロジェクトの「公式の」 拡張言語であるが、 2006年の時点で、人気のあるプロジェクトの中でこの言語を使っているものは十指に満たない。その名称については、での議論の中で、リー・トーマス「」、 1995年によって提唱された。 基本的なアイデアは、「開発者は基本的なアルゴリズムやデータ構造はCやC++に実装し、機能や型をインタプリタ用のコードにエクスポートする。アプリケーションはインタプリタが統括するプリミティブのライブラリとなることで、コンパイルされたコードの効率とインタプリタの柔軟性の双方を備えることができる。」というものである 1997年、pp 87.。

標準への遵守 
その歴史の多くの部分において、は標準に厳密に従っていたわけではなかった。

「」、1995年

現在のでは、空のリストとブーリアン型の#fは区別される。シンボルの大文字/小文字は区別されるが、のレキシカルスキャナ兼パーサである  における分岐により、はシンボルでの大文字/小文字の区別をやめることができる。最近採用された標準R6RSは、R5RS以前の標準から離れて、大文字/小文字の区別をデフォルトとして採用している。

とアプリケーションとの密接な連携にはコストが伴う。は再帰を頻繁に行うので、末尾再帰を最適化した実装を要求するが、ほとんどのテクニックは他言語との相互運用性を損なうものである。は、純粋にの関数やプログラムの中で末尾再帰を最適化するよう妥協し、C言語の関数が視野に入ったときは末尾再帰をあきらめるということを強いられるBlandy 1997, p. 99.。標準のもうひとつの要求であるの実装も、不満足なものである。— C言語で継続を扱うには、C言語のスタック全体をヒープにコピーすることが必要になる「」、1997年、p. 99.。ガベージコレクションもまた、効率的なものとはなりえない。C言語のコードはのコードへのポインタを持つことができなければならないからだ。必要なセルの消失を避けるためには、のガベージコレクタは保守的なものにならざるを得ず、再利用される可能性のあるセルを失う可能性がある、1997年、pp. 99–100.。

歴史
はリチャード・ストールマンによって始められた（のちに「Tcl戦争」と呼ばれることになる）白熱した議論にその端を発する。ストールマンは、Tclはアプリケーションを記述するには力不足だとし、GNUのアプリケーションを拡張するためにふさわしい言語としてを提唱して、その結果、プロジェクトが始められた Tcl war. 。
当時、適当なインタプリタがなかったため、は「隙間」を埋めるために開発された。（のちにの開発者となる）トム・ロードはシグナスソリューションズ。後にレッドハットによって買収された。で働いている間にの開発に深くのめりこんだ。初期のバージョンは、1995年よりも以前にSIOD（ SIOD.)やSCMインタプリタ「」、 、1995年から派生した「」、1995年。

の目標のひとつは、他の言語からさらにはポータブルな バイトコードへの翻訳を可能にすることである。そうすることで、は効果的な言語中立のランタイム環境となることができる。この目標はいまだ達成されていないが、多くの努力がなされてきた（C言語と類似する構文を持たない他の方言からの、からの、TkWWWの関係で実装されたTclからの、そしての類似言語からの変換が報告されている）。

 はXML、、XSLT を（SXML、、SXSLT それぞれにおいて）サポートしている。 S式に基づいたXML処理が  によって提供されている。

はポータブルなライブラリSLIBをサポートする。

Guileを使用しているプログラム
GNU Guix
GnuCash
GNUデバッガ
GNU make
GNU TeXmacs
GNU LilyPond
Denemo
AisleRiot - GNOME Games パッケージの一部「」

GNU MIX Development Kit
GNU Robots
GNU Serveez
GnoTimeGnoTime

 —  の代替品。上位互換である「」GNUプロジェクト 。
OpencCog

Skribilo
 — ウェブブラウザ。Tk (ツールキット)を使って作成されており、拡張も可能。開発は終了している。
GNU DMD
GNU Artanis

 脚注 

 参考文献 

「」— 仕様と履歴 © FSF（1995年12月）
「」(1995年)

外部リンク

「」（説明書より）

Category:Scheme
Category:Schemeインタプリタ
Category:GNUプロジェクト
Category:オープンソースソフトウェア
Category:LISP