~ chicken-core (chicken-5) d245c1cd4cad4d93cddb2e5120beb71fd23a8798


commit d245c1cd4cad4d93cddb2e5120beb71fd23a8798
Author:     Evan Hanson <evhan@foldling.org>
AuthorDate: Wed Feb 3 00:25:14 2016 +1300
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Tue Mar 8 22:52:34 2016 +1300

    Load chicken-syntax for eval and add modules for all built-in SRFIs

diff --git a/eval.scm b/eval.scm
index e17dbdca..a3e36153 100644
--- a/eval.scm
+++ b/eval.scm
@@ -27,7 +27,7 @@
 
 (declare
   (unit eval)
-  (uses expand internal modules)
+  (uses chicken-syntax expand internal modules)
   (not inline ##sys#alias-global-hook ##sys#user-read-hook ##sys#syntax-error-hook))
 
 #>
diff --git a/expand.scm b/expand.scm
index 34d03041..2c6e3317 100644
--- a/expand.scm
+++ b/expand.scm
@@ -83,6 +83,12 @@
 ;;XXX should this be in eval.scm?
 (define ##sys#active-eval-environment (make-parameter ##sys#current-environment))
 
+(define (##sys#primitive-alias sym)
+  (let ((alias (##sys#string->symbol
+		(##sys#string-append "#%" (##sys#slot sym 1)))))
+    (putp alias '##core#primitive sym)
+    alias))
+
 (define (lookup id se)
   (cond ((##core#inline "C_u_i_assq" id se) => cdr)
 	((getp id '##core#macro-alias))
diff --git a/modules.scm b/modules.scm
index 226cb418..8dce32ef 100644
--- a/modules.scm
+++ b/modules.scm
@@ -51,9 +51,6 @@
 	 (cons (car a) (if (symbol? (cdr a)) (cdr a) '<macro>)))
        se))
 
-(define-inline (se-subset names env)
-  (map (cut assq <> env) names))
-
 (define-inline (getp sym prop)
   (##core#inline "C_i_getprop" sym prop #f))
 
@@ -392,13 +389,6 @@
     (set! ##sys#module-table (cons (cons name mod) ##sys#module-table)) 
     mod))
 
-(define (##sys#primitive-alias sym)
-  (let ((palias 
-	 (##sys#string->symbol 
-	  (##sys#string-append "#%" (##sys#slot sym 1)))))
-    (putp palias '##core#primitive sym)
-    palias))
-
 (define (##sys#register-core-module name lib vexports #!optional (sexports '()))
   (let* ((me (##sys#macro-environment))
 	 (mod (make-module
@@ -970,21 +960,60 @@
 (##sys#register-module-alias 'time 'chicken.time)
 (##sys#register-module-alias 'utils 'chicken.utils)
 
-;; built-in SRFIs
-;; todo 2 8 9 11 12 15 16 28 39 8 9 11 15 16 17 26 31
-;; noop 46 61 62
+(define-inline (se-subset names env) (map (cut assq <> env) names))
 
 (##sys#register-primitive-module
  'srfi-0 '() (se-subset '(cond-expand) ##sys#default-macro-environment))
 
 (##sys#register-primitive-module
- 'srfi-6 '(open-input-string open-output-string get-output-string))
+ 'srfi-2 '() (se-subset '(and-let*) ##sys#chicken-macro-environment))
+
+(##sys#register-core-module
+ 'srfi-6 'library '(open-input-string open-output-string get-output-string))
+
+(##sys#register-primitive-module
+ 'srfi-8 '() (se-subset '(receive) ##sys#chicken-macro-environment))
+
+(##sys#register-primitive-module
+ 'srfi-9 '() (se-subset '(define-record-type) ##sys#chicken-macro-environment))
+
+(##sys#register-core-module
+ 'srfi-10 'read-syntax '((define-reader-ctor . chicken.read-syntax#define-reader-ctor)))
+
+(##sys#register-primitive-module
+ 'srfi-11 '() (se-subset '(let-values let*-values) ##sys#chicken-macro-environment))
+
+(##sys#register-core-module
+ 'srfi-12 'library
+ '(abort condition? condition-predicate condition-property-accessor
+   current-exception-handler make-composite-condition make-property-condition
+   signal with-exception-handler)
+ (se-subset '(handle-exceptions) ##sys#chicken-macro-environment))
+
+(##sys#register-primitive-module
+ 'srfi-15 '() (se-subset '(fluid-let) ##sys#chicken-macro-environment))
 
 (##sys#register-primitive-module
- 'srfi-10 '((define-reader-ctor . chicken.read-syntax#define-reader-ctor)))
+ 'srfi-16 '() (se-subset '(case-lambda) ##sys#chicken-macro-environment))
+
+(##sys#register-primitive-module
+ 'srfi-17 '() (se-subset '(set!) ##sys#default-macro-environment))
+
+(##sys#register-core-module
+ 'srfi-23 'library '(error))
 
 (##sys#register-primitive-module
- 'srfi-23 '(error))
+ 'srfi-26 '() (se-subset '(cut cute) ##sys#chicken-macro-environment))
+
+(##sys#register-core-module
+ 'srfi-28 'extras '((format . chicken.format#format)))
+
+(##sys#register-primitive-module
+ 'srfi-31 '() (se-subset '(rec) ##sys#chicken-macro-environment))
+
+(##sys#register-core-module
+ 'srfi-39 'library '(make-parameter)
+ (se-subset '(parameterize) ##sys#chicken-macro-environment))
 
 (##sys#register-primitive-module
  'srfi-55 '() (se-subset '(require-extension) ##sys#default-macro-environment))
Trap