38a55ff8c410f7875b54c4e0b824b3846e044ae3
[mes.git] / doc / ANNOUNCE-0.6
1 Subject: Mes 0.6 released
2
3 I am pleased to announce the release of Mes 0.6, representing 32
4 commits over 24 days.  Mescc now works with vanilla Nyacc 0.78.3
5 (thanks Matt!), Nyacc has been unbundled and Mescc compiles 33/55
6 of tinycc test2 tests.
7
8 * About
9
10     Mes aims to create full source bootstrapping for GuixSD: an
11     entirely source-based bootstrap path.  The target is to [have
12     GuixSD] boostrap from a minimal, easily inspectable binary --that
13     should be readable as source-- into something close to R6RS
14     Scheme.
15
16     It currently consists of a mutual self-hosting [close to Guile-]
17     Scheme interpreter prototype in C and a Nyacc-based C compiler in
18     [Guile] Scheme.
19
20     The Scheme interpreter prototype (mes.c) has a Garbage Collector,
21     a library of loadable Scheme modules-- notably Dominique Boucher's
22     LALR[1], Pre-R6RS portable syntax-case[2] with R7RS ellipsis, Matt
23     Wette's Nyacc[3] Guile's PEG[4] --and test suite just barely
24     enough to support a simple REPL (repl.mes) and simple C-compiler
25     (mescc.mes) that can produce the second initial ELF binary from
26     binary from mes.c, in only about 2h30'.
27
28     Mes was inspired by The Maxwell Equations of Software: LISP-1.5[5]
29     -- John McCarthy page 13, GNU Guix's[6] source/binary packaging
30     transparency and Jeremiah Orians's stage0[7] bootstrap project.
31
32 * Download
33
34     git clone https://gitlab.com/janneke/mes
35
36     wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.6 -O mes-0.6.tar.gz
37
38 Mes runs from the source tree and can also be built, packaged and
39 installed in Guix[SD] by the usual
40
41     guix package -f guix.scm
42
43 * Changes in 0.6 since 0.5
44  ** Core
45  *** configure, build now supports x86 and development for arm with-courage.
46  ** Language
47  *** Nyacc has been unbundled and is now a dependency.
48  *** Mes now supports case-lambda.
49  *** Mes reader now supports abbreviated form for return character #\cr.
50  *** 1 new function
51  string-index.
52  ** Mescc
53  *** Mescc can be used on regular C sources, like tinycc's tests/test2 suite.
54  *** make check passes 33/55 of tinycc's test suite etest/test2 tests.
55  *** Mescc now recognizes `short' as a type.
56  *** Mescc now supports sizeof (<identifier>), sizeof(<expression>).
57  *** Mescc now respects enum field initializers and supports enum variables.
58  *** Mescc now supports binary constants .
59  *** Mescc now supports assignments from ==, != boolean expressions .
60  *** Mescc now supports &, ^.
61  *** Mescc now supports struct pointers.
62  *** Mescc now supports struct definition with immediatete variable declaration.
63  *** Mescc now supports calling (returning correctly from) void functions.
64  *** Mescc now handles case statements breaks without compound correctly.
65  *** Mescc now has better [int/pointer] array support.
66  *** Mescc now has better support for simple (non-array-)structs.
67  *** Mescc now supports multiple declarations in one statement like: int a,b;
68  **** 2 new mlibc functions
69  printf, strcpy.
70  ** Noteworthy bug fixes
71  *** Installed mes and mes.repl now also run outside of source tree again.
72
73 Greetings,
74 janneke
75
76 [1] https://github.com/schemeway/lalr-scm
77 [2] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
78 [3] https://www.nongnu.org/nyacc/
79 [4] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html
80 [5] http://www.softwarepreservation.org/projects/LISP/book/LISP%25201.5%2520Programmers%2520Manual.pdf
81 [6] https://www.gnu.org/software/guix/
82 [7] https://github.com/oriansj/stage0