There is a long tradition of scripting languages in the Unix
community, the canonical example being
/bin/sh
[2]. Scripting languages allow the
programmer to express programming ideas at a high level, and can also
be designed in such a way that the language interpreter can be
included as an extension language inside of other programs. When a
program provides a powerful extension language to end users, it often
increases the utility of the program by orders of magnitude (consider
GNU Emacs and GNU Emacs Lisp as an example). While in recent years
there has been an explosion of general purpose extension and scripting
languages (e.g., Python [6] and Elk [4]), one
language has had a dramatic increase in popularity and seems to have
become the de facto extension language. That language is
Tcl [5].
It is the author's opinion that the popularity of Tcl is primarily due
to the ease with which it can be embedded into C applications (its
interface is through a single C header file and a standard C library
archive file) and the ease with which it can be extended with new
primitive commands. The libscheme
library attempts to learn
from Tcl's success by making Scheme [3] available as a C
library and by providing simple ways to extend the language with new
procedures and syntax. While Scheme is not as convenient as Tcl in
the role of an interactive shell program, it has several advantages
over Tcl with respect to writing scripts:
In addition, libscheme
allows the application writer to extend
the interpreter with new data types that have the same standing as
built in types. It also provides a conservative garbage collector
that can be used by application and extension writers.