Update documentation wrt syntax-case.
* HACKING: Update wrt syntax-case. * NEWS: Likewise. * README: Likewise. * guix.scm: Likewise.
This commit is contained in:
parent
14f417d780
commit
0e13b7e8dd
38
HACKING
38
HACKING
|
@ -14,12 +14,12 @@ metamorphose into R6RS. It seemed to work but performance of the
|
||||||
LISP-intepreted RRS was so bad (~1000x slower than initial LISP-1.5)
|
LISP-intepreted RRS was so bad (~1000x slower than initial LISP-1.5)
|
||||||
that this track was abandoned after the initial ANNOUNCE.
|
that this track was abandoned after the initial ANNOUNCE.
|
||||||
|
|
||||||
The route changed trying to strike a balance between core size and
|
The route changed, trying to strike a balance between core size and
|
||||||
performance: still writing as much as possible in Scheme, but having a
|
performance: still writing as much as possible in Scheme but having a
|
||||||
mescc compiler that takes not more than some seconds to run.
|
mescc compiler that takes not more than some seconds to run.
|
||||||
|
|
||||||
Now that the important bits of R5RS are done and R6RS's syntax-case
|
Now that portable R6RS syntax-case runs and mes.c has grown to
|
||||||
comes in scope, mes.c has grown into ~1500LOC, some effort must
|
~1200LOC with another ~300LOC of optional C code, some effort must
|
||||||
probably be directed into making that smaller.
|
probably be directed into making that smaller.
|
||||||
|
|
||||||
** Move mes.c into hex?
|
** Move mes.c into hex?
|
||||||
|
@ -29,25 +29,9 @@ bootstrap into Scheme.
|
||||||
|
|
||||||
** Rewrite mes.c and generate hex?
|
** Rewrite mes.c and generate hex?
|
||||||
Another idea (thanks Rutger!) is to rewrite the mes.c core in a
|
Another idea (thanks Rutger!) is to rewrite the mes.c core in a
|
||||||
C/Assembly variant and have mescc produce the simple, annotated
|
C/Assembly variant and thave mescc produce the simple, annotated
|
||||||
bootstrap binary.
|
bootstrap binary.
|
||||||
|
|
||||||
** R6RS's syntax-case
|
|
||||||
|
|
||||||
Having syntax-case should enable Mes to run [[https://savannah.gnu.org/projects/nyacc][nyacc]], which comes with a
|
|
||||||
full C parser.
|
|
||||||
|
|
||||||
*** Get Andre van Tonder's portable syntax-case up.
|
|
||||||
+ This would avoid the psyntax.ss -> psyntax.pp -> psyntax.ss
|
|
||||||
bootstrap problem with an elegantly small implementation.
|
|
||||||
|
|
||||||
- Does this support the idea of a minimal mes.c core, or is too
|
|
||||||
much Scheme support required in the core?
|
|
||||||
*** Get a version of portable psyntax.pp up.
|
|
||||||
+ Fully standard complient R6RS macros.
|
|
||||||
+ Minimal mes.c core required (not even quasiquote?).
|
|
||||||
- Sloooowwwww with intepreter?
|
|
||||||
|
|
||||||
* Bugs
|
* Bugs
|
||||||
** Core is too fat
|
** Core is too fat
|
||||||
mes.c is ~1500 lines (~10,000LOC Assembly) which seems much too big to
|
mes.c is ~1500 lines (~10,000LOC Assembly) which seems much too big to
|
||||||
|
@ -62,11 +46,15 @@ files to be prepended. Previously, this information was put in
|
||||||
GNUmakefile.
|
GNUmakefile.
|
||||||
** Garbage collection?
|
** Garbage collection?
|
||||||
Mes is using malloc without freeing anything, memory is patient these
|
Mes is using malloc without freeing anything, memory is patient these
|
||||||
days :-)
|
days :-) Sadly, a factor 10^6 less patient than the future that SICP
|
||||||
** find/fix hygiene problem: see module/mes/match.scm ;; X vs x
|
authors were hoping for (we have 10^3 less memory and 10^3 more
|
||||||
**
|
instructions).
|
||||||
** Actually do something useful, build: [[https://en.wikipedia.org/wiki/Tiny_C_Compiler][Tiny C Compiler]]
|
|
||||||
|
|
||||||
|
SICP's stop and copy Garbage Colletor (Jam Scraper?) algorithm is now
|
||||||
|
available, but it cannot be hooked up yet as even in boot mode the
|
||||||
|
core mes eval/apply is still running; it executes the Scheme based
|
||||||
|
eval/apply.
|
||||||
|
** Actually do something useful, build: [[https://en.wikipedia.org/wiki/Tiny_C_Compiler][Tiny C Compiler]]
|
||||||
* OLD: Booting from LISP-1.5 into Mes
|
* OLD: Booting from LISP-1.5 into Mes
|
||||||
|
|
||||||
Mes started out experimenting with booting from a hex-coded minimal
|
Mes started out experimenting with booting from a hex-coded minimal
|
||||||
|
|
11
NEWS
11
NEWS
|
@ -10,8 +10,17 @@ Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
|
||||||
Please send Mes bug reports to janneke@gnu.org.
|
Please send Mes bug reports to janneke@gnu.org.
|
||||||
|
|
||||||
* Changes in 0.1 (since progress report #2)
|
* Changes in 0.2 since 0.1
|
||||||
|
** Core
|
||||||
|
*** Names of symbols and strings are list of characters [WAS: c-string].
|
||||||
|
*** Macro expansion looks for sc-expand hook, enabling psyntax.
|
||||||
|
** Language
|
||||||
|
*** Mes now provides a subset of R6RS.
|
||||||
|
*** Mes now provides psyntax-5.9f-based syntax-case.
|
||||||
|
** Noteworthy bug fixes
|
||||||
|
*** Using values as second parameter of builtin function yields first value.
|
||||||
|
|
||||||
|
* Changes in 0.1 (since progress report #2)
|
||||||
** Core
|
** Core
|
||||||
*** expand_macro is now a separate function.
|
*** expand_macro is now a separate function.
|
||||||
*** A smaller core can now compiled using BOOT=1.
|
*** A smaller core can now compiled using BOOT=1.
|
||||||
|
|
Loading…
Reference in a new issue