mescc: Refactor type system: struct/enum fields: (name . <type>).
[mes.git] / doc / ANNOUNCE-0.5
1 Subject: Mes 0.5 released
2
3 I am pleased to announce the release of Mes 0.5, representing 250
4 commits over 4 months.  Mes is now self-hosting, or rather it features
5 a mutual self-hosting Scheme interpreter and C compiler: mes.c and
6 mescc; a Nyacc-based C compiler backend that also works separately
7 with Guile.
8
9 * About
10
11     Mes aims to create full source bootstrapping for GuixSD: an
12     entirely source-based bootstrap path.  The target is to [have
13     GuixSD] boostrap from a minimal, easily inspectable binary --that
14     should be readable as source-- into something close to R6RS
15     Scheme.
16
17     It currently consists of a mutual self-hosting [close to Guile-]
18     Scheme interpreter prototype in C and a Nyacc-based C compiler in
19     [Guile] Scheme.
20
21     The Scheme interpreter prototype (mes.c) has a Garbage Collector,
22     a library of loadable Scheme modules-- notably Dominique Boucher's
23     LALR[1], Pre-R6RS portable syntax-case[2] with R7RS ellipsis, Matt
24     Wette's Nyacc[3] Guile's PEG[4] --and test suite just barely
25     enough to support a simple REPL (repl.mes) and simple C-compiler
26     (mescc.mes) that can produce the second initial ELF binary from
27     binary from mes.c, in only about 2h30'.
28
29     Mes was inspired by The Maxwell Equations of Software: LISP-1.5[5]
30     -- John McCarthy page 13, GNU Guix's[6] source/binary packaging
31     transparency and Jeremiah Orians's stage0[7] bootstrap project.
32
33 * Download
34
35     git clone https://gitlab.com/janneke/mes
36
37     wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.5 -O mes-0.5.tar.gz
38
39 Mes runs from the source tree and can also be built, packaged and
40 installed in Guix[SD] by the usual
41
42     guix package -f guix.scm
43
44 * Changes in 0.5 since 0.4
45  ** Core
46  *** Support compilation with Mescc.
47  *** Support compilation with -nostdinc, -nostdlib using mlibc.
48  *** Support call-with-current-continuation.
49  *** Support exception handling, catch/throw.
50  *** Give sensible error message when a macro is missing.
51  ** Language
52  *** Map now supports 4 lists.
53  *** The reader supports negative hex numbers.
54  *** 24 new functions
55  access?, assoc-set! c????r, compose, list->char-set,
56  open-input-string, read-string, string-delete, with-throw-handler.
57  ** Mescc
58  *** Mescc can be used separately as a Nyacc-based C compiler backend for Guile.
59  *** Switch to Nyacc frontend, update Nyacc to 0.76.5.
60  *** Mescc now has a test suite, scaffold/t.c.
61  *** Mescc now includes a minimal C library: libc/mlib.c libc/mstart.c.
62  *** Mescc can now compile mes.c.
63  ** Noteworthy bug fixes
64  *** The build system (configure, make) has been refactored.
65  *** Support map-4.
66  *** Evaluate arguments of OR only once.
67  *** Fix assq-set!
68  *** Fix ,expand in the REPL.
69
70 Greetings,
71 janneke
72
73 [1] https://github.com/schemeway/lalr-scm
74 [2] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
75 [3] https://www.nongnu.org/nyacc/
76 [4] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html
77 [5] http://www.softwarepreservation.org/projects/LISP/book/LISP%25201.5%2520Programmers%2520Manual.pdf
78 [6] https://www.gnu.org/software/guix/
79 [7] https://github.com/oriansj/stage0