1. Purposes

  • Embedded into an application

  • Suitable for embedded platforms (i.e. non-desktop {OS,hardware})

2. Requirements

  • 3-clause BSD license

  • Basic R5RS conformance

  • Small footprint

  • Low memory consumption

  • Highly modular and customizable

  • Code readability to enable learning Scheme by implementation

  • Easily extensible by C

3. Code organization

  • Memory allocators

  • Exception and error handling

  • Storage Abstraction Layer

  • Continuation

  • Environment

  • Procedures and syntaxes

  • Reader

  • Writer

  • Multibyte character processing

  • Ports

4. Trade-offs

  • Strict form validation

  • Multibyte string processing

  • Function aggregation to share prolog/epilog code fragment

5. API and ABI

  • ABI incompatibility between configurations

  • SAL and ABI

  • Dynamic link

  • Static link

  • Writing an extension by C