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 using Git (http://git.or.cz/).  A copy of the
repository can be obtained using:

  git clone git://git.sv.gnu.org/guile-reader.git

Alternatively, the repository can be browsed online at:

  http://git.sv.gnu.org/gitweb/?p=guile-reader.git;a=summary

Happy hacking!


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

Guile-Reader is written for Guile 1.8.x, 2.0.x, 2.2.x and 3.0.x.  For
optimal performance, you may want to get GNU lightning 1.2c or later,
but not lightning 2.x, which is not supported yet.


Thanks in advance for your feedback!  :-)





Copyright 2005, 2006, 2007, 2008, 2015 Ludovic Courtès <ludo@gnu.org>

  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
  notice and this notice are preserved.

;;; Local Variables:
;;; mode: text
;;; coding: utf-8
;;; End:
