Update documentation.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 25 Dec 2016 15:43:28 +0000 (16:43 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 25 Dec 2016 15:49:12 +0000 (16:49 +0100)
* doc/ANNOUNCE-0.4: New file.
* NEWS: Typo.

NEWS
doc/ANNOUNCE-0.4 [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 867302d2707e93e2c87fbbb5088cea3f2b8cf8e5..bb9aaca647b44be5f8ee0b434d154a03001a12cc 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -27,7 +27,7 @@ block-comments.
 *** Reduced size.
 Total C size: ~1500LOC.  The main Mes evaluator is now ~1000LOC
 including cell creation and garbage collector.  This code is able to
-execute a Scheme progam that has been loaded into memory.  Another
+execute a Scheme program that has been loaded into memory.  Another
 ~500LOC is spent to load a minimal Scheme program and to dump it, to
 provide a small posix interface, math functions and do some error
 reporting.
diff --git a/doc/ANNOUNCE-0.4 b/doc/ANNOUNCE-0.4
new file mode 100644 (file)
index 0000000..1358303
--- /dev/null
@@ -0,0 +1,103 @@
+Subject: Mes 0.4 released
+
+I am pleased to announce the release of Mes 0.4, representing 115
+commits over barely two weeks.  It now runs Nyacc and PEG and has much
+reduced core.
+
+* About
+
+    Mes aims to create an entirely source-based bootstrapping path.  The
+    target is to [have GuixSD] boostrap from a minimal, easily inspectable
+    binary --that should be readable as source-- into something close to
+    R6RS Scheme.
+
+    As bootstrapping is presumably easiest and probably most fun with
+    Scheme, the next step for Mes is mescc: a C compiler/linker to
+    boostrap into GNU Gcc and GNU Guile, possibly via Tiny-CC.
+
+    It currently has an interpreter written in C (mes) with Garbage
+    Collector (Jam Scraper), a library of loadable Scheme modules--
+    notably Dominique Boucher's LALR[1], Pre-R6RS portable
+    syntax-case[2] with R7RS ellipsis, Nyacc[3] and Guile's PEG[4]
+    --and test suite just barely enough to support a simple REPL
+    (repl.mes) and a proof-of-concept C-compiler (mescc.mes) that
+    produces an elf from the simplest of C files.
+
+    Mes is inspired by The Maxwell Equations of Software: LISP-1.5[5]
+    -- John McCarthy page 13
+
+* Download
+
+    git clone https://gitlab.com/janneke/mes
+
+    wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.4 -O mes-0.4.tar.gz
+
+Mes runs from the source tree and can also be built, packaged and
+installed in Guix[SD] by the usual
+
+    guix package -f guix.scm
+
+* Changes in 0.4 since 0.3
+ ** Core
+ *** Improved performance.
+ Macros are now memoized; after expansion and before eval'ing the
+ expanded form, their input s-expression is replaced by the expansion.
+ This yields a nice performance improvement which finally allowed
+ moving all non-essential bits from the C-core into Scheme...including
+ the reader.  The Scheme reader is much, much slower than the previous
+ C version, making Mes--again-- feel slow.  Think of that as a feature.
+ *** Bootstrap with minimal reader in C.
+ The C-reader needs only support reading of words and lists
+ (s-expressions), line-comments to read the initial Scheme reader which
+ then takes over and handles reading of quoting, characters, strings,
+ block-comments.
+ *** Reduced size.
+ Total C size: ~1500LOC.  The main Mes evaluator is now ~1000LOC
+ including cell creation and garbage collector.  This code is able to
+ execute a Scheme program that has been loaded into memory.  Another
+ ~500LOC is spent to load a minimal Scheme program and to dump it, to
+ provide a small posix interface, math functions and do some error
+ reporting.
+ *** Programs can be dumped and loaded using --dump and --load.
+ ** Language
+ *** Minimal syntactic exception support for Nyacc.
+ *** Minimal syntactic fluids support for Nyacc.
+ *** Keywords are now supported.
+ *** Cond now supports =>.
+ *** Guile's optargs: lambda* and define* are now supported.
+ *** #;-comments are now supported.
+ *** Non-nested #| |#-comments are now supported.
+ *** Quasisyntax is now supported.
+ *** R7RS syntax-rules with custom ellipsis, with-ellipsis are now supported.
+ *** 9 new [partial] modules
+ (mes fluids), (mes nyacc), (mes optargs), (mes pmatch), (mes peg),
+ (srfi srfi-13), (srfi srfi-9-psyntax), (srfi srfi-26), (srfi srfi-43),
+ (rnrs arithmetic bitwise), (sxml xpath)
+ *** 36 new functions
+ 1+, 1-, abs, and=>, append-reverse, ash, char<=?, char<?, char>=?,
+ char>?, even?, filter, delete, delq, vector-copy, fold, fold-right,
+ getenv, iota, keyword->symbol list-head, list-tail, negative?, odd?,
+ positive?, remove!, remove, string->number, string-copy,
+ string-prefix?, string=, string=?, symbol->keyword symbol-append,
+ symbol-prefix?, unless, write, zero?.
+ ** Noteworthy bug fixes
+ *** Macros are now memoized.
+ *** An error is reported when using a wrong number of arguments with a call.
+ *** Cond now evaluates its test clauses only once.
+ *** Append can also handle one argument.
+ *** For-each now supports 2 list arguments.
+ *** Map now supports 3 list arguments.
+ *** Backslash in string is supported.
+ *** Closure is not a pair.
+ *** All standard characters are supported.
+ *** Mescc now also runs in Guile.
+
+
+Greetings,
+Jan
+
+[1] https://github.com/schemeway/lalr-scm
+[2] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
+[3] https://www.nongnu.org/nyacc/
+[4] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html
+[5] http://www.softwarepreservation.org/projects/LISP/book/LISP%25201.5%2520Programmers%2520Manual.pdf