* Fully source-based bootstrapping
-** R5RS-like scheme interpreter
+** R6RS-like scheme interpreter
This first part is prototyped in C by the mes.c core and Scheme
bootstrap code in module/. Of course, while mes.c is pretty small it
cannot serve as a fully source-based solution.
LISP-intepreted RRS was so bad (~1000x slower than initial LISP-1.5)
that this track was abandoned after the initial ANNOUNCE.
-The route changed trying strike a balance between core size and
-performance: still writing as much as possible in Scheme, but having a
+The route changed, trying to strike a balance between core size and
+performance: still writing as much as possible in Scheme but having a
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
-comes in scope, mes.c has grown into ~1500LOC, some effort must
+Now that portable R6RS syntax-case runs and mes.c has grown to
+~1200LOC with another ~300LOC of optional C code, some effort must
probably be directed into making that smaller.
** Move mes.c into hex?
** Rewrite mes.c and generate hex?
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.
-** 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
** Core is too fat
mes.c is ~1500 lines (~10,000LOC Assembly) which seems much too big to
start translating it to assembly/hex.
-** (mes-use-module ...) is a fake, see module/mes/base.mes.
-All top level scripts and test files (scripts/*.mes tests/*.test)
-now include appropriate (mes-use-module ...) stanzas.
-
-This hack allows for scripts/includes.mes to generate the list of
-files to be prepended. Previously, this information was put in
-GNUmakefile.
-** Garbage collection?
-Mes is using malloc without freeing anything, memory is patient these
-days :-)
-** find/fix hygiene problem: see module/mes/match.scm ;; X vs x
-**
** Actually do something useful, build: [[https://en.wikipedia.org/wiki/Tiny_C_Compiler][Tiny C Compiler]]
-
* OLD: Booting from LISP-1.5 into Mes
Mes started out experimenting with booting from a hex-coded minimal
*** [[http://www.muppetlabs.com/~breadbox/software/tiny/][Small ELF programs]]
*** [[http://www.cirosantilli.com/elf-hello-world/][Elf hello world]]
+** SC - c as s-expressions
+sc: http://sph.mn/content/3d3
** RNRS
*** [[http://www.scheme-reports.org/][Scheme Reports]]
*** [[ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-349.pdf][Scheme - Report on Scheme]]