~ 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