diff --git a/BOOTSTRAP b/BOOTSTRAP index 04716f8e..31ecc60f 100644 --- a/BOOTSTRAP +++ b/BOOTSTRAP @@ -83,7 +83,7 @@ be source. https://gitlab.com/janneke/mes -*** mes.c: a Scheme interpreter prototyped in C ~3000 Lines +*** mes.c: a Scheme interpreter in ~5,000LOC of simple C *** mescc: a C compiler written in Scheme (uses Nyacc C99 parser in Scheme) *** mes.M2: this Scheme interpreter in preprocessed M2 @@ -107,7 +107,7 @@ be source. ** have tcc-boot compile gnutools triplet: binutils-2.14, gcc-2.95.3, glibc-2.2.5. ** have tcc-boot's mes-tcc compile a fully functional tcc ** hex.0, hex.1, M0 -** M1, hex2_linker prototyped in C +** M1, hex2_linker in simple C ** M2-Planet is now self-hosting, written in M2 ** mes+mescc are mutual self-hosting ** patched tcc compiled with mes+mescc diff --git a/HACKING b/HACKING index abf86451..92a27890 100644 --- a/HACKING +++ b/HACKING @@ -95,6 +95,7 @@ mes.c. - add x86_64, replace GuixSD's bootstrap binaries for x86_64. - more architectures (does GuixSD require this, i.e. before 1.0?). ** DONE +*** 0.16.1 Mes now has info docs and installs ootb on Debian buster/testing. *** 0.16 Mes Lib C now bootstraps glibc-2.2.5, binutils-2.20.1, gcc-4.1.0. *** 0.15: MesCC now has a libc+gnu that supports compiling binutils-2.14, gcc-2.95.3 and glibc-2.2.5. *** 0.14: Mes+MesCC now compiles a slightly patched self-hosting tcc. diff --git a/INSTALL b/INSTALL index c8fa2247..c79ddaf9 100644 --- a/INSTALL +++ b/INSTALL @@ -17,7 +17,7 @@ similar way. guix environment --system=i686-linux -l guix.scm #32 bit only *** Other GNU/Linux - - [[https://github.com/oriansj/mescc-tools][mescc-tools]], 0.4 is known to work. + - [[https://github.com/oriansj/mescc-tools][mescc-tools]], 0.5 is known to work. - [[https://savannah.gnu.org/projects/nyacc][Nyacc]], [[https://gitlab.com/janneke/nyacc][patched Nyacc]] 0.80.42 is known to work. - GNU Gcc, 4.9.3 is known to work. - GNU Guile, version 2.0.12 or is know to work. @@ -42,13 +42,13 @@ similar way. * Bootstrap build -The bootstrap build is being prototyped in GuixSD, see +The bootstrap build is being developed in GuixSD, see https://gitlab.com/janneke/guix/blob/wip-bootstrap/gnu/packages/mes.scm ** Prerequisites - - [[https://github.com/oriansj/mescc-tools][mescc-tools]], 0.4 is known to work. + - [[https://github.com/oriansj/mescc-tools][mescc-tools]], 0.5 is known to work. - [[https://savannah.gnu.org/projects/nyacc][Nyacc]], [[https://gitlab.com/janneke/nyacc][patched Nyacc]] 0.80.42 is known to work. - - [[https://github.com/oriansj/mescc-tools][mes-seed]], 0.15 is known to work. + - [[https://gitlab.com/janneke/mes-seed][mes-seed]], 0.16 is known to work. ** Build it diff --git a/NEWS b/NEWS index 136f28e8..c7b88ad4 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,13 @@ Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen Please send Mes bug reports to janneke@gnu.org. +* Changes in 0.16.1 since 0.16 +** Core +*** Mes now builds out of the box on Debian buster/testing. +*** Mes now comes with a generic build recipe: build-aux/setup-mes.sh. +*** Mes now comes with INFO documentation. +** MesCC +*** MesCC now exits if spawning BLOOD_ELF, M1, or HEX2 fails. * Changes in 0.16 since 0.15 ** Core *** Support building with tcc, including Mes Lib C in-line assembly. diff --git a/README b/README index d00d025f..472c9441 100644 --- a/README +++ b/README @@ -1,12 +1,15 @@ -*- org -*- Mes -- Maxwell Equations of Software -[[https://gitlab.com/janneke/mes][Mes]] aims to help create full source bootstrapping for [[https://www.gnu.org/software/guix][GuixSD]] as part -of the [[http://bootstrappable.org][bootstrappable builds]] effort. +[[http://gitlab.comog/janneke/mes][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 -prototype written in C and a Nyacc-based C compiler written in Scheme. -This C prototype is [[https://github.com/oriansj/mes-m2][being simplified]] to be transpiled by [[https://github.com/oriansj/m2-planet][M2-Planet]]. +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]], @@ -14,7 +17,7 @@ Pre-R6RS [[https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html][p 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 [[https://gitlab.com/janneke/tinycc][lightly patched TinyCC]] that is +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. @@ -28,7 +31,7 @@ General Public Licence version 3 or later. See the file COPYING. * Get it - git clone https://gitlab.com/janneke/mes + git clone http://gitlab.com/janneke/mes * Build it (see INSTALL for full instructions) @@ -50,7 +53,7 @@ General Public Licence version 3 or later. See the file COPYING. Please send Mes bug reports to janneke@gnu.org. -[0] https://gitlab.com/janneke/mes +[0] http://gitlab.com/janneke/mes [1] https://www.gnu.org/software/guix [2] http://bootstrappable.org [3] https://github.com/oriansj/mes-m2 @@ -59,6 +62,6 @@ General Public Licence version 3 or later. See the file COPYING. [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] https://gitlab.com/janneke/tinycc +[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 diff --git a/doc/images/gcc-mesboot-graph.png b/doc/images/gcc-mesboot-graph.png index d29ac476..79ee36d3 100644 Binary files a/doc/images/gcc-mesboot-graph.png and b/doc/images/gcc-mesboot-graph.png differ diff --git a/doc/mes.texi b/doc/mes.texi index abd79f5f..7ce739d4 100644 --- a/doc/mes.texi +++ b/doc/mes.texi @@ -501,14 +501,15 @@ binutils-source + binutils0 + gcc + glibc => binutils gcc-source + binutils + gcc-core + glibc => gcc @end verbatim -@c FIXME: ./pre-inst-env guix graph --type=references gcc-mesboot@4.1.0 -@c | dot -T png > gcc-mesboot-4.1.0.png +@c This graph is generated from wip-bootstrap, doing: -@c Using anything else (e.g. --type=package, --type=bag) produces an -@c unreadable image with *many* duplicates. +@c sed -i s,package-with-bootstrap-guile,identity, gnu/packages/{commencement,mes}.scm -Here's a generated dependency diagram to give you impression, it is -not complete or correct. +@c ./pre-inst-env guix graph gcc-mesboot | dot -T png > +@c gcc-mesboot-graph.png + +Here's a generated dependency diagram to give you impression, it is not +complete or correct. @image{images/gcc-mesboot-graph,2in,,Reference graph of the gcc-mesboot} diff --git a/scaffold/tests/23-pointer.c b/scaffold/tests/23-pointer.c index 4c446a28..32a1905d 100644 --- a/scaffold/tests/23-pointer.c +++ b/scaffold/tests/23-pointer.c @@ -1,6 +1,6 @@ /* -*-comment-start: "//";comment-end:""-*- * Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan Nieuwenhuizen + * Copyright © 2017 Jan (janneke) Nieuwenhuizen * * This file is part of Mes. *