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