Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
An attempt at building a bootstrapped scheme
Scheme C Shell Other

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
.bs
clos
examples
slib
tests
.gitignore
Makefile
README.md
anaphoric.sch
boot.sch
bs-build.sch
bs-lib.sch
bs.sch
bsch.c
clojure-containers.sch
clos-repl.sch
clos.sch
compiler.sch
conditions.sch
ffi.c
ffi.h
ffi.sch
gc.c
gc.h
getopt.sch
hash-table.sch
hashtab.c
hashtab.h
image.sch
interp.c
interp.h
io.sch
jit.sch
lazy.sch
list.sch
math.sch
morphic.sch
ncurses.sch
padsfx.pl
pcre.sch
plot.sch
point-free.sch
pool.c
pool.h
pth.sch
queue.sch
random.sch
read.c
read.h
read.sch
readline.sch
run-tests.sch
save-image.sch
sdl.sch
socket.c
socket.h
socket.sch
srfi-18.sch
stdlib.sch
string.sch
sugar.sch
swank-image.sch
swank.sch
threads.sch
tlsf.c
tlsf.h
types.c
types.h
unittest.sch
vm.c
vm.h
wisp.sch

README.md

BrianScheme

This is a non-compliant implementation of the Scheme language.

The C code implements a simple s-expression reader/writer, an interpreter, garbage collection, foreign function interface, and a simple virtual machine for an internal bytecode format.

The SCH code implements a base library, a compiler from scheme to the bytecode format mentioned above, and a JIT assembler that utilizes libjit (accessed via the FFI system) to allow the creation of new primitive functions. Also implemented in SCH is the extensible reader, printer, and repl. The eventual goal is to write a bytecode -> assembly translator so that we can compile the full language down to the processor's machine code.

A non-compliant implementation of CLOS is also included and is used as the foundation for the extensible reader and printer.

BrianScheme also has the ability to save images of its current state as a file on disk. It can then restart at that state very quickly making it a suitable language for command line utilities.

You can read more about the implementation at these links:

The primary implementors maintain blogs at:

LICENSE:

Copyright 2012 Brian Taylor

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Something went wrong with that request. Please try again.