doc: Release udpate.

* BOOTSTRAP: Update.
* HACKING: Update.
* NEWS: Update.
* README: Update.
* doc/ANNOUNCE-0.15: New file.
This commit is contained in:
Jan Nieuwenhuizen 2018-05-23 22:48:00 +02:00
parent b6b93f9f19
commit 25651c6d51
No known key found for this signature in database
GPG key ID: F3C1A0D9C1D65273
6 changed files with 167 additions and 20 deletions

View file

@ -92,7 +92,9 @@ be source.
https://gitlab.com/janneke/tinycc https://gitlab.com/janneke/tinycc
* TODO * TODO
** have bootstrapped tcc compile gcc-4.7 ** upstream mes-boot to GuixSD.
** add full source gcc-4.7 package build.
** replace GuixSD bootstrap for x86.
** remove or upstream patches from tcc-boot ** remove or upstream patches from tcc-boot
** prepare src/mes.c for M2-Planet transpiler. ** prepare src/mes.c for M2-Planet transpiler.
** fix bootstrap-loops: (Nyacc?, mes.M2, psyntax.pp?) ** fix bootstrap-loops: (Nyacc?, mes.M2, psyntax.pp?)
@ -101,6 +103,7 @@ be source.
** x86_64, arm, the Hurd ** x86_64, arm, the Hurd
* DONE * DONE
** 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 ** have tcc-boot's mes-tcc compile a fully functional tcc
** hex.0, hex.1, M0 ** hex.0, hex.1, M0
** M1, hex2_linker prototyped in C ** M1, hex2_linker prototyped in C

16
HACKING
View file

