* 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
-** 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]]
+** Core is too fat
+mes.c is ~1500 lines (~10,000LOC Assembly) which seems much too big to
+start translating it to assembly/hex.
+** 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
in scope as there is no mention of such things; only ML is mentioned
while Guile is used for bootstrapping.
-mes.c is ~1500 lines (~10,000LOC Assembly) which seems much too big to
-start translating it to assembly/hex.
-
* Assorted ideas and info
** C parser/compiler
*** [[https://savannah.gnu.org/projects/nyacc][nyacc]]
*** [[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]]