doc: Release update.
[mes.git] / README
1                                                               -*- org -*-
2 Mes -- Maxwell Equations of Software
3
4 Mes aims to create full source bootstrapping for GuixSD: an entirely
5 source-based bootstrap path.  The target is to [have GuixSD] boostrap
6 from a minimal, easily inspectable binary --that should be readable as
7 source-- into something close to R6RS Scheme.
8
9 It currently consists of a mutual self-hosting [close to Guile-]
10 Scheme interpreter prototype in C and a Nyacc-based C compiler in
11 [Guile] Scheme.
12
13 The Scheme interpreter prototype (mes.c) has a Garbage Collector, a
14 library of loadable Scheme modules-- notably [[https://github.com/schemeway/lalr-scm][Dominique Boucher's LALR]],
15 [[https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html][Pre-R6RS portable syntax-case]] with R7RS ellipsis, [[http://www.nongnu.org/nyacc/][Matt Wette's Nyacc]]
16 and [[https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html][Guile's PEG]] --and test suite just barely enough to support a
17 simple REPL (repl.mes) and simple C-compiler (mescc.mes) that can
18 produce the second initial ELF binary from binary from mes.c, in only
19 about 2h30'.
20
21 Mes is inspired by The Maxwell Equations of Software: [[http://www.softwarepreservation.org/projects/LISP/book/LISP%25201.5%2520Programmers%2520Manual.pdf][LISP-1.5]] -- John
22 McCarthy page 13, [[https://www.gnu.org/software/guix/][GNU Guix's]] source/binary packaging transparency and
23 [[https://github.com/oriansj/stage0][Jeremiah Orians's stage0]] bootstrap project.
24
25 Mes is free software, it is distributed under the terms of the GNU
26 General Public Licence version 3 or later.  See the file COPYING.
27
28 * Get it
29
30    git clone https://gitlab.com/janneke/mes
31
32 * Build it (see INSTALL for full instructions)
33
34    ./configure
35    make all
36    make check
37
38 * REPL it
39
40    scripts/repl.mes
41
42 * Mescc compiler
43
44    scripts/mescc.mes doc/examples/main.c > a.out
45