mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-19 21:59:17 +02:00
Official chibi-scheme repository
Fixes http://code.google.com/p/chibi-scheme/issues/detail?id=5 Some non-opcode primitive functions may still need type checking. |
||
---|---|---|
include/chibi | ||
lib/srfi | ||
opt | ||
tests | ||
.hgignore | ||
debug.c | ||
eval.c | ||
gc.c | ||
init.scm | ||
main.c | ||
Makefile | ||
mkfile | ||
opcodes.c | ||
README | ||
sexp.c | ||
TODO | ||
VERSION |
Chibi-Scheme -------------- Minimal Scheme Implementation for use as an Extension Language http://synthcode.com/wiki/chibi-scheme/ Chibi-Scheme is a very small but mostly complete R5RS Scheme implementation using a reasonably fast custom VM. Chibi-Scheme tries as much as possible not to trade its small size by cutting corners, and provides full continuations, both low and high-level hygienic macros based on syntactic-closures, string ports and exceptions. Chibi-Scheme is written in highly portable C and supports multiple simultaneous VM instances to run. To build, just run "make". This will provide a shared library "libchibi-scheme", as well as a sample "chibi-scheme" command-line repl. The "chibi-scheme-static" make target builds an equivalent static executable. You can edit the file config.h for a number of settings, mostly disabling features to make the executable smaller. You can specify standard options directly as arguments to make, for example make CFLAGS=-Os to optimize for size, or make LDFLAGS=-L/usr/local/lib CPPFLAGS=-I/usr/local/include to compile against a library installed in /usr/local. By default Chibi uses a custom, precise, non-moving GC. You can link against the Boehm conservative GC by editing the config file, or directly from make with: make USE_BOEHM=1 See the file main.c for an example of using chibi-scheme as a library. The essential functions to remember are: sexp_make_context(NULL, NULL, NULL) returns a new context sexp_eval(context, expr) evaluates an s-expression sexp_eval_string(context, str) reads an s-expression from str and evaluates it