1 | == Overview |
---|
2 | |
---|
3 | '''CHICKEN is a compiler that translates Scheme source files into C''', which in |
---|
4 | turn can be fed to a C-compiler to generate a standalone executable. |
---|
5 | An interpreter is also available and can be used as |
---|
6 | a scripting environment or for testing programs before compilation. |
---|
7 | |
---|
8 | This package is distributed under the '''BSD license''' and as such is free |
---|
9 | to use and modify. |
---|
10 | |
---|
11 | The method of compilation and the design of the runtime-system follow |
---|
12 | closely Henry Baker's [[http://home.pipeline.com/~hbaker1/CheneyMTA.html|CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.]] paper and expose a number of interesting |
---|
13 | properties: |
---|
14 | |
---|
15 | * Consing (creation of data on the heap) is relatively inexpensive, because a generational garbage collection scheme is used, in which short-lived data structures are reclaimed extremely quickly. |
---|
16 | |
---|
17 | * Moreover, {{call-with-current-continuation}} is practically for free and CHICKEN does not suffer under any performance penalties if first-class continuations are used in complex ways. |
---|
18 | |
---|
19 | The generated C code is fully tail-recursive. |
---|
20 | |
---|
21 | === Features |
---|
22 | |
---|
23 | Some of the features supported by CHICKEN: |
---|
24 | |
---|
25 | * SRFIs 0, 1, 2, 4, 6, 8-19, 23, 25-31, 37-40, 42, 43, 45, 47, 55, 57, 60-63, 66, 69, 72, 78, 85, 95 and 98. |
---|
26 | * Lightweight threads based on first-class continuations |
---|
27 | * Pattern matching with Andrew Wright's {{match}} package |
---|
28 | * Record structures |
---|
29 | * Extended comment- and string-literal syntaxes |
---|
30 | * Libraries for regular expressions, string handling |
---|
31 | * UNIX system calls and extended data structures |
---|
32 | * Create interpreted or compiled shell scripts written in Scheme for UNIX or Windows |
---|
33 | * Compiled C files can be easily distributed |
---|
34 | * Allows the creation of fully self-contained statically linked executables |
---|
35 | * On systems that support it, compiled code can be loaded dynamically |
---|
36 | |
---|
37 | This manual is merely a reference for the CHICKEN system and assumes |
---|
38 | a working knowledge of Scheme. |
---|
39 | |
---|
40 | Next: [[Using the compiler]] |
---|
41 | |
---|
42 | Back to [[The User's Manual]] |
---|