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
- Byte code or tree walker
- Full continuations support?
- Stack optimization (complicates tail calls!)
- Closure implementation
- Boxed values
- 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