doc: Initial version.
[mes.git] / doc / GNU-EVAL-APPLY
1 * General Information
2 ** Do you agree to follow GNU policies?
3
4 Yes, of course.
5
6 ** Package name and version:
7
8 Mes 0.16
9
10 ** Author Full Name <Email>:
11
12 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
13
14 ** URL to package home page (if any): https://gitlab.com/janneke/mes
15
16 I'm happy to move to savannah when Mes becomes a GNU package.
17
18 ** URL to source tarball:
19
20 https://gitlab.com/janneke/mes/-/archive/v0.16/mes-0.16.tar.gz
21
22 or:  git clone https://gitlab.com/janneke/mes
23
24 ** Brief description of the package:
25
26 Mes aims to help create full source bootstrapping for GuixSD as part of
27 the bootstrappable builds effort (See https://bootstrappable.org/).
28
29 It currently consists of a mutual self-hosting Scheme interpreter
30 prototype written in C and a Nyacc-based C compiler written in Scheme.
31 This C prototype is being simplified to be transpiled by M2-Planet.
32
33 Mes+MesCC can compile an only lighty patched TinyCC that is
34 self-hosting.  Using this tcc and the Mes C library we now have a
35 reduced-binary-seed bootstrap for the gnutools triplet: glibc-2.2.5,
36 binutils-2.20.1, gcc-4.1.0.
37
38 * Code
39 ** Dependencies:
40
41 Mes can be built as a regular package, or as part of the full source
42 (currently: reduced binary seed) bootstrap process.
43
44 *** Regular build
45
46   - https://github.com/mescc-tools, 0.5 is known to work.
47   - https://savannah.gnu.org/projects/nyacc, 0.80.42 is known to work.
48   - GNU Gcc, 4.9.3 is known to work.
49   - GNU Guile, version 2.0.12 or is know to work.
50   - SH, /bin/sh, GNU Bash 4.3 is known to work.
51   - GNU coreutils
52   - sed, GNU sed 4.2 is known to work.
53   - git, 2.10 is known to work.
54   - Perl, 5.22 is known to work.
55
56 *** Bootstrap build
57
58   - https://github.com/oriansj/mescc-tools, 0.5 is known to work.
59   - https://savannah.gnu.org/projects/nyacc, 0.80.42 is known to work.
60   - https://gitlab.com/janneke/mes-seed, 0.16 is known to work.
61
62 ** Configuration, building, installation:
63
64 *** Guix build, install
65
66     guix build mes, guix package --install mes
67
68 *** Regular build
69
70     ./configure; make; make check; make install
71
72 *** Bootstrap build
73
74     <set env vars>
75     sh build.sh
76     sh check.sh
77     sh install.sh
78
79 ** Documentation:
80
81 Mes does not yet have any documentation other than AUTHORS, HACKING,
82 INSTALL, NEWS, README.  When it does, it will be in Texinfo: I live in
83 Emacs.  I have initiated the GNU LilyPond documentation and website,
84 which are written in texinfo.
85
86 ** Internationalization:
87
88 Mes does not have Internationalization.  As it's an early bootstrap
89 package, it's unsure if it will ever get that.  I do have experience
90 with adding Internationalization to GNU LilyPond.
91
92 ** Accessibility:
93
94 None.
95
96 ** Security:
97
98 Mes will be used as a critical link in our GNU bootstrapping chain.
99 It is essential for Mes to get a proper review before it is put in
100 place.
101
102 * Licensing:
103
104 GNU GPL 3, or later.
105
106 * Similar free software projects:
107
108 There are similarities with GNU Guile and to a lesser extent also with
109 MIT/GNU Scheme and SCM; in fact Mes' scheme tries to be compatible with
110 Guile Scheme.  GNU Guile is about 30x faster than Mes.
111
112 The main difference is that mes.c is ~5,000LOC of very simple C and can
113 can be bootstrapped almost entirely from source, without any binary
114 seed.  Currently, it needs a ~1MB ASSCI seed.
115
116 Guile is ~100,000LOC of full-blown C, not counting its dependencies
117 such as libgc.
118
119 Another difference with regular Scheme implementations, is that Mes does
120 not strive for RXRS compliance, instead it strives for minimalism and
121 Guile compatibility.
122
123 If in doubt, please contact the GuixSD or Guile maintainers.
124
125 * Any other information, comments, or questions:
126
127 I am an original author of GNU LilyPond and current GuixSD developer.  I
128 have regular discussions about Mes and GuixSD with GuixSD and Guile
129 maintainers.
130
131 Mes currently targets only x86-linux, I would like some help to look at
132 other architectures and esp. at targeting the Hurd.
133
134 Greetings,
135 janneke