Sun Sep 19 18:48:48 CEST 2010

Scheme implementation design space

It's actually a bit bigger that I thought.  Some issues, thinking
about space and time.

  * Memory representation:
     - Garbage collector type
     - Vectors or CONS cells
     - Integers, tagged or not?
     - Opaque objects and finalizers

  * Interpreter:
     - Byte code or tree walker
     - Full continuations support?
     - Stack optimization (complicates tail calls!)
     - Closure implementation
     - Boxed values

  * Compiler:
     - Self hosted compiler? (in case of byte code)
     - Macro expansion
     - Macro hygiene

The main ideas behind the libprim/SC interpreter are implementation
simplicity and memory usage.  The latter isn't so good because of:
     - Semisphere collector
     - 3 word CONS cells
     - No hash consing
     - Code as s-expr instead of byte code