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