doc: Release udpate.
* BOOTSTRAP: Update. * HACKING: Update. * NEWS: Update. * README: Update. * doc/ANNOUNCE-0.15: New file.
This commit is contained in:
parent
b6b93f9f19
commit
25651c6d51
|
@ -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
16
HACKING
|
@ -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
34
NEWS
|
@ -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
8
README
|
@ -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.
|
||||||
|
|
|
@ -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
106
doc/ANNOUNCE-0.15
Normal 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
|
Loading…
Reference in a new issue