Projects : gscm : gscm_genesis
1 | About |
2 | ----- |
3 | |
4 | This is Gales Scheme: a Scheme interpreter for Unix striving for simplicity, soundness, minimal artificial restrictions, and R5RS compliance with strict error checking. |
5 | |
6 | Written by Jacob Welsh for JWRD Computing. |
7 | |
8 | Prerequisites |
9 | ------------- |
10 | |
11 | gcc, targetting an x86_64 POSIX environment. Linux and OpenBSD are known to work. Other ISAs are supportable in principle but there's presently some assembly math code lacking portable equivalent. |
12 | |
13 | Installation |
14 | ------------ |
15 | |
16 | This software sheds some historical Unix conventions in favor of Bernstein's /package scheme ( http://cr.yp.to/slashpackage.html ), which I find meshes fairly well with the ideas of V. If this is your first time using it, you may need to create the /package directory and add /command to your shell's PATH variable. |
17 | |
18 | 1. Press or otherwise install the tree at the path: |
19 | |
20 | /package/gscm-0.40.3 |
21 | |
22 | The installation path is not configurable. This amounts to a claim on the global namespace, as command names always do. People and programs can count on finding components at known paths if they are to be found at all, as surely as with /bin/sh. This doesn't mean the files must physically exist under /package; for example, a symlink from there could ease working on the code as a non-root user. |
23 | |
24 | 2. From the above directory, run (as root): |
25 | |
26 | sh package/install |
27 | |
28 | 3. Run the test suite if you like: |
29 | |
30 | sh package/check |
31 | |
32 | Known failures at present include, from tests/numbers.scm: |
33 | |
34 | (fail inexact-read-precision) : float formatting and parsing algorithms are imprecise. |
35 | (fail 1 1 expt13) : (expt 1 -1) returns an inexact (float) result when it could be exact. |
36 | |
37 | From tests/semantic-bad.scm: |
38 | |
39 | (fail unary-add-type bad-type) |
40 | (fail unary-mul-type bad-type) : the single-argument passthrough base case for + and * doesn't bother checking for numbers. |
41 | |
42 | Usage notes |
43 | ----------- |
44 | |
45 | See "gscm -h" for CLI options. |
46 | |
47 | The main shortfalls with respect to R5RS are the macro language and advanced numeric types (rational and complex). Arbitrary precision (bignum) integer arithmetic is supported. |
48 | |
49 | A number of extensions are provided including system interface, sockets, and fixnum arithmetic; see doc/extensions.txt for (incomplete) details. |
50 | |
51 | Error recovery, debugging, and concurrency support are known weaknesses (no help from the standard here). |