admin: Release update.
[mes.git] / doc / announce / ANNOUNCE-0.18
1
2 Subject: mes-0.18 released
3
4 <#secure method=pgpmime mode=sign>
5 We are pleased to announce the release of GNU Mes 0.18, representing
6 83 commits over 8 weeks.
7
8 Mes is now bringing a Reduced Binary Seed bootstrap to GuixSD; the
9 size of bootstrap binaries has been halved and no regular toolchain
10 binaries are used as binary seeds (i686-linux and x86_64-linux only).
11
12 MesCC has been refactored to support use an abstracted assembly
13 language and can now (cross-)build x86_64 binaries.
14
15 Next targets:
16
17  - reduce the 1MB ASCII M1 seed to ~5000 LOC/~100KB of M2 source
18  - revive Gash/Geesh and use it to decimate the remaining bootstrap
19    binary seeds
20  - and/or otherwise reduce the bootstrap binaries
21  - ARM, the Hurd?
22
23 Packages are available from Guix's core-updates-next branch.
24
25 * About
26
27   GNU Mes[0] brings a Reduced Binary Seed bootstrap[1] to GuixSD[2] and
28   potentially to any other interested GNU/Linux distribution, and aims
29   to help create a full source bootstrap as part of the
30   bootstrappable builds[3] effort.
31
32   It consists of a mutual self-hosting Scheme interpreter written in
33   ~5,000 LOC of simple C and a Nyacc-based C compiler written in Scheme.
34   This mes.c is being simplified[4] to be transpiled by M2-Planet[5].
35
36   The Scheme interpreter (mes.c) has a Garbage Collector, a library of
37   loadable Scheme modules-- notably Dominique Boucher's LALR[6], Pre-R6RS
38   [portable syntax-case[7] with R7RS ellipsis, Matt Wette's Nyacc[8] --and test
39   suite just barely enough to support a simple REPL and simple
40   C-compiler: MesCC.
41
42   Mes+MesCC can compile an only lightly patched TinyCC[9] that is
43   self-hosting.  Using this tcc and the Mes C library we now have a
44   Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5,
45   binutils-2.20.1, gcc-2.95.3.  This is enough to bootstrap GuixSD for
46   i686-linux and x86_64-linux.
47
48   Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] -- John
49   McCarthy page 13, GNU Guix's source/binary packaging transparency and
50   Jeremiah Orians's stage0[11] ~500 byte self-hosting hex assembler.
51
52 * Download
53
54   git clone git://git.savannah.gnu.org/mes.git
55
56   Here are the compressed sources and a GPG detached signature[*]:
57     https://ftp.gnu.org/gnu/mes/mes-0.18.tar.gz
58     https://ftp.gnu.org/gnu/mes/mes-0.18.tar.gz.sig
59
60   Use a mirror for higher download bandwidth:
61     https://ftpmirror.gnu.org/mes/mes-0.18.tar.gz
62     https://ftpmirror.gnu.org/mes/mes-0.18.tar.gz.sig
63
64   Here are the MD5 and SHA1 checksums:
65
66   f9f901f175fbc8a5a3d90c9c551ccc8c  mes-0.18.tar.gz
67   4f7612731a745ebb806548186453d55e0d0bf217  mes-0.18.tar.gz
68
69   [*] Use a .sig file to verify that the corresponding file (without the
70   .sig suffix) is intact.  First, be sure to download both the .sig file
71   and the corresponding tarball.  Then, run a command like this:
72
73     gpg --verify mes-0.18.tar.gz.sig
74
75   If that command fails because you don't have the required public key,
76   then run this command to import it:
77
78     gpg --keyserver keys.gnupg.net --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
79
80   and rerun the 'gpg --verify' command.
81
82 Mes runs from the source tree and can also be built, packaged and
83 installed in Guix[SD] from a git checkout by running
84
85     guix package -f .guix.scm
86
87 * Get informed, get involved
88
89     Join #bootstrappable on irc.freenode.net.
90
91 * Changes in 0.18 since 0.17.1
92  ** Core
93  *** Mes/MesCC now supports x86_64.
94  *** Mes/MesCC now brings a Reduced Binary Seed bootstrap to GuixSD.
95  ** Language
96  *** fold-right now supports 3 lists.
97  ** MesCC
98  *** MesCC now supports x86_64 (also as cross build), using -m 64.
99  *** Mes C Library now has better support for bootstrapping gcc-3.0.
100  *** Mes C test suite now has 178 tests; 74 tests were added.
101  *** MesCC has been refactored to support use an abstracted assembly language.
102  *** MesCC now uses Nyacc 0.86.0.
103  ** Noteworthy bug fixes
104  *** scaffold/tests/7s-struct-short.c has been fixed.
105 * Changes in 0.17.1 since 0.17
106  ** MesCC
107  *** Mes C Library has now been exploded into a separate C file per function.
108  *** Mes C Library now bootstraps glibc-2.16.0, binutils-2.20.1, gcc-4.7.4.
109  *** Mes C Library now supports compiling make-3.82.
110  *** Mes C Library now supports compiling diffutils-2.7.
111  *** Mes C Library now supports x86_64.
112  **** 7 new functions
113  chdir, clock_gettime, closedir, execl, opendir, readdir, time.
114  **** 5 new stubs
115  getlogin, setlocale, setvbuf, sigaddset, sigblock.
116  ** Noteworthy bug fixes
117  *** qsort can now handle lists with duplicate entries.
118
119 Greetings,
120 janneke
121
122 [0] https://www.gnu.org/software/mes
123 [1] http://joyofsource.com/reduced-binary-seed-bootstrap.html
124 [2] https://www.gnu.org/software/guix
125 [3] https://bootstrappable.org
126 [4] https://github.com/oriansj/mes-m2
127 [5] https://github.com/oriansj/m2-planet
128 [6] https://github.com/schemeway/lalr-scm
129 [7] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
130 [8] https://www.nongnu.org/nyacc
131 [9] https://gitlab.com/janneke/tinycc
132 [10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
133 [11] https://github.com/oriansj/stage0