doc: Release update.
[mes.git] / doc / ANNOUNCE-0.16
1 Subject: Mes 0.16 released
2
3 I am pleased to announce the release of Mes 0.16, representing 27
4 commits over 2 weeks.
5
6 A most annoying ELF header bug was fixed that suddenly had all Mes
7 binaries segfault before entering `_start' on Linux 4.17 and later.
8
9 We now have binutils-2.20.1 and gcc-4.1.0, both compiled with
10 gcc-2.95.3 and glibc-2.2.5.
11
12 This reduced-binary-seed bootstrap still depends on these bootstrap
13 binaries: BOOTSTRAP-GUILE, flex, bash, bzip2, coreutils, diffutils,
14 gawk, grep, gzip, make, sed, tar, on the small binary seeds:
15 tinycc-seed, mescc-seed and on the mes.M1 ASCII seed.
16
17 Next targets:
18
19  - build a Gcc 4.7 and Glibc 2.23
20  - upstream the x86 Mes bootstrap to GuixSD
21  - reduce the 1MB ASCII M1 seed to ~5000 LOC/~100KB of M2 source
22  - revive Gash: a posix shell for Guile to reduce the bootstrap binary
23    dependencies
24  - and/or otherwise reduce the bootstrap binary dependencies
25
26 Packages are available from Guix's wip-bootstrap branch.
27
28 * About
29
30 Mes[0] aims to help create full source bootstrapping for GuixSD[1] as
31 part of the bootstrappable builds[2] effort.
32
33 It currently consists of a mutual self-hosting Scheme interpreter
34 prototype written in C and a Nyacc-based C compiler written in Scheme.
35 This C prototype is being simplified[3] to be transpiled by M2-Planet[4].
36
37 The Scheme interpreter prototype (mes.c) has a Garbage Collector, a
38 library of loadable Scheme modules-- notably Dominique Boucher's LALR[5],
39 Pre-R6RS portable syntax-case[6] with R7RS ellipsis, Matt Wette's Nyacc[7],
40 Guile's PEG[8] --and test suite just barely enough to support a simple
41 REPL and simple C-compiler: MesCC.
42
43 Mes+MesCC can compile an only lighty patched TinyCC[9] that is
44 self-hosting.  Using this tcc and the Mes C library we now have a
45 reduced-binary-seed bootstrap for the gnutools triplet: glibc-2.2.5,
46 binutils-2.20.1, gcc-4.1.0.
47
48 Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] --
49 John McCarthy page 13, GNU Guix's source/binary packaging transparency
50 and Jeremiah Orians's stage0[11] ~500 byte self-hosting hex assembler.
51
52 * Download
53
54     git clone https://gitlab.com/janneke/mes
55
56     wget https://gitlab.com/janneke/mes/-/archive/v0.16/mes-0.16.tar.gz
57
58 Mes runs from the source tree and can also be built, packaged and
59 installed in Guix[SD] by the usual
60
61     guix package -f guix.scm
62
63 * Get informed, get involved
64
65     Join #bootstrappable on irc.freenode.net.
66
67 * Changes in 0.16 since 0.15
68  ** Core
69  *** Support building with tcc, including Mes Lib C in-line assembly.
70  *** core:execl now supports 1000 arguments.
71  ** MesCC
72  *** Mes Lib C now bootstraps glibc-2.2.5, binutils-2.20.1, gcc-4.1.0.
73  *** MesCC binaries now run on Linux 4.17 too, i.e. survive Linus' new `sane mmap limits.'
74  *** MesCC now runs with mescc-tools 0.5 (no = in long options).
75  **** 3 new C test
76  88-strrchrc, 97-fopen.c, 98-fopen.c.
77  ** Noteworthy bug fixes
78  *** strrchr now stops when it reaches start of string.
79  *** fopen now return 0 upon failure.  Supports binutils' hack: fd=-2 means `cached'.
80  *** vfprintf, vsprintf now support precision and width on integers strings better.
81  *** fread now produces ungetc'd chars too.
82  *** memcmp now supports comparing 0 bytes, supporting binutils.
83
84  *** The unused ELF header data section, identical to the text section, has been removed.
85
86 Greetings,
87 janneke
88
89 [0] https://gitlab.com/janneke/mes
90 [1] https://www.gnu.org/software/guix
91 [2] http://bootstrappable.org
92 [3] https://github.com/oriansj/mes-m2
93 [4] https://github.com/oriansj/m2-planet
94 [5] https://github.com/schemeway/lalr-scm
95 [6] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
96 [7] https://www.nongnu.org/nyacc
97 [8] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html
98 [9] https://gitlab.com/janneke/tinycc
99 [10] http://www.softwarepreservation.org/projects/LISP/book/LISP%25201.5%2520Programmers%2520Manual.pdf
100 [11] https://github.com/oriansj/stage0