~ chicken-core (chicken-5) 7a9f9a64552a7a13a166e5b86870111ee78b105c
commit 7a9f9a64552a7a13a166e5b86870111ee78b105c Author: unknown <felix@.(none)> AuthorDate: Mon Nov 2 18:28:53 2009 +0100 Commit: unknown <felix@.(none)> CommitDate: Mon Nov 2 18:28:53 2009 +0100 standard-extension takes keyword args; added import-only extension property diff --git a/TODO b/TODO index f7ba6f55..6a3c22a5 100644 --- a/TODO +++ b/TODO @@ -42,13 +42,10 @@ TODO for chicken -*- Outline -*- reported by Jim Ursetto reverted original patch, see patches/finalizer-closures.diff -** tools -*** chicken-bug: SMTP servers not accessible (greylisting) - * tasks -** remove TODO from master +** eggify lolevel ** pending commits @@ -103,6 +100,12 @@ Date: Sun Oct 11 00:45:40 2009 +0200 ** private commits not in pending +commit d04fa84aa85dd28f5e102278e01330e5924b7668 +Author: unknown <felix@.(none)> +Date: Mon Nov 2 17:34:36 2009 +0100 + + added culprit to an error message; removed -inlines.scm files + commit 0ef80438adf6bc8f2b4efb0891ce9ee5f645f1c6 Author: unknown <felix@.(none)> Date: Thu Oct 29 09:32:00 2009 +0100 diff --git a/eval.scm b/eval.scm index 8e9dba95..d849db32 100644 --- a/eval.scm +++ b/eval.scm @@ -1262,13 +1262,14 @@ (let ((info (##sys#extension-information id 'require-extension))) (cond (info (let ((s (assq 'syntax info)) + (nr (assq 'import-only info)) (rr (assq 'require-at-runtime info)) ) (when s (add-req id #t)) (values (impform `(##core#begin ,@(if s `((##core#require-for-syntax ',id)) '()) - ,@(if (and (not rr) s) + ,@(if (or nr (and (not rr) s)) '() `((##sys#require ,@(map (lambda (id) `',id) diff --git a/manual/Extensions b/manual/Extensions index ce545c03..6df3961a 100644 --- a/manual/Extensions +++ b/manual/Extensions @@ -112,6 +112,13 @@ as a file containing macros to be loaded at compile/macro-expansion time. Specifies extensions that should be loaded (via {{require}}) at runtime. This is mostly useful for syntax extensions that need additional support code at runtime. +===== import-only + + [extension property] (import-only) + +Specifies that this extension only provides a expansion-time code in an import library and +does not require code to be loaded at runtime. + ===== version [extension property] (version STRING) @@ -153,7 +160,7 @@ files in {{FILELIST}} to executable (for installing shell-scripts). ==== standard-extension - [procedure] (standard-extension ID VERSION [STATIC]) + [procedure] (standard-extension ID VERSION #!key static info) A convenience procedure that combines the compilation and installation of a simple single-file extension. This is roughly equivalent to: @@ -166,7 +173,8 @@ a simple single-file extension. This is roughly equivalent to: 'ID '("ID.o" "ID.so" "ID.import.so") '((version 1.0) - (static "ID.o"))) ; STATIC ... + ... `INFO' ... + (static "ID.o"))) ; if `static' is given and true ==== run diff --git a/setup-api.scm b/setup-api.scm index d76c01b2..0d0bb991 100644 --- a/setup-api.scm +++ b/setup-api.scm @@ -494,7 +494,7 @@ ;;; Convenience function -(define (standard-extension name version #!optional (static #f)) +(define (standard-extension name version #!key static (info '())) (let* ((sname (->string name)) (fname (make-pathname #f sname "scm")) (iname (make-pathname #f sname "import.scm"))) @@ -508,6 +508,7 @@ iname (make-pathname #f sname "setup")) `((version ,version) + ,@info ,@(if static `((static ,(make-pathname #f fname "o"))) '())))))Trap