mes/NEWS

148 lines
6.2 KiB
Plaintext
Raw Normal View History

-*- org -*-
#+TITLE: Mes NEWS history of user-visible changes
#+STARTUP: content hidestars
Copyright © 2016,2017 Jan Nieuwenhuizen <janneke@gnu.org>
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
Please send Mes bug reports to janneke@gnu.org.
* Changes in 0.5 since 0.4
** Core
*** Support compilation with Mescc.
*** Support compilation with -nostdinc, -nostdlib using mlibc.
*** Support call-with-current-continuation.
*** Support exception handling, catch/throw.
*** Give sensible error message when a macro is missing.
** Language
*** Map now supports 4 lists.
*** The reader supports negative hex numbers.
*** 24 new functions
access?, assoc-set! c????r, compose, list->char-set,
open-input-string, read-string, string-delete, with-throw-handler.
** Mescc
*** Mescc can be used separately as a Nyacc-based C compiler backend for Guile.
*** Switch to Nyacc frontend, update Nyacc to 0.76.5.
*** Mescc now has a test suite, scaffold/t.c.
*** Mescc now includes a minimal C library libc/mlib.c libc/mstart.c.
*** Mescc can now compile mes.c.
** Noteworthy bug fixes
*** The build system (configure, make) has been refactored.
*** Support map-4.
*** Evaluate arguments of OR only once.
*** Fix assq-set!
*** Fix ,expand in the REPL.
* 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 [[file:module/mes/read-0.mes][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.
* Changes in 0.3 since 0.2
** Core
*** Number-based rather than pointer-based cells.
*** Garbage collector aka Jam scraper.
A variant on SICP's stop and copy Garbage Colletor (Jam Scraper?)
algorithm has been implemented.
*** The reader has been moved to Scheme.
** Language
*** Simple loadable modules.
*** Srfi-9 and match use handwritten syntax-rules (mes-use-module (mes syntax)).
*** Optional syntax-case using psyntax (mes-use-module (mes psyntax)).
** Noteworthy bug fixes
*** Srfi-0 has been fixed.
* Changes in 0.2 since 0.1
** Core
*** Names of symbols and strings are list of characters [WAS: c-string].
2016-11-21 13:16:52 +00:00
*** Sc-expand from pre-R6RS's psyntax has been integrated.
*** Undefined variable error now shows the name of the undefined variable.
*** There is now only one SCM type for builtin functions.
*** Macro expansion has been cleaned-up.
** Language
*** Mes now provides a subset of R6RS.
2016-11-21 13:16:52 +00:00
*** Mes now provides syntax-case.
*** Mes now provides `load'.
** Noteworthy bug fixes
*** Using values as second parameter of builtin function yields first value.
2016-11-21 13:16:52 +00:00
*** Quoted internals (e.g. 'if 'lambda) are now symbols.
*** Syntax error now exits.
*** Make+Bash voodoo has been replaced by build-aux/mes-snarf.scm.
*** Apply now accepts multiple list arguments.
*** Apply of character, inernal, number, string is an error.
*** Quasisyntax reading
* Changes in 0.1 (since progress report #2)
** Core
*** expand_macro is now a separate function.
*** A smaller core can now compiled using BOOT=1.
The smaller core does not provide define, define-macro, or quasiquote;
these are provided from a Scheme version of implemented eval/apply.
** Language
*** Mes now provides a subset of R5RS.
*** Mes now provides let-syntax.
*** Mes now provides match.
*** Mes now provides quasisyntax, unsyntax and unsyntax-splicing.
** User interface
*** Mes now provides a REPL, run:
scripts/repl.mes
*** Mes compiler can be run as a script:
scripts/mescc.mes doc/examples/main.c
*** Macro expansion can be inspected in the REPL, e.g.:
,expand (and 0 1)
** Noteworthy bug fixes
*** Performance: scripts/mescc.mes now takes 2s to compile main.c (was 1'20").
*** Symbols are now truly unique.
* '(), #t, #f are no longer symbols.