1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
# Guix Scheme Containers and Environments
Run Scheme implementations in Guix containers/environments, and package
libraries for them.
Supports Chibi, Foment, Sagittarius, Gauche, Loko, STKlos, TR7, Mosh,
Chez, and SKINT.
## Portable R6RS and R7RS Libraries
Some Scheme systems packaged here will read `R7RS_LIBRARY_PATH`
(or `R6RS_LIBRARY_PATH` for R6RS systems) to find paths for strictly
conforming R7RS (R6RS) libraries. To copy libraries to these pathes,
use the `portable-r7rs-build-system` (`portable-r6rs-build-system`).
On systems that support both R6RS and R7RS, the R6RS libraries will
take precedence (rationale: R6RS has more stuff).
## SRFIs and Portability Libraries
This channel packages some SRFIs for portable use. They are labeled
`srfi-M-rNrs`, where `M` is the number and `N` is the standard. The
SRFIs are packaged so that R7RS systems use `(srfi M)` and R6RS
systems use `(srfi :M)`. No claim is made to the portability of
`(srfi :M name)`, etc, unless made necessary by sublibraries.
* SRFI-1
* SRFI-8
* SRFI-9 (R6RS only)
* SRFI-128
* SRFI-227
None of these packages have any dependencies. This is because some
implementations already come with optimized versions of these SRFIs. For
instance, a system with built-in comparators doesn't need to pull in
the portable SRFI-128 implementation to use some other library that imports
SRFI-128.
The following portability libraries are also exported.
* `compatible-parameters`: Exports `(mcgoron compatible-parameters)` for
R6RS systems that exports either an SRFI-39 or R7RS parameter interface.
## Supported Implementations
### Chibi Scheme
* Package: `chibi-scheme-with-path`
* Path: `chibi-lib-dir`, `chibi-binlib-dir`
* Supports `R7RS_LIBRARY_PATH`
### Foment
* Package: `foment-with-path`
* Path: `foment-lib-dir`
* Supports `R7RS_LIBRARY_PATH`
The build script here will build [Foment](https://github.com/leftmike/foment).
The last release of Foment was a long time ago, so the build is for the
current HEAD at the time of writing (6089c3c).
### Sagittarius
* Package: `sagittarius-scheme-with-path`
* Path: `sagittarius-lib-dir`
* Supports `R7RS_LIBRARY_PATH`, `R6RS_LIBRARY_PATH`
### Gauche
* Package: `gauche-with-path`
* Pure Scheme: `gauche-pure-scheme-build-system`
TODO: explain gauche, add gauche build system
### Loko
* Package: `loko-scheme-with-path`
* Path: `loko-scheme-lib-dir`
* Supports `R7RS_LIBRARY_PATH`, `R6RS_LIBRARY_PATH`
### STKlos
* Package: `stklos-with-path`
* Path: `stklos-lib-dir`
* Supports `R7RS_LIBRARY_PATH`
TODO: loading bytecode
### TR7
* Package: `tr7-with-path`
* Path: `tr7-lib-dir`
* Supports `R7RS_LIBRARY_PATH`
TODO: extensions
### Mosh
* Package: `mosh-scheme-with-path`
* Path: `mosh-lib-dir`
* Supports `R6RS_LIBRARY_PATH`
### SKint
* Package: `skint-with-path`
* Path: `skint-lib-dir`
* Supports `R7RS_LIBRARY_PATH`
### Chez Scheme
* Package: `chez-scheme-with-path`
* Path: `chez-lib-dir`
* Supports `R6RS_LIBRARY_PATH`
TODO: heap files?
## Planned
Any R6RS/R7RS that has a path mechanism and that can run on a system
running Guix should be included.
### Maybe?
* Picrin (does not search the filesystem for libraries)
* Chicken, Cyclone, Gambit (compilers)
* The Javascipt ones
* Kawa (java)
* Racket, MIT-Scheme (dunno how they work)
* Ikarus
* Vicare (difficult to compile on modern systems)
|