-*- org -*- #+TITLE: About GNU Mes Copyright © 2016, 2017,2018 Jan (janneke) Nieuwenhuizen Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. GNU Mes --- Maxwell Equations of Software [[https://www.gnu.org/software/mes][GNU Mes]] aims to help create full source bootstrapping for GNU/Linux distributions such as [[https://www.gnu.org/software/guix][GuixSD]] as part of the [[http://bootstrappable.org][bootstrappable builds]] effort. It currently consists of a mutual self-hosting Scheme interpreter written in ~5,000 LOC of simple C and a Nyacc-based C compiler written in Scheme. This mes.c is [[https://github.com/oriansj/mes-m2][being simplified]] to be transpiled by [[https://github.com/oriansj/m2-planet][M2-Planet]]. The Scheme interpreter prototype (mes.c) has a Garbage Collector, a library of loadable Scheme modules-- notably Dominique Boucher's [[https://github.com/schemeway/lalr-scm][LALR]], Pre-R6RS [[https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html][portable syntax-case]] with R7RS ellipsis, Matt Wette's [[https://www.nongnu.org/nyacc][Nyacc]], Guile's [[https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html][PEG]] --and test suite just barely enough to support a simple REPL and simple C-compiler: MesCC. Mes+MesCC can compile an only [[http://gitlab.com/janneke/tinycc][lightly patched TinyCC]] that is self-hosting. Using this tcc and the Mes C library we now have a reduced-binary-seed bootstrap for the gnutools triplet: glibc-2.2.5, binutils-2.20.1, gcc-4.1.0. GNU Mes is inspired by The Maxwell Equations of Software: [[http://www.softwarepreservation.org/projects/LISP/book/LISP%2525201.5%252520Programmers%252520Manual.pdf][LISP-1.5]] -- John McCarthy page 13, GNU Guix's source/binary packaging transparency and Jeremiah Orians's [[https://github.com/oriansj/stage0][stage0]] ~500 byte self-hosting hex assembler. Mes is free software, it is distributed under the terms of the GNU General Public Licence version 3 or later. See the file COPYING. * Get it git clone [[git://git.savannah.gnu.org][git://git.savannah.gnu.org/mes.git]] * Build it (see INSTALL for full instructions) ./configure make all make check * REPL it src/mes.gcc # default (64 bit) gcc-compiled src/mes.mlibc-gcc # 32 bit, gcc -nostdlib src/mes # 32 bit, bootstrapped, mes.M1+MesCC-compiled * MesCC compiler scripts/mescc -c scaffold/main.c * Bugs Please send Mes bug reports to guix-devel@gnu.org. [0] https://www.gnu.org/software/mes [1] https://www.gnu.org/software/guix [2] http://bootstrappable.org [3] https://github.com/oriansj/mes-m2 [4] https://github.com/oriansj/m2-planet [5] https://github.com/schemeway/lalr-scm [6] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html [7] https://www.nongnu.org/nyacc [8] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html [9] http://gitlab.com/janneke/tinycc [10] http://www.softwarepreservation.org/projects/LISP/book/LISP%25201.5%2520Programmers%2520Manual.pdf [11] https://github.com/oriansj/stage0