mescc: syscall: return only ever error -1, set errno.
[mes.git] / doc / ANNOUNCE-0.7
1 Subject: Mes 0.7 released
2
3 I am pleased to announce the release of Mes 0.7, representing 32
4 commits over 4 weeks.  Mescc now behaves more like a regular C
5 compiler: supporting -E, -c, -o options and with a more complete set
6 of header files [stubs]; enough to work on compiling tinycc's tcc.c
7 albeit a somewhat modified version[8].
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.7 -O mes-0.7.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.7 since 0.6
45  ** Core
46  *** The minimal C reader is now always included; dependencies
47  on i686-unknown-linux-gnu-gcc and binary read-0-32.mo have been
48  dropped, these are now optional.
49  ** Language
50  *** Mes reader now supports octal numbers #oXXX.
51  *** 10 new functions
52  current-output-port, getopt-long, negate, open-output-file,
53  option-ref, set-current-output-port, string-rindex, string-suffix?,
54  with-ouwith-output-to-file, with-output-to-port.
55  ** Mescc
56  *** Mescc can now be installed and used alongside a gcc installation.
57  *** Mescc can now handle const anywhere.
58  *** Mescc now supports array fields in structs.
59  *** Mescc now supports forward declarations and typedef.
60  *** Mescc can now handle comments anywhere.
61  *** Mescc now supports addition and substraction for enum field values.
62  *** Mescc now supports anonymous enums.
63  *** Mescc now supports all C99 header files needed to compile tcc.c.
64  *** build: C sources are now preprocessed separately, then compiled and linked.
65  *** build: mlibc and C sources are now compiled separately and then linked.
66  *** mlibc has been moved from Scheme snippets into C.
67  *** Mescc now supports -c, -D, -E, -I and -o options.
68  **** open now supports optional third mode parameter.
69  ** Noteworthy bug fixes
70  *** string-index now supports function predicate.
71  *** number->string for radix > 10 now produces `a' instead of `:'.
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
83 [8] https://gitlab.com/janneke/tinycc