What is Spells?

Spells stands for Spell's a Portability Environment Library for Lots of Schemes, which is a collection of R6RS libraries providing features not already provided by R6RS. See below for a list of libraries that are part of Spells. Note that the R6RS version of Spells is a recent reincarnation of it, the old (R5RS) Spells has been abandoned.

While you can use Spells "on its own" on a supported implementation, by creating appropriate symlinks so your implementation can find the library files, there is a companion project, called SPE, which makes this a bit easier -- again, the old (R5RS) SPE, which created modules for the target implementations module system, has been abandoned. The R6RS incarnation of SPE is much more lightweight, basically a shell script and a bit of Scheme code that handles the symlinking and environment-variable tweaking for you.


Spells has been tested on Ikarus, Ypsilon and PLTScheme?. It currently provides the following libraries, beyond ones that just alias SRFIs, or implement features readily coded using only R6RS functionality:

Other SPE systems

The following software is available as SPE "system", which means you can just grab (the SPE version of) it and place it in the "systems" directory of your SPE checkout, run ./scripts/launch <impl> symlink, and can fire up a repl using ./scripts/launch <impl>, where all the libraries provided by the SPE systems you placed intpo the "systems" directory are available via R6RS's 'import' (Ikarus, Ypsilon) or 'require' (PLT Scheme).


Spells is developed on Gna!. See its project page. The source code archive is stored in a darcs repository at http://download.gna.org/spells/darcs/r6rs/spells. Other SPE systems can be found at http://download.gna.org/spells/darcs/r6rs.