mescc: Support open, read.
[mes.git] / README
diff --git a/README b/README
index 0ad3736ba7142892b8d3c26f5387725d11607e73..1bb0c6b9d9ad70c8f1754f5ed7debe29c58b668c 100644 (file)
--- a/README
+++ b/README
@@ -1,39 +1,57 @@
+                                                              -*- org -*-
 Mes -- Maxwell Equations of Software
 
-Mes is inspired by The Maxwell Equations of Software -- John McCarthy page 13
-http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
+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
+R6RS Scheme.
 
-Its aim is to have GuixSD boostrap from a minimal trusted binary into
-Scheme.  The strategy is to use OrianJs self-hosting hex assembler to
-write a minimal LISP called MES to bootstrap a full fledged Scheme,
-written in MES.
+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.
 
-Mes is free software, it is distributed unde the terms of the GNU
-General Public Licence version 3 or later.  See the file COPYING.
+It currently has an interpreter written in C (mes) with Garbage
+Collector (Jam Scraper), a library of loadable Scheme modules--
+notably [[https://github.com/schemeway/lalr-scm][Dominique Boucher's LALR]], [[https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html][Pre-R6RS portable syntax-case]] with
+R7RS ellipsis, [[http://www.nongnu.org/nyacc/][Nyacc]] 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 simple REPL (repl.mes) and a proof-of-concept
+C-compiler (mescc.mes) that produces an elf from the simplest of C
+files.
 
-Current targets.
+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.
 
-* make check
+Mes is free software, it is distributed under the terms of the GNU
+General Public Licence version 3 or later.  See the file COPYING.
 
-* C compiler
+* Get it
 
-   make mescc
-   make guile-mescc
+   git clone https://gitlab.com/janneke/mes
 
-from there, work on mescc.scm, main.c.
+* Build it (see INSTALL for full instructions)
 
-* Transition to syntax-if.scm (still using syntax-cond.scm)
+   ./configure
+   make all
+   make check
 
-* syntax-case using portable psyntax.pp
+* REPL it
 
-   make psyntax
+   scripts/repl.mes
 
-* syntax-case using define-macro
+* Mescc compiler
 
-   make syntax-case
-   make guile-syntax-case
+   scripts/mescc.mes doc/examples/main.c > a.out
 
-* PEG
+* Other
 
-   make peg
-   make guile-peg
+   make check
+   make mes-check
+   make paren
+   make mescc
+   scripts/nyacc-calc.mes
+   scripts/nyacc.mes
+
+   make guile-check
+   make guile-mescc
+   guile/nyacc-calc.scm
+   scripts/nyacc.scm