@ -57,14 +57,16 @@ mes.c.
* ROADMAP * ROADMAP
** TODO ** TODO
*** release 0.x, unsorted *** release 0.x, unsorted
- mes-tcc: have bootstrapped tcc compile gcc-4.7. - upstream mes-boot to GuixSD.
- add full source gcc-4.7 package build.
- replace GuixSD bootstrap for x86.
- tcc: remove or upstream patches from tcc-boot - tcc: remove or upstream patches from tcc-boot
- mes: prepare src/mes.c for M2-Planet transpiler. - mes: prepare src/mes.c for M2-Planet transpiler.
- mes: real module support, bonus for supporting Guile's define-module/define-public syntax. - mes: real module support, bonus for supporting Guile's define-module/define-public syntax.
- mes: produce functional mes from mes.M1 transpiled by M2-Planet. - mes: produce functional mes from mes.M1 transpiled by M2-Planet.
- mes: we're a full Scheme now, drop .MES prefix, use .SCM. - mes: we're a full Scheme now, drop .MES suffix, use .SCM.
+ find a way to fix foo.mes/foo.scm trickery (full Guile-like module support?) + find a way to fix foo.mes/foo.scm trickery (full Guile-like module support?)
+ how about setting `guile' or even `guile-2' cond-expand features + how about setting `guile' or even `guile-2' cond-expand features
for external libraries (Nyacc) we look like Guile/Guile-2 for external libraries (Nyacc) we look like Guile/Guile-2
@ -89,6 +91,7 @@ mes.c.
- add x86_64, replace GuixSD's bootstrap binaries for x86_64. - add x86_64, replace GuixSD's bootstrap binaries for x86_64.
- more architectures? - more architectures?
** DONE ** DONE
*** 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. *** 0.14: Mes+MesCC now compiles a slightly patched self-hosting tcc.
*** 0.13: Mes+MesCC now compiles a modified, functional tcc.c (~25,000LOC) in 1h30'. *** 0.13: Mes+MesCC now compiles a modified, functional tcc.c (~25,000LOC) in 1h30'.
*** 0.12: Mes+MesCC now compiles mes.c (~3000LOC) in ~4min. *** 0.12: Mes+MesCC now compiles mes.c (~3000LOC) in ~4min.
@ -110,7 +113,7 @@ eenough to work on compiling tinycc's tcc.c albeit a somewhat modified version.
* DEBUG * DEBUG
MES_DEBUG=<level> mes MES_DEBUG=<level> mes
** Levels ** Levels
1) Informational: 1) Informational:
- MODULEDIR - MODULEDIR
- included SCM modules and sources - included SCM modules and sources
- result of program - result of program
@ -159,7 +162,7 @@ neat, Lisp/Scheme, bootstrapping and trusted binaries are probably not
in scope as there is no mention of such things; only ML is mentioned in scope as there is no mention of such things; only ML is mentioned
while Guile is used for bootstrapping. while Guile is used for bootstrapping.
* Assorted ideas and info * Assorted ideas and info
** Using GDB on assembly/a.out ** Using GDB on assembly/a.out
info registers info registers
p/x $eax p/x $eax
@ -186,7 +189,7 @@ out/i686-unknown-linux-gnu-mes --dump < module/mes/read-0.mes > module/mes/read-
** SC - c as s-expressions ** SC - c as s-expressions
sc: http://sph.mn/content/3d3 sc: http://sph.mn/content/3d3
** RNRS ** RNRS
*** [[http://www.scheme-reports.org/][Scheme Reports]] *** [[http://www.scheme-reports.org/][Scheme Reports]]
*** [[ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-349.pdf][Scheme - Report on Scheme]] *** [[ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-349.pdf][Scheme - Report on Scheme]]
*** [[ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-452.pdf][RRS - Revised Report on Scheme]] *** [[ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-452.pdf][RRS - Revised Report on Scheme]]
@ -237,4 +240,3 @@ https://miyuki.github.io/2017/10/04/gcc-archaeology-1.html
** rain1's Bootstrapping Wiki: https://bootstrapping.miraheze.org/wiki/Main_Page ** rain1's Bootstrapping Wiki: https://bootstrapping.miraheze.org/wiki/Main_Page
** rain1's hex86 ** rain1's hex86
https://notabug.org/rain1/hex86/src/master/tests/hex0b3.hex86 https://notabug.org/rain1/hex86/src/master/tests/hex0b3.hex86

34
NEWS
View file

@ -10,6 +10,40 @@ Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
Please send Mes bug reports to janneke@gnu.org. Please send Mes bug reports to janneke@gnu.org.
* Changes in 0.15 since 0.14
** Core
*** Support fork, exec, waitpid.
*** Boot-0 loading has been refactored.
*** MesCC now has out of the box Geiser support.
** Language
*** 2 new functions
drop, drop-right.
** MesCC
*** MesCC and Mes Lib C can now build binutils-2.30, gcc-2.95.3 and glibc-2.2.5.
*** MesCC now provides dummy crti.o, crtn.o so that tcc needs not be patched for those.
*** Mes Lib C now supports compiling glibc-2.2.25.
*** Mes Lib C now supports compiling gcc-2.95.3
*** Mes Lib C now supports compiling binutils-2.30.
*** Mes Lib C now supports compiling m4-1.4.
*** Mes Lib C has been split into archs: gcc, x86-mes-gcc and x86-mes.
*** MesCC now has a posixy command line interface.
**** 70 new functions
abs, access, alarm, alloca, atexit, atol, bcmp, bcopy, brk, bzero,
chmod, clearerr, close, dup, dup2, execve, fabs, fcntl, fdgets, feof,
fgets, fileno, fork, freopen, fscanf, fstat, fsync, getcwd, getgid,
getpid, getrusage, getuid, index, ioctl, isalnum, isalpha, isascii,
iscntrl, isprint, ispunct, kill, link, lseek, lstat, mkdir, mktemp,
nanosleep, open, perror, pipe, raise, read, rename, rindex, rmdir,
sbrk, sbrk, setitimer, signal, sleep, stat, strcspn, strdup, strerror,
strncat, strpbrk, strspn, unlink, unsetenv, waitpid.
**** 23 new stubs
abort, atof, bsearch, bsearch, chown, ctime, fpurge, freadahead,
frexp, getpwnam, gmtime, mbstowcs, pclose, popen, rewind, setbuf,
sigsetmask, strftime, sys_siglist, system, times, umask, utime.
**** 10 new C tests
51-strcmp.c, 70-printf.c, 87-sscanf.c, 90-strpbrk.c, 91-fseek.c,
92-stat.c, 93-fread-fwrite.c, 94-unsetenv.c, 95-signal.c, 96-strto.c.
* Changes in 0.14 since 0.13 * Changes in 0.14 since 0.13
** Core ** Core
*** Bootstrapped Mes+MesCC now compiles a tcc that is self-hosting and only slightly patched. *** Bootstrapped Mes+MesCC now compiles a tcc that is self-hosting and only slightly patched.

8
README
View file

@ -15,7 +15,8 @@ Guile's [[https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.
REPL and simple C-compiler: MesCC. REPL and simple C-compiler: MesCC.
Mes+MesCC can compile a only [[https://gitlab.com/janneke/tinycc][lightly modified TinyCC]] that is Mes+MesCC can compile a only [[https://gitlab.com/janneke/tinycc][lightly modified TinyCC]] that is
self-hosting. A GNU Ccc-compiled tcc is [[https://lists.gnu.org/archive/html/tinycc-devel/2017-05/msg00103.html][known]] to compile GCC. self-hosting. Using the Mes C library, this tcc can now build the
gnutools triplet: binutils-2.14, gcc-2.95.3, glibc-2.2.5.
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 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 McCarthy page 13, GNU Guix's source/binary packaging transparency and
@ -30,9 +31,8 @@ Jeremiah Orians's stage0 ~300 byte self-hosting hex assembler.
[6] https://www.nongnu.org/nyacc [6] https://www.nongnu.org/nyacc
[7] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html [7] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html
[8] https://gitlab.com/janneke/tinycc [8] https://gitlab.com/janneke/tinycc
[9] https://lists.gnu.org/archive/html/tinycc-devel/2017-05/msg00103.html [9] http://www.softwarepreservation.org/projects/LISP/book/LISP%25201.5%2520Programmers%2520Manual.pdf
[10] http://www.softwarepreservation.org/projects/LISP/book/LISP%25201.5%2520Programmers%2520Manual.pdf [10] https://github.com/oriansj/stage0
[11] https://github.com/oriansj/stage0
Mes is free software, it is distributed under the terms of the GNU Mes is free software, it is distributed under the terms of the GNU
General Public Licence version 3 or later. See the file COPYING. General Public Licence version 3 or later. See the file COPYING.

View file

@ -1,16 +1,18 @@
Subject: Mes 0.14 released Subject: Mes 0.14 released
I am pleased to announce the release of Mes 0.14, representing 93 I am pleased to announce the release of Mes 0.14, representing 98
commits over 3 weeks. Mes+MesCC now compiles a self-hosting tcc that commits over 4 weeks. Mes+MesCC now compiles a self-hosting TinyCC
has only been slightly patched. that has only been slightly patched.
This means that we can now build a tcc that depends only on a 1MB This means that we can now build a tcc that depends only on a 1MB
ASCII M1 seed. GuixSD currently uses a ~250MB binary seed to build ASCII M1 seed. GuixSD currently uses a ~250MB binary seed to build
gcc. gcc.
Next targets are: build gcc using this almost full-source bootstrapped Next targets are: build gcc using this almost full-source bootstrapped
tcc, and reduce the 1MB ASCII M1 seed to a ~100KB almost source seed tcc, and reduce the 1MB ASCII M1 seed to ~100KB of M2 source, which is
of M2 (a simple C-like language). a restricted subset of C.
Packages are available from Guix's wip-bootstrap branch.
* About * About
@ -28,7 +30,7 @@ of M2 (a simple C-like language).
enough to support a simple REPL (repl.mes) and simple C-compiler enough to support a simple REPL (repl.mes) and simple C-compiler
MesCC. MesCC.
Mes+MesCC can compile a only slightly patched TinyCC[8] that is Mes+MesCC can compile an only slightly patched TinyCC[8] that is
self-hosting. A GNU Ccc-compiled tcc is known[9] to compile GCC. self-hosting. A GNU Ccc-compiled tcc is known[9] to compile GCC.
Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10]
@ -79,8 +81,8 @@ installed in Guix[SD] by the usual
**** 4 new functions **** 4 new functions
__lshrdi3, __ashldi3, __ashrdi3, strncpy. __lshrdi3, __ashldi3, __ashrdi3, strncpy.
**** 9 new mlibc stubs **** 9 new mlibc stubs
__fixdfdi, __fixsfdi, __fixunsxfdi, __fixxfdi, __floatundixf, ldexp, __fixdfdi, __fixsfdi, __fixunsxfdi, __fixxfdi, __floatundixf, ldexp,
__fixunsxfdi, __floatundixf, ldexp, strtod, strtof, strtold. strtod, strtof, strtold.
Greetings, Greetings,
janneke janneke

106
doc/ANNOUNCE-0.15 Normal file
View file

@ -0,0 +1,106 @@
Subject: Mes 0.15 released
I am pleased to announce the release of Mes 0.15, representing 45
commits over 3 weeks. The GNU toolchain is getting bootstrapped!
As of 0.14, Mes+MesCC compiles a self-hosting TinyCC. Using the 0.15
Mes C library, this TinyCC can build the GNU tools triplet:
binutils-2.14, gcc-2.95.3, glibc-2.2.5.
This means that we can build a GNU toolchain that depends only on a
critical 1MB ASCII M1 seed. GuixSD currently uses a ~250MB binary
seed to build gcc.
Next targets are: upstream the Mes bootstrap to GuixSD, build a
Gcc-4.7 and Glibc-2.23, bootstrap utilities like bison, flex, grep,
sed..., replace GuixSD's bootstrap for x86 and reduce the 1MB ASCII M1
seed to ~5000 LOC/~100KB of M2 source, which is a restricted subset of
C.
Packages are available from Guix's wip-bootstrap branch.
* About
Mes[0] aims to help create full source bootstrapping for GuixSD[1]
as part of the bootstrappable builds[2] project.
It currently consists of a mutual self-hosting Scheme interpreter
prototype in C and a Nyacc-based C compiler in Scheme. This C
prototype is being simplified to be transpiled by M2-Planet[3].
The Scheme interpreter prototype (mes.c) has a Garbage Collector,
a library of loadable Scheme modules-- notably Dominique Boucher's
LALR[4], pre-R6RS portable syntax-case[5] with R7RS ellipsis, Matt
Wette's Nyacc[6], Guile's PEG[7] --and test suite just barely
enough to support a simple REPL (repl.mes) and simple C-compiler
MesCC.
Mes+MesCC can compile an only slightly patched TinyCC[8] that is
self-hosting. Using the Mes C library, this tcc can now build the
GNU tools triplet: binutils-2.14, gcc-2.95.3, glibc-2.2.5.
Mes is inspired by The Maxwell Equations of Software: LISP-1.5[9]
-- John McCarthy page 13, GNU Guix's source/binary packaging
transparency and Jeremiah Orians's stage0[10] ~300 byte self-hosting
hex assembler.
* Download
git clone https://gitlab.com/janneke/mes
wget https://gitlab.com/janneke/mes/-/archive/v0.15/mes-0.15.tar.gz
Mes runs from the source tree and can also be built, packaged and
installed in Guix[SD] by the usual
guix package -f guix.scm
* Changes in 0.15 since 0.14
** Core
*** Support fork, exec, waitpid.
*** Boot-0 loading has been refactored.
*** MesCC now has out of the box Geiser support.
** Language
*** 2 new functions
drop, drop-right.
** MesCC
*** MesCC and Mes Lib C can now build binutils-2.30, gcc-2.95.3 and glibc-2.2.5.
*** MesCC now provides dummy crti.o, crtn.o so that tcc needs not be patched for those.
*** Mes Lib C now supports compiling glibc-2.2.25.
*** Mes Lib C now supports compiling gcc-2.95.3
*** Mes Lib C now supports compiling binutils-2.30.
*** Mes Lib C now supports compiling m4-1.4.
*** Mes Lib C has been split into archs: gcc, x86-mes-gcc and x86-mes.
*** MesCC now has a posixy command line interface.
**** 70 new functions
abs, access, alarm, alloca, atexit, atol, bcmp, bcopy, brk, bzero,
chmod, clearerr, close, dup, dup2, execve, fabs, fcntl, fdgets, feof,
fgets, fileno, fork, freopen, fscanf, fstat, fsync, getcwd, getgid,
getpid, getrusage, getuid, index, ioctl, isalnum, isalpha, isascii,
iscntrl, isprint, ispunct, kill, link, lseek, lstat, mkdir, mktemp,
nanosleep, open, perror, pipe, raise, read, rename, rindex, rmdir,
sbrk, sbrk, setitimer, signal, sleep, stat, strcspn, strdup, strerror,
strncat, strpbrk, strspn, unlink, unsetenv, waitpid.
**** 23 new stubs
abort, atof, bsearch, bsearch, chown, ctime, fpurge, freadahead,
frexp, getpwnam, gmtime, mbstowcs, pclose, popen, rewind, setbuf,
sigsetmask, strftime, sys_siglist, system, times, umask, utime.
**** 10 new C tests
51-strcmp.c, 70-printf.c, 87-sscanf.c, 90-strpbrk.c, 91-fseek.c,
92-stat.c, 93-fread-fwrite.c, 94-unsetenv.c, 95-signal.c, 96-strto.c.
Greetings,
janneke
[0] https://gitlab.com/janneke/mes
[1] https://www.gnu.org/software/guix
[2] http://bootstrappable.org
[3] https://github.com/oriansj/m2-planet
[4] https://github.com/schemeway/lalr-scm
[5] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
[6] https://www.nongnu.org/nyacc/
[7] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html
[8] https://gitlab.com/janneke/tinycc
[9] http://www.softwarepreservation.org/projects/LISP/book/LISP%25201.5%2520Programmers%2520Manual.pdf
[10] https://github.com/oriansj/stage0