core: Remove string.
[mes.git] / HACKING
diff --git a/HACKING b/HACKING
index 7aba3451a3caecefd49d6a1b6b88ec36aecba3a1..55033408815e5be0ffb85e8e5daad6ef6ce79107 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -2,7 +2,7 @@
 
 * 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.
@@ -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)
 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?
@@ -29,33 +29,15 @@ bootstrap into Scheme.
 
 ** 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
@@ -80,9 +62,6 @@ neat, Lisp/Scheme, bootstrapping and trusted binaries are probably not
 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]]
@@ -102,6 +81,8 @@ edx, esi, edi, ebp respectively.
 *** [[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]]