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