e14879329a2de9cd5327807131516e8c9a145581
[mes.git] / doc / announce / ANNOUNCE-0.22
1
2 Subject: GNU Mes 0.22 released
3
4 <#secure method=pgpmime mode=sign>
5
6 We are pleased to announce the release of GNU Mes 0.22, representing
7 57 commits over 8 weeks.
8
9 Mes can now be built reproducibly by mes+mescc or guile+mescc accross
10 distributions such as GNU Guix, Debian GNU/Linux and NixOS.  Also, many
11 build issues were fixed.  A big thank you to reproducible-builds.org,
12 Vagrant Cascadian, Jelle van der Waa, Hannes Mehnert and David Terry!
13
14 Mes now runs on the Hurd--mescc does not run yet, many system calls are
15 missing, especially fork/exec--and initial scaffolding support for
16 creating FreeBSD binaries was added.
17
18 This release better supports bringing the Scheme-only bootstrap to Guix:
19 it no longer requires an update to the Guix bootstrap seed.
20
21 The Scheme-only bootstrap means that Mes can now be built with Gash and
22 the experimental Gash Core Utils instead of using GNU Awk, GNU Bash, the
23 GNU Core Utilities, GNU Grep, GNU Gzip, GNU Make, GNU Sed, and GNU Tar.
24 Also, the Mes C Library now supports bootstrapping those.
25
26 We are excited that the Nlnet Foundation[12] is now sponsoring this
27 work!
28
29 Next targets:
30
31  - Introduce the Reduced Binaries Seed bootstrap to NixOS (Debian,
32    Arch, Gentoo, ...?)
33  - Merge the Scheme-only bootstrap, the wip-bootstrap branch (using
34    Guile, Gash and Gash Core Utils to remove awk, bash, core utilities,
35    grep, gzip, make, sed, tar, etc. from the Guix bootstrap binaries)
36    into Guix core-updates.
37  - ARM support
38  - Full Source Bootstrap: compile Mes.c using M2-Planet
39  - Add full Guile module support
40  - Reduced Binary Seed bootstrap for ARM
41  - Support mescc on the Hurd (fork/exec, ...)
42
43 Packages are available in Guix master; the cross-distro reproducible
44 is built using
45
46     guix build --system=i686-linux mes-rb5
47
48 * About
49
50   GNU Mes[0] is a Scheme interpreter and C compiler for bootstrapping the GNU
51   System.  Since version 0.22 it has again helped to halve the size of
52   opaque, uninspectable binary seeds that are currently being used in the
53   Reduced Binary Seed bootstrap[1] of GNU Guix[2].  The final goal is to help
54   create a full source bootstrap as part of the bootstrappable builds[3]
55   effort for UNIX-like operating systems.
56
57   The Scheme interpreter is written in ~5,000 LOC of simple C, and the C
58   compiler written in Scheme and these are mutual self-hosting.  This
59   mes.c is being simplified[4] to be transpiled by M2-Planet[5].
60
61   Mes has a Garbage Collector, a library of loadable Scheme modules--
62   notably Dominique Boucher's LALR[6], Pre-R6RS [portable syntax-case[7]
63   with R7RS ellipsis, Matt Wette's Nyacc[8] --and test suite just enough
64   to support a REPL and a C99 compiler: MesCC.
65
66   Mes+MesCC can compile an only lightly patched TinyCC[9] that is
67   self-hosting.  Using this tcc and the Mes C library we now have a
68   Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5,
69   binutils-2.20.1, gcc-2.95.3.  This is enough to bootstrap Guix for
70   i686-linux and x86_64-linux.
71
72   Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] -- John
73   McCarthy page 13, GNU Guix's source/binary packaging transparency and
74   Jeremiah Orians's stage0[11] ~500 byte self-hosting hex assembler.
75
76 * Download
77
78   git clone git://git.savannah.gnu.org/mes.git
79
80   Here are the compressed sources and a GPG detached signature[*]:
81     https://ftp.gnu.org/gnu/mes/mes-0.22.tar.gz
82     https://ftp.gnu.org/gnu/mes/mes-0.22.tar.gz.sig
83
84   Use a mirror for higher download bandwidth:
85     https://ftpmirror.gnu.org/mes/mes-0.22.tar.gz
86     https://ftpmirror.gnu.org/mes/mes-0.22.tar.gz.sig
87
88   Here are the MD5 and SHA1 checksums:
89
90   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  mes-0.22.tar.gz
91   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  mes-0.22.tar.gz
92
93   [*] Use a .sig file to verify that the corresponding file (without the
94   .sig suffix) is intact.  First, be sure to download both the .sig file
95   and the corresponding tarball.  Then, run a command like this:
96
97     gpg --verify mes-0.22.tar.gz.sig
98
99   If that command fails because you don't have the required public key,
100   then run this command to import it:
101
102     gpg --keyserver keys.gnupg.net --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
103
104   and rerun the 'gpg --verify' command.
105
106 * Get informed, get involved
107
108   See https://bootstrappable.org
109   Join #bootstrappable on irc.freenode.net.
110
111 * Changes in 0.22 since 0.21
112  ** Core
113  *** Mes now builds reproducibly with MesCC, cross distribution
114  Using --with-bootstrap on x86, a bin/mes-mescc is compiled with
115  mes+mescc, that shall have sha256sum
116
117      9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb  bin/mes-mescc
118
119  This has been verified on GNU Guix, Debian GNU/Linux and NixOS.
120  *** Mes now builds reproducibly with Guile+MesCC vs Mes+MesCC.
121  *** Mes now builds reproducibly with Tiny CC-built MesCC.
122  *** configure now respects the user's CFLAGS, CPPFLAGS and LDFLAGS.
123  *** Mes now supports mescc-tools 0.5.2 next to 0.6.1.
124  This allows introducing the Scheme-only bootstrap without updating or
125  adding new bootstrap binary seeds into GNU Guix.
126  *** Mes now runs when configured --with-courage on the Hurd:
127      GNU debian 0.9 GNU-Mach 1.8+git20170609-486/Hurd-0.9 i686-AT386 GNU
128  Note that mescc does not run; fork and exec are not yet implemented.
129  *** Mes now configures --with-courage on x86-FreeBSD 12.1
130  The initial ELF scaffold tests: exit-42.S, 0exit-42.hex2,
131  body-exit-42.hex2, hello-mes.S, 0hello-mes.hex2, body-hello-mes.hex2
132  pass.
133  *** configure now has a --with-bootstrap option.
134  This adds the reproducible bootstrap build of bin/mes-mescc, using
135  mes+mescc.
136  *** configure prefers $CC over gcc; tcc over gcc, gcc over cc.
137  *** Mes now prints an error when attempting to read a file that does not exist.
138  *** Mes no longer depends on GIT.
139  ** Noteworthy bug fixes
140  *** Several annoying build problems were fixed, for non-Guix systems.
141  *** A bug with buffered-read was fixed.
142  This means that bash-2.05 can now build glibc-2.2.5; notably it now
143  successfully executes make-syscall.sh.
144  *** A bug with execlp, execvp for file names containing a slash was fixed.
145  This should allow make-3.80 running scripts that have "#! ./move-if-change".
146
147 Greetings,
148 janneke and Danny.
149
150 [0] https://www.gnu.org/software/mes
151 [1] https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/
152 [2] https://www.gnu.org/software/guix
153 [3] https://bootstrappable.org
154 [4] https://github.com/oriansj/mes-m2
155 [5] https://github.com/oriansj/m2-planet
156 [6] https://github.com/schemeway/lalr-scm
157 [7] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
158 [8] https://www.nongnu.org/nyacc
159 [9] https://gitlab.com/janneke/tinycc
160 [10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
161 [11] https://savannah.nongnu.org/projects/stage0
162 [12] https://nlnet.nl/project/GNUMes