mescc: Add missing defines.
[mes.git] / doc / ANNOUNCE-0.3
1 Subject: on bootstrapping: first Mes 0.3 released
2
3 I am pleased to announce the first release of Mes: 0.3, representing
4 152 commits over 3 months since the second status report[1].
5
6 * About
7
8     Mes aims to create an entirely source-based bootstrapping path.  The
9     target is to [have GuixSD] boostrap from a minimal, easily inspectable
10     binary --that should be readable as source-- into something close to
11     R6RS Scheme.
12
13     As bootstrapping is presumably easiest and probably most fun with
14     Scheme, the next step for Mes is mescc: a C compiler/linker to
15     boostrap into GNU Gcc and GNU Guile, possibly via Tiny-CC.
16
17     It currently has an interpreter written in C (mes) with Garbage
18     Collector (Jam Scraper), a library of loadable Scheme modules with
19     test suite just barely enough to support a simple REPL (repl.mes)
20     and a proof-of-concept c-compiler (mescc.mes) that produces an elf
21     from the simplest of C files.
22
23     Mes is inspired by The Maxwell Equations of Software: LISP-1.5[2]
24     -- John McCarthy page 13
25
26 * Download
27
28     git clone https://gitlab.com/janneke/mes
29
30     wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.3 -O mes-0.3.tar.gz
31
32 Mes runs from the source tree and can also be built, packaged and
33 installed in Guix[SD] by the usual
34
35     guix package -f guix.scm
36
37
38 * Changes in 0.3 since 0.2
39  ** Core
40  *** Number-based rather than pointer-based cells.
41  *** Garbage collector aka Jam scraper.
42  A variant on SICP's stop and copy Garbage Collector (Jam Scraper?)
43  algorithm has been implemented.
44  *** The reader has been moved to Scheme.
45  ** Language
46  *** Simple loadable modules.
47  *** Srfi-9 and match use handwritten syntax-rules (mes-use-module (mes syntax)).
48  *** Optional syntax-case using psyntax (mes-use-module (mes psyntax)).
49  ** Noteworthy bug fixes
50  *** Srfi-0 has been fixed.
51
52 * Changes in 0.2 since 0.1
53  ** Core
54  *** Names of symbols and strings are list of characters [WAS: c-string].
55  *** Sc-expand from pre-R6RS's psyntax has been integrated.
56  *** Undefined variable error now shows the name of the undefined variable.
57  *** There is now only one SCM type for builtin functions.
58  *** Macro expansion has been cleaned-up.
59  ** Language
60  *** Mes now provides a subset of R6RS.
61  *** Mes now provides syntax-case.
62  *** Mes now provides `load'.
63  ** Noteworthy bug fixes
64  *** Using values as second parameter of builtin function yields first value.
65  *** Quoted internals (e.g. 'if 'lambda) are now symbols.
66  *** Syntax error now exits.
67  *** Make+Bash voodoo has been replaced by build-aux/mes-snarf.scm.
68  *** Apply now accepts multiple list arguments.
69  *** Apply of character, inernal, number, string is an error.
70  *** Quasisyntax reading 
71
72 * Changes in 0.1 (since progress report #2)
73  ** Core
74  *** expand_macro is now a separate function.
75  *** A smaller core can now compiled using BOOT=1.
76  The smaller core does not provide define, define-macro, or quasiquote;
77  these are provided from a Scheme version of implemented eval/apply.
78  ** Language
79  *** Mes now provides a subset of R5RS.
80  *** Mes now provides let-syntax.
81  *** Mes now provides match.
82  *** Mes now provides quasisyntax, unsyntax and unsyntax-splicing.
83  ** User interface
84  *** Mes now provides a REPL, run:
85      scripts/repl.mes
86  *** Mes compiler can be run as a script:
87      scripts/mescc.mes doc/examples/main.c
88  *** Macro expansion can be inspected in the REPL, e.g.:
89      ,expand (and 0 1)
90  ** Noteworthy bug fixes
91  *** Performance: scripts/mescc.mes now takes 2s to compile main.c (was 1'20").
92  *** Symbols are now truly unique.
93    * '(), #t, #f are no longer symbols.
94
95 Greetings,
96 Jan
97
98 [1] https://lists.nongnu.org/archive/html/guile-user/2016-09/msg00061.html 
99 [2] http://www.softwarepreservation.org/projects/LISP/book/LISP%25201.5%2520Programmers%2520Manual.pdf