Elk Release 2.2
---------------

This is release 2.2 of Elk, the Extension Language Kit.

Elk is a Scheme interpreter intended to be used as a general, reusable
extension language subsystem for integration into existing and future
applications.  Elk can also be used as a stand-alone implementation of
the Scheme programming language.

One purpose of the Elk project is to end the recent proliferation of
mutually incompatible Lisp-like extension languages.  Instead of
inventing and implementing yet another extension language, application
programmers can integrate Elk into their application to make it
extensible and highly customizable.

The Elk project was started in 1987 to support ISOTEXT, an ODA-based
document system (a WYSIWYG editor) that is being developed at the
Technical University of Berlin.  Elk has been successfully demonstrated
as the extension language kernel of ISOTEXT, e.g. at the Hanover Fair 1989.

We feel that Scheme is better suited as a general extension language
than other Lisp dialects:  it is sufficiently small to not dwarf the
application it serves and to be fully understood with acceptable
effort; it is orthogonal and well-defined.  In addition, Scheme has
been recognized to be mature enough for national and international
standardization (IEEE P1178, ISO/IEC JTC1/SC22/WG16).

The Elk Scheme implementation is R^4RS and IEEE Std 1178 conforming.

Elk supports several additional language features to increase its
usability as an extension language, among them dynamic, incremental
loading of object files and `freezing' of a fully customized
application into a new executable file (`dump').

Other additional features of the Scheme implementation are:
      
      o  a simple macro facility
      o  environments as first-class objects
      o  dynamic-wind, fluid-let
      o  autoloading, provide/require

The current release of Elk includes several dynamically-loadable
extensions, among them interfaces to the X11 Xlib and to the application
programmer interface of the Xt intrinsics, interfaces to the Athena and
OSF/Motif widget sets, a UNIX extension, a record extension, and an
arbritrary-length bitstring extension.

As an alternative to the stop-and-copy garbage collector provided with
earlier versions of Elk, the Scheme interpreter now supports a
generational, incremental garbage collector.  The generational garbage
collector is more efficient and thus reduces the time the application
is disrupted by a garbage collection.  On platforms supporting advanced
memory management, the garbage collector can be switched to
`incremental' mode, further reducing wait times.

--
Oliver Laumann, Technical University of Berlin, Germany
<net@cs.tu-berlin.de>
