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