doc: Post-release update.
[mes.git] / doc / announce / ANNOUNCE-0.20
1
2 Subject: GNU Mes 0.20 released
3
4 <#secure method=pgpmime mode=sign>
5
6 We are pleased to announce the release of GNU Mes 0.20, representing
7 147 commits over 38 weeks.
8
9 Mes has now brought the Reduced Binary Seed bootstrap to Guix (bootstrap
10 a GNU/Linux system without binary GNU toolchain or equivalent).  It
11 should land in Guix master any day now: a big thank you to everyone who
12 helped, notably Ludovic and Mark.
13
14 This release is a step towards the upcoming Scheme-only bootstrap and
15 bringing Mes into NixOS and Debian.  This effort is now sponsored by
16 NLnet[12].
17
18 Next targets:
19
20  - ARM support
21  - Reduced Binary Seed bootstrap for ARM
22  - Scheme-only bootstrap: use Guile and Gash to remove bash,
23    coreutils&co, grep, sed, etc. from the Guix bootstrap binaries
24  - mes-m2: port Mes.c to M2-Planet
25  - Introduce Reduced Binaries Seed bootstrap to NixOS
26  - Debian?
27  - Hurd
28
29 Packages are available in Guix master.
30
31 * About
32
33   GNU Mes[0] brings a Reduced Binary Seed bootstrap[1] to GNU Guix[2]
34   and potentially to any other interested GNU/Linux distribution, and
35   aims to help create a full source bootstrap as part of the
36   bootstrappable builds[3] effort.
37
38   It consists of a mutual self-hosting Scheme interpreter written in
39   ~5,000 LOC of simple C and a Nyacc-based C compiler written in Scheme.
40   This mes.c is being simplified[4] to be transpiled by M2-Planet[5].
41
42   The Scheme interpreter (mes.c) has a Garbage Collector, a library of
43   loadable Scheme modules-- notably Dominique Boucher's LALR[6], Pre-R6RS
44   [portable syntax-case[7] with R7RS ellipsis, Matt Wette's Nyacc[8] --and test
45   suite just barely enough to support a simple REPL and simple
46   C-compiler: MesCC.
47
48   Mes+MesCC can compile an only lightly patched TinyCC[9] that is
49   self-hosting.  Using this tcc and the Mes C library we now have a
50   Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5,
51   binutils-2.20.1, gcc-2.95.3.  This is enough to bootstrap Guix for
52   i686-linux and x86_64-linux.
53
54   Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] -- John
55   McCarthy page 13, GNU Guix's source/binary packaging transparency and
56   Jeremiah Orians's stage0[11] ~500 byte self-hosting hex assembler.
57
58 * Download
59
60   git clone git://git.savannah.gnu.org/mes.git
61
62   Here are the compressed sources and a GPG detached signature[*]:
63     https://ftp.gnu.org/gnu/mes/mes-0.20.tar.gz
64     https://ftp.gnu.org/gnu/mes/mes-0.20.tar.gz.sig
65
66   Use a mirror for higher download bandwidth:
67     https://ftpmirror.gnu.org/mes/mes-0.20.tar.gz
68     https://ftpmirror.gnu.org/mes/mes-0.20.tar.gz.sig
69
70   Here are the MD5 and SHA1 checksums:
71
72   df839a83e4a2ad6c2a4accc5bf17b1a7  mes-0.20.tar.gz
73   38d4cb3fa28fa1f5fc57fea9e046d4d8052bbb8c  mes-0.20.tar.gz
74
75   [*] Use a .sig file to verify that the corresponding file (without the
76   .sig suffix) is intact.  First, be sure to download both the .sig file
77   and the corresponding tarball.  Then, run a command like this:
78
79     gpg --verify mes-0.20.tar.gz.sig
80
81   If that command fails because you don't have the required public key,
82   then run this command to import it:
83
84     gpg --keyserver keys.gnupg.net --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
85
86   and rerun the 'gpg --verify' command.
87
88 * Get informed, get involved
89
90   See https://bootstrappable.org
91   Join #bootstrappable on irc.freenode.net.
92
93 * Changes in 0.20 since 0.19
94  ** Core
95  *** The build system has been simplified, again.
96  Mes now builds ootb on Debian.
97  *** Mes now supports -c EXPR.
98  ** Divide by zero is now flagged.
99  ** Language
100  *** 1 new function:
101  take-while.
102  ** MesCC
103  *** The C libraries have been exploded into one function per file.
104  *** MesCC now has enhanced POSIX/gcc comand line support, e.g. -DFOO=1,
105  -nodefaultlibs, -nostartfiles, -nostdlib.
106  *** The archiver is now called `mesar'.
107  *** MesCC now supports Nyacc-0.99.
108  *** MesCC now depends on MesCC-Tools 0.6.0.
109  *** 1 new function
110  __mesabi_uldiv.
111  ** Noteworthy bug fixes
112  *** interger division has been fixed.
113  *** isatty now looks at terminfo.
114  *** signal now uses sigaction correctly for non-x86.
115  *** string->number now support #x hex-prefix.
116  *** ungetc now has a buffer per file handle.
117
118 Greetings,
119 janneke and Danny.
120
121 [0] https://www.gnu.org/software/mes
122 [1] http://joyofsource.com/reduced-binary-seed-bootstrap.html
123 [2] https://www.gnu.org/software/guix
124 [3] https://bootstrappable.org
125 [4] https://github.com/oriansj/mes-m2
126 [5] https://github.com/oriansj/m2-planet
127 [6] https://github.com/schemeway/lalr-scm
128 [7] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
129 [8] https://www.nongnu.org/nyacc
130 [9] https://gitlab.com/janneke/tinycc
131 [10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
132 [11] https://github.com/oriansj/stage0
133 [12] https://nlnet.nl/project/GNUMes