The sprawling metropolis of GNU Emacs and the garishly backlit progeny of The GIMP are two examples of the power of extensibility: Emacs is programmable in Emacs Lisp, and the GIMP has its Procedural Database, a generic interface to scripting languages, like Script-Fu and Gimp-Perl. The mod_perl module for the Apache Web server is, in a sense, an extension language for Apache.
More precisely,
nicely packaged as a library you can link into your programs. Your program has full access to the interpreter's data structures, so you can extend Guile with your own primitives, datatypes and syntax. The result is a scripting language tailored to your application.
Giving your program an extension language broadens the audience of people who can hack on it. People don't need to learn the internals of your application to extend it; they just need to understand the language, and the primitives you've provided. They can easily trade and share ideas by passing around scripts, instead of trading patches and recompiling their applications. They don't need to coordinate with you, or anyone else.
GNU Emacs acquired much of its bulk by simply waiting to see which Emacs Lisp packages became ubiquitous; the vast majority of the lisp library is contributed by people not directly associated with Project GNU. And even Peter Mattis and Spencer Kimball couldn't have written all those GIMP plugins.
When you decide you need a scripting language or a configuration file, the first impulse is, ``I'll just do something clean and simple.'' This is the right impulse: a full programming language with conditionals, loops, local scopes, and procedures is just a distraction from your project. But simple languages never stay simple. For example, early releases of PHP, a language for generating web pages on the fly, touted its minute memory footprint and simplicitly. Well, the latest release of PHP has its own object system. Compare Tcl circa 1988 with the modern beast. Same story with Perl. The point here is not to criticize these (very successful) tools, but rather to show that simplicity in a scripting language doesn't last long. The real challenge is to age well.
Guile has the fundamentals you need; you simply specialize it for
your application. It has arrays and lists; modules; objects; and
first-class functions. It has garbage collection --- which Perl and
Tcl are just now coming around to, although not gracefully. You
enter the game with a full-featured scripting language, so
interpreter limitations don't cramp the rest of your design.
What's the latest news?
A Guile maintainer committee now coordinates Guile work. It consists of Maciej Stachowiak, Marius Vollmer, Jim Blandy and Mikael Djurfeldt
The most recent release is Guile 1.4, available via anonymous FTP; its address is http://ftp.gnu.org/pub/gnu/guile/ .
As mentioned above, the bleeding edge of development is available via anonymous CVS.
At the moment, the immediate priority is documentation. The lack of documentation is pretty daunting for a lot of people; it's not a simple API.
Future plans include:
The latest release of Guile is available via anonymous FTP, at http://ftp.gnu.org/pub/gnu/guile/. However, please consider also making a donation to the FSF. The software page has full details about mirror sites, etc.
As a shabby excuse for not making real releases with any
reasonable frequency, we also make our development sources
available, via anonymous
CVS and nightly
snapshots, available via FTP. If you want to live on the
bleeding edge, this is the way to go.
Reporting Bugs in Guile
You do us a much-appreciated service when you report the bugs you find in Guile. Please don't assume we already know about them; they're almost always news to us. (We know about different bugs from the one you've found.)
To report a bug, send mail to <bug-guile@gnu.org>.
When you report a bug, please try to provide exact directions we can follow to make the bug show itself on our own machine. If we can make a bug happen, it's almost certain we will be able to fix it; if we can't, it's almost certain we won't be able to.
If you have a fix, wonderful! Some favors we ask, though:
There are several mailing lists associated with Guile:
Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF.
Please send comments on these web pages to webmasters@www.gnu.org, send other questions to gnu@gnu.org.
Copyright (C) 2000 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA
Verbatim copying and distribution of this entire web page is permitted in any medium, provided this notice is preserved.
Updated: 25 Jul 2000 ttn