Shellac

A library for creating read-eval-print shells

Maintainer: robdockins AT fastmail DOT fm
Current Version: 0.9.1
Current Release Date: November 27, 2007
Homepage: http://www.cs.princeton.edu/~rdockins/shellac/home/
Darcs repos: http://www.cs.princeton.edu/~rdockins/shellac/
http://www.cs.princeton.edu/~rdockins/shellac-readline/
http://www.cs.princeton.edu/~rdockins/shellac-editline/
http://www.cs.princeton.edu/~rdockins/shellac-compatline/
Hackage Shellac Shellac-readline Shellac-editline Shellac-compatline
API Documentation Shellac Shellac-readline Shellac-editline Shellac-compatline

About Shellac

Shellac is a framework for building read-eval-print style shells. Shells are created by declaratively defining a set of shell commands and an evaluation function. Shellac supports multiple shell backends, including a 'basic' backend which uses only Haskell IO primitives and a full featured 'readline' backend based on the the Haskell readline bindings found in the standard libraries.

This library attempts to allow users to write shells in a declarative way and still enjoy the advanced features that may be available from a powerful line editing package like readline.

License

Shellac is available under a BSD3 license. See the LICENSE file for details.

Be aware, however, that the GNU readline library itself is licensed under the GPL. If you wish to use the readline bindings, your project will need to be GPL compatible. Also note that the "compatline" backend may be compiled against readline depending on the configuration of the target machine. Your project should be GPL compatible if you use the compatline backend!

Go to the readline home page for more information about the readline library.

About portability

Currently, Shellac is GHC only. The 0.5 release made significant efforts toward portability by eliminating dependencies on the GHC specific features GADTs and STM. However, it still requires existential types, multi-parameter type classes, functional dependencies, preemptive concurrency support and the FFI. Currently no Haskell implementation other than GHC supports all these features.