chibi-scheme - a tiny Scheme interpreter
chibi-scheme [-qQrRfTV] [-I path ] [-A path ] [-D
feature ] [-m module ] [-x module ] [-l file ] [-e
expr ] [-p expr ] [-t module.id ] [-d image-file ]
[-i image-file ] [--] [ script argument ... ]
chibi-scheme is a sample interactive Scheme interpreter for the
chibi-scheme library. It serves as an example of how to embed
chibi-scheme in applications, and can be useful on its own for writing
scripts and interactive development.
When script is given, the script will be loaded with
SRFI-22 semantics, calling the procedure main (if defined) with a
single parameter as a list of the command-line arguments beginning with the
script name. This works as expected with shell #! semantics.
Otherwise, if no script is given and no -e or -p options are given
an interactive repl is entered, reading, evaluating, then printing
expressions until EOF is reached. The repl provided is very minimal - if you
want readline completion you may want to wrap it with the rlwrap(1)
program. Signals aren't caught either - to enable handling keyboard
interrupts you can use the (chibi process) module. For a more sophisticated
REPL with readline support, signal handling, module management and smarter
read/write you may want to use the (chibi repl) module. This can be launched
automatically with: chibi-scheme -R .
For convenience the default language is the (scheme small) module,
which includes every library in the R7RS small standard, and transitively
some other dependencies. All of this together is actually quite large, so
for a more minimal startup language you'll want to use the -x module
option described below. To get a mostly R5RS-compatible language, use
chibi-scheme -xscheme.r5rs or to get just the core language used for
bootstrapping, use chibi-scheme -xchibi or its shortcut
chibi-scheme -q .
Space is optional between options and their arguments. Options without arguments
may not be chained together.
To reduce the need for shell escapes, options with module
arguments ( -m , -x and -R ) are written in a dot
notation, so that the module (foo bar) is written as foo.bar
.
- -V
- Prints the version information and exits.
- -q
- "Quick" load, shortcut for chibi-scheme -xchibi This is a
slightly different language from (scheme base), which may load faster, and
is guaranteed not to load any additional shared libraries.
- -Q
- Extra "quick" load, shortcut for chibi-scheme
-xchibi.primitive The resulting environment will only contain the core
syntactic forms and primitives coded in C. This is very fast and
guaranteed not to load any external files, but is also very limited.
- -r[main]
- Run the "main" procedure when the script finishes loading as in
SRFI-22.
- -R[module]
- Loads the given module and runs the "main" procedure it defines
(which need not be exported) with a single argument of the list of
command-line arguments as in SRFI-22. The name "main" can be
overridden with the -r option. [module] may be omitted, in which
case it defaults to chibi.repl. Thus chibi-scheme -R is the
recommended means to obtain the advanced REPL.
- -s
- Strict mode, escalating warnings to fatal errors.
- -f
- Change the reader to case-fold symbols as in R5RS.
- -T
- Disables tail-call optimization. This can be useful for debugging in some
cases, but also makes it very likely to overflow the stack.
- -hsize[/max_size]
- Specifies the initial size of the heap, in bytes, optionally followed by
the maximum size the heap can grow to. size can be any integer
value, optionally suffixed by "K", for kilobytes, "M"
for megabytes, or "G" for gigabytes. -h must be specified
before any options which load or evaluate Scheme code.
- -Ipath
- Inserts path on front of the load path list.
- -Apath
- Appends path to the load path list.
- -Dfeature
- Adds feature to the feature list, useful for cond-expanding
different library code.
- -mmodule
- -xmodule
- Imports module as though "(import module )" were
evaluated. If the -x version is used, then module replaces
the current environment instead of being added to it.
- -lfile
- Loads the Scheme source from the file file searched for in the
default load path.
- -eexpr
- Evaluates the Scheme expression expr.
- -pexpr
- Evaluates the Scheme expression expr then prints the result to
stdout.
- -tmodule.id
- Enables tracing for the given identifier id in the module
module.
- -dimage-file
- Dumps the current Scheme heap to image-file and exits. This feature
is still experimental.
- -iimage-file
- Loads the Scheme heap from image-file instead of compiling the init
file on the fly. This feature is still experimental.
- -b
- Makes stdio nonblocking (blocking by default). Only available when
lightweight threads are enabled.
- CHIBI_MODULE_PATH
- A colon separated list of directories to search for module files, inserted
before the system default load paths. chibi-scheme searches for modules in
directories in the following order:
-
directories included with the -I path option
-
directories included from CHIBI_MODULE_PATH
-
system directories
-
directories included with -A path option
-
If CHIBI_MODULE_PATH is unset, the directories
"./lib", and "." are searched in order. Set to empty
to only consider -I, system directories and -A.
- CHIBI_IGNORE_SYSTEM_PATH
- If set to anything but "0", system directories (as listed above)
are not included in the search paths.
Alex Shinn (alexshinn @ gmail . com)
More detailed information can be found in the manual included in doc/chibi.scrbl
included in the distribution.
The chibi-scheme home-page:
https://github.com/ashinn/chibi-scheme/