2016-10-15 09:54:24 +00:00
-*- org -*-
2016-05-15 11:41:40 +00:00
Mes -- Maxwell Equations of Software
2016-10-15 09:54:24 +00:00
Mes aims to create an entirely source-based bootstrapping path. The
target is to [have GuixSD] boostrap from a minimal, easily inspectable
binary --that should be readable as source-- into something close to
2016-11-20 20:45:12 +00:00
R6RS Scheme.
2016-05-15 11:41:40 +00:00
2016-10-15 09:54:24 +00:00
As bootstrapping is presumably easiest and probably most fun with
Scheme, the next step for Mes is mescc: a C compiler/linker to
boostrap into GNU Gcc and GNU Guile, possibly via Tiny-CC.
2016-12-13 06:14:59 +00:00
It currently has an interpreter written in C (mes) with Garbage
Collector (Jam Scraper), a library of loadable Scheme modules with
test suite just barely enough to support a simple REPL (repl.mes) and
a proof-of-concept c-compiler (mescc.mes) that produces an elf from
the simplest of C files.
2016-10-15 09:54:24 +00:00
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
McCarthy page 13.
2016-05-15 11:41:40 +00:00
2016-12-13 06:14:59 +00:00
Mes is free software, it is distributed under the terms of the GNU
2016-05-15 11:41:40 +00:00
General Public Licence version 3 or later. See the file COPYING.
2016-09-25 10:50:00 +00:00
2016-10-15 09:54:24 +00:00
* Get it
2016-09-25 10:50:00 +00:00
2016-10-15 09:54:24 +00:00
git clone https://gitlab.com/janneke/mes
2016-10-10 21:24:44 +00:00
2016-10-15 09:54:24 +00:00
* Build it (see INSTALL for full instructions)
2016-09-25 10:50:00 +00:00
2016-10-15 09:54:24 +00:00
./configure
make all
make check
2016-09-25 10:50:00 +00:00
2016-10-15 09:54:24 +00:00
* REPL it
2016-09-25 10:50:00 +00:00
2016-10-15 09:54:24 +00:00
scripts/repl.mes
2016-09-25 10:50:00 +00:00
2016-10-15 09:54:24 +00:00
* Mescc compiler
2016-09-25 10:50:00 +00:00
2016-12-10 21:47:13 +00:00
scripts/mescc.mes doc/examples/main.c > a.out
* Other
make check
make guile-check
make mes-check
make paren
make mescc