Guile-Reader, an extensible, fast, reader framework for GNU Guile
=================================================================

Introduction
------------

The idea: provide an extensible, yet fast, reader for Guile, GNU's
Scheme interpreter library.  Guile currently provides limited
extensibility of its reader, by means of `read-hash-extend', for
instance, or `read-enable' and the likes.  Moreover, while this may not
always be desirable, those extension facilities have a global effect,
changing the behavior of the sole reader implementation available at
run-time.  This makes it impossible to have, for instance, one module
consider names starting with `:' as symbols, while another considers
them as keywords.

Extensions such as the read syntax for SRFI-4 numeric vectors had to be
added to Guile's built-in C reader.  Syntactic extensions that did not
appeal the majority of users, like Emacs-Lisp vectors, are #ifdef'd
within the reader code and are not available by default.  Moreover, some
extensions are incompatible with each other, such as the DSSSL keyword
syntax and the SCSH block comments.  In short the current reader syntax
is hardly extensible.

The point here is to be able to create a completely customizable Scheme
reader using basic building-blocks such as an R5RS string reader, an
S-exp reader, etc., or even user-defined readers.

In order to achieve performance equivalent (or better?) to Guile's C
hand-coded reader, guile-reader relies on GNU lightning to compile
readers to native code.  For compatibility, a lightning-free, slower
implementation is available for platforms not supported by lightning.


Availability
------------

Guile-reader is available under the GNU General Public License, version
2 or later, at your option (see file `COPYING').  It is hosted by
Savannah at:

  http://savannah.nongnu.org/projects/guile-reader/

If you want do discuss about it, do not hesitate to subscribe to the
`guile-reader-devel' mailing list from there.

Source code if managed by GNU Arch and is currently available in the
archives located at the following URL:

  http://arch.sv.gnu.org/archives/guile-reader/

In order to fetch source code from there, you may run the following
commands:

  $ tla register-archive http://arch.sv.gnu.org/archives/guile-reader/
  $ tla get guile-reader@sv.gnu.org/guile-reader--devo--0.3  \
        guile-reader

This will fetch the source and put it in the `guile-reader' directory.


Installation
------------

Guile-reader is written for Guile 1.8.x.  For optimal performance, you
may want to get GNU lightning 1.2b or later (on platforms supported by
GNU lightning).


Thanks in advance for your feedback!  :-)



February 2007.

Ludovic Courts <ludovic.courtes@laas.fr>.
