Closure is not a pair.
[mes.git] / NEWS
1                                                               -*- org -*-
2 #+TITLE: Mes NEWS – history of user-visible changes
3 #+STARTUP: content hidestars
4
5 Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
6
7   Copying and distribution of this file, with or without modification,
8   are permitted in any medium without royalty provided the copyright
9   notice and this notice are preserved.
10
11 Please send Mes bug reports to janneke@gnu.org.
12
13 * Changes in 0.4 since 0.3
14 ** Core
15 *** Smaller C-reader
16 The C-reader needs only support reading of words and lists
17 (s-expressions), line-comments.  Quoting, characters, strings,
18 block-comments are all handled by the Scheme reader later.
19 ** Language
20 *** Keywords are supported.
21 *** Cond now supports =>.
22 *** Lambda* and define* are now supported.
23 *** #;-comment is now supported.
24 *** Non-nested #| |#-comment is now supported.
25 ** Noteworthy bug fixes
26 *** Closure is not a pair.
27 * Changes in 0.3 since 0.2
28 ** Core
29 *** Number-based rather than pointer-based cells.
30 *** Garbage collector aka Jam scraper.
31 A variant on SICP's stop and copy Garbage Colletor (Jam Scraper?)
32 algorithm has been implemented.
33 *** The reader has been moved to Scheme.
34 ** Language
35 *** Simple loadable modules.
36 *** Srfi-9 and match use handwritten syntax-rules (mes-use-module (mes syntax)).
37 *** Optional syntax-case using psyntax (mes-use-module (mes psyntax)).
38 ** Noteworthy bug fixes
39 *** Srfi-0 has been fixed.
40 * Changes in 0.2 since 0.1
41 ** Core
42 *** Names of symbols and strings are list of characters [WAS: c-string].
43 *** Sc-expand from pre-R6RS's psyntax has been integrated.
44 *** Undefined variable error now shows the name of the undefined variable.
45 *** There is now only one SCM type for builtin functions.
46 *** Macro expansion has been cleaned-up.
47 ** Language
48 *** Mes now provides a subset of R6RS.
49 *** Mes now provides syntax-case.
50 *** Mes now provides `load'.
51 ** Noteworthy bug fixes
52 *** Using values as second parameter of builtin function yields first value.
53 *** Quoted internals (e.g. 'if 'lambda) are now symbols.
54 *** Syntax error now exits.
55 *** Make+Bash voodoo has been replaced by build-aux/mes-snarf.scm.
56 *** Apply now accepts multiple list arguments.
57 *** Apply of character, inernal, number, string is an error.
58 *** Quasisyntax reading 
59
60 * Changes in 0.1 (since progress report #2)
61 ** Core
62 *** expand_macro is now a separate function.
63 *** A smaller core can now compiled using BOOT=1.
64 The smaller core does not provide define, define-macro, or quasiquote;
65 these are provided from a Scheme version of implemented eval/apply.
66 ** Language
67 *** Mes now provides a subset of R5RS.
68 *** Mes now provides let-syntax.
69 *** Mes now provides match.
70 *** Mes now provides quasisyntax, unsyntax and unsyntax-splicing.
71 ** User interface
72 *** Mes now provides a REPL, run:
73     scripts/repl.mes
74 *** Mes compiler can be run as a script:
75     scripts/mescc.mes doc/examples/main.c
76 *** Macro expansion can be inspected in the REPL, e.g.:
77     ,expand (and 0 1)
78 ** Noteworthy bug fixes
79 *** Performance: scripts/mescc.mes now takes 2s to compile main.c (was 1'20").
80 *** Symbols are now truly unique.
81   * '(), #t, #f are no longer symbols.