~ chicken-core (chicken-5) f2523f3baffc5c0076c4e6094ce3840e0bbd0d6e
commit f2523f3baffc5c0076c4e6094ce3840e0bbd0d6e
Author: Evan Hanson <evhan@foldling.org>
AuthorDate: Fri Oct 9 11:48:50 2015 +1300
Commit: Peter Bex <peter@more-magic.net>
CommitDate: Mon Nov 2 21:29:01 2015 +0100
Move library list helpers to new "internal" unit
diff --git a/README b/README
index c85c2ce2..136917b5 100644
--- a/README
+++ b/README
@@ -291,6 +291,7 @@
| | |-- chicken.files.import.so
| | |-- chicken.foreign.import.so
| | |-- chicken.lolevel.import.so
+ | | |-- chicken.internal.import.so
| | |-- chicken.irregex.import.so
| | |-- chicken.ports.import.so
| | |-- chicken.posix.import.so
diff --git a/chicken-install.scm b/chicken-install.scm
index eb5f633d..eb1b2fb3 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -52,6 +52,7 @@
"chicken.files.import.so"
"chicken.foreign.import.so"
"chicken.import.so"
+ "chicken.internal.import.so"
"chicken.irregex.import.so"
"chicken.lolevel.import.so"
"chicken.ports.import.so"
diff --git a/defaults.make b/defaults.make
index 289d9eff..f3648008 100644
--- a/defaults.make
+++ b/defaults.make
@@ -261,7 +261,7 @@ PRIMITIVE_IMPORT_LIBRARIES = chicken csi chicken.foreign
POSIX_IMPORT_LIBRARY = chicken.posix
DYNAMIC_IMPORT_LIBRARIES = setup-api setup-download srfi-4
DYNAMIC_CHICKEN_IMPORT_LIBRARIES = data-structures eval expand extras \
- files irregex lolevel ports tcp utils
+ files internal irregex lolevel ports tcp utils
# targets
diff --git a/distribution/manifest b/distribution/manifest
index eb3ebe7a..f8546ef4 100644
--- a/distribution/manifest
+++ b/distribution/manifest
@@ -247,6 +247,8 @@ chicken.files.import.scm
chicken.files.import.c
chicken.foreign.import.scm
chicken.foreign.import.c
+chicken.internal.import.scm
+chicken.internal.import.c
chicken.irregex.import.scm
chicken.irregex.import.c
chicken.lolevel.import.scm
diff --git a/eval.scm b/eval.scm
index 1b30b154..1db97c09 100644
--- a/eval.scm
+++ b/eval.scm
@@ -27,7 +27,7 @@
(declare
(unit eval)
- (uses expand modules)
+ (uses expand internal modules)
(not inline ##sys#repl-read-hook ##sys#repl-print-hook
##sys#read-prompt-hook ##sys#alias-global-hook ##sys#user-read-hook
##sys#syntax-error-hook))
@@ -48,36 +48,6 @@
#define C_rnd_fix() (C_fix(rand()))
<#
-;;; Runtime support module
-
-(module chicken.core (srfi-id library-id)
-
-(import scheme chicken)
-
-;; 1 => srfi-1
-(define (srfi-id n)
- (if (fixnum? n)
- (##sys#intern-symbol
- (##sys#string-append "srfi-" (##sys#number->string n)))
- (##sys#syntax-error-hook 'require-extension "invalid SRFI number" n)))
-
-;; (foo bar baz) => foo.bar.baz
-(define (library-id lib)
- (define (library-part->string id)
- (cond ((symbol? id) (##sys#symbol->string id))
- ((number? id) (##sys#number->string id))
- (else (##sys#error "invalid library specifier" lib))))
- (cond
- ((symbol? lib) lib)
- ((list? lib)
- (do ((lib (cdr lib) (cdr lib))
- (str (library-part->string (car lib))
- (string-append str "." (library-part->string (car lib)))))
- ((null? lib) (##sys#intern-symbol str))))
- (else (##sys#error "invalid library specifier" lib))))
-
-) ; chicken.core
-
(module chicken.eval
(chicken-home define-reader-ctor dynamic-load-libraries
eval eval-handler extension-information
@@ -90,7 +60,7 @@
(import (except scheme eval load interaction-environment null-environment scheme-report-environment))
(import chicken)
-(import chicken.core
+(import chicken.internal
chicken.expand
chicken.foreign)
diff --git a/expand.scm b/expand.scm
index cef6ef41..e7ad3a13 100644
--- a/expand.scm
+++ b/expand.scm
@@ -29,7 +29,7 @@
(declare
(unit expand)
- (uses extras)
+ (uses extras internal)
(disable-interrupts)
(fixnum)
(not inline ##sys#syntax-error-hook ##sys#compiler-syntax-hook
@@ -1444,7 +1444,7 @@
(lambda (x r c)
(##sys#check-syntax 'module x '(_ _ _ . #(_ 0)))
(let ((len (length x))
- (name (chicken.core#library-id (cadr x))))
+ (name (chicken.internal#library-id (cadr x))))
(cond ((and (fx>= len 4) (c (r '=) (caddr x)))
(let* ((x (chicken.expand#strip-syntax x))
(app (cadddr x)))
diff --git a/internal.scm b/internal.scm
new file mode 100644
index 00000000..76f75af7
--- /dev/null
+++ b/internal.scm
@@ -0,0 +1,57 @@
+;;;; internal.scm - Runtime support module for CHICKEN
+;
+; Copyright (c) 2008-2015, The CHICKEN Team
+; Copyright (c) 2000-2007, Felix L. Winkelmann
+; All rights reserved.
+;
+; Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
+; conditions are met:
+;
+; Redistributions of source code must retain the above copyright notice, this list of conditions and the following
+; disclaimer.
+; Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
+; disclaimer in the documentation and/or other materials provided with the distribution.
+; Neither the name of the author nor the names of its contributors may be used to endorse or promote
+; products derived from this software without specific prior written permission.
+;
+; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+; AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+; POSSIBILITY OF SUCH DAMAGE.
+
+(declare
+ (unit internal)
+ (disable-interrupts)
+ (fixnum))
+
+(module chicken.internal
+ (srfi-id library-id)
+
+(import scheme chicken)
+
+(define (srfi-id n)
+ (if (fixnum? n)
+ (##sys#intern-symbol
+ (##sys#string-append "srfi-" (##sys#number->string n)))
+ (##sys#error "invalid SRFI number" n)))
+
+(define (library-id lib)
+ (define (library-part->string id)
+ (cond ((symbol? id) (##sys#symbol->string id))
+ ((number? id) (##sys#number->string id))
+ (else (##sys#error "invalid library specifier" lib))))
+ (cond
+ ((symbol? lib) lib)
+ ((list? lib)
+ (do ((lib (cdr lib) (cdr lib))
+ (str (library-part->string (car lib))
+ (string-append str "." (library-part->string (car lib)))))
+ ((null? lib) (##sys#intern-symbol str))))
+ (else (##sys#error "invalid library specifier" lib))))
+
+) ; chicken.internal
diff --git a/modules.scm b/modules.scm
index 4e6c4df3..5afdbbf4 100644
--- a/modules.scm
+++ b/modules.scm
@@ -26,7 +26,7 @@
(declare
(unit modules)
- (uses eval expand)
+ (uses eval expand internal)
(disable-interrupts)
(fixnum)
(hide lookup merge-se module-indirect-exports)
@@ -125,7 +125,7 @@
(thunk)))
(define (##sys#resolve-module-name name loc)
- (let loop ((n name) (done '()))
+ (let loop ((n (chicken.internal#library-id name)) (done '()))
(cond ((assq n (##sys#module-alias-environment)) =>
(lambda (a)
(let ((n2 (cdr a)))
@@ -604,7 +604,7 @@
(cond ((symbol? spec) (import-name spec))
((null? (cdr spec)) (import-name (car spec))) ; single library component
((and (c %srfi (car spec)) (fixnum? (cadr spec)) (null? (cddr spec))) ; only one number
- (import-name (chicken.core#srfi-id (cadr spec))))
+ (import-name (chicken.internal#srfi-id (cadr spec))))
(else
(let ((head (car spec))
(imports (cddr spec)))
@@ -687,7 +687,7 @@
(cdr imp) ) )
(values name `(,head ,form ,pref) (map ren impv) (map ren imps) impi))))
(else
- (import-name (chicken.core#library-id spec))))))))
+ (import-name (chicken.internal#library-id spec))))))))
(##sys#check-syntax loc x '(_ . #(_ 1)))
(let ((cm (##sys#current-module)))
(for-each
diff --git a/rules.make b/rules.make
index ffd3bfe6..67cf4023 100644
--- a/rules.make
+++ b/rules.make
@@ -37,7 +37,7 @@ SETUP_API_OBJECTS_1 = setup-api setup-download
LIBCHICKEN_SCHEME_OBJECTS_1 = \
library eval data-structures ports files extras lolevel utils tcp srfi-4 \
- $(POSIXFILE) irregex scheduler \
+ $(POSIXFILE) internal irregex scheduler \
profiler stub expand modules chicken-syntax chicken-ffi-syntax build-version
LIBCHICKEN_OBJECTS_1 = $(LIBCHICKEN_SCHEME_OBJECTS_1) runtime
LIBCHICKEN_SHARED_OBJECTS = $(LIBCHICKEN_OBJECTS_1:=$(O))
@@ -662,7 +662,8 @@ extras.c: extras.scm \
chicken.data-structures.import.scm
eval.c: eval.scm \
chicken.expand.import.scm \
- chicken.foreign.import.scm
+ chicken.foreign.import.scm \
+ chicken.internal.import.scm
files.c: files.scm \
chicken.data-structures.import.scm \
chicken.extras.import.scm \
@@ -691,8 +692,10 @@ bootstrap-lib = $(CHICKEN) $(call profile-flags, $@) $< $(CHICKEN_LIBRARY_OPTION
library.c: $(SRCDIR)library.scm $(SRCDIR)banner.scm $(SRCDIR)common-declarations.scm
$(bootstrap-lib)
+internal.c: $(SRCDIR)internal.scm
+ $(bootstrap-lib) -emit-import-library chicken.internal
eval.c: $(SRCDIR)eval.scm $(SRCDIR)common-declarations.scm $(SRCDIR)mini-srfi-1.scm
- $(bootstrap-lib) -emit-import-library chicken.eval -emit-import-library chicken.core
+ $(bootstrap-lib) -emit-import-library chicken.eval
expand.c: $(SRCDIR)expand.scm $(SRCDIR)synrules.scm $(SRCDIR)common-declarations.scm
$(bootstrap-lib) -emit-import-library chicken.expand
modules.c: $(SRCDIR)modules.scm $(SRCDIR)common-declarations.scm $(SRCDIR)mini-srfi-1.scm
diff --git a/tests/runtests.sh b/tests/runtests.sh
index 05d6c429..5b614041 100755
--- a/tests/runtests.sh
+++ b/tests/runtests.sh
@@ -41,6 +41,7 @@ for x in setup-api.so setup-api.import.so setup-download.so \
chicken.ports.import.so chicken.utils.import.so chicken.files.import.so \
chicken.posix.import.so \
chicken.extras.import.so \
+ chicken.internal.import.so \
chicken.irregex.import.so \
chicken.tcp.import.so \
chicken.foreign.import.so \
Trap