~ chicken-core (chicken-5) a0cc040dc211cab324751920887894b88202ba91


commit a0cc040dc211cab324751920887894b88202ba91
Author:     Evan Hanson <evhan@foldling.org>
AuthorDate: Fri Jan 22 13:18:05 2016 +1300
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Tue Mar 8 22:52:34 2016 +1300

    Move `cpu-time` and `current-[milli]seconds` to new chicken.time module

diff --git a/README b/README
index 3fcc9046..706ccf69 100644
--- a/README
+++ b/README
@@ -307,6 +307,7 @@
 	|   |       |-- chicken.repl.import.so
 	|   |       |-- chicken.read-syntax.import.so
 	|   |       |-- chicken.tcp.import.so
+	|   |       |-- chicken.time.import.so
 	|   |       |-- chicken.utils.import.so
 	|   |       |-- csi.import.so
 	|   |       |-- modules.db
diff --git a/batch-driver.scm b/batch-driver.scm
index 1c3f442c..253c4542 100644
--- a/batch-driver.scm
+++ b/batch-driver.scm
@@ -46,6 +46,7 @@
 	chicken.format
 	chicken.gc
 	chicken.pretty-print
+	chicken.time
 	chicken.compiler.support
 	chicken.compiler.compiler-syntax
 	chicken.compiler.core
diff --git a/c-backend.scm b/c-backend.scm
index eb93f46e..b2771e86 100644
--- a/c-backend.scm
+++ b/c-backend.scm
@@ -41,12 +41,13 @@
 	chicken.bitwise
 	chicken.data-structures
 	chicken.format
-	chicken.compiler.core
-	chicken.compiler.c-platform
-	chicken.compiler.support
 	chicken.flonum
 	chicken.foreign
-	chicken.internal)
+	chicken.internal
+	chicken.time
+	chicken.compiler.core
+	chicken.compiler.c-platform
+	chicken.compiler.support)
 
 (include "mini-srfi-1.scm")
 
diff --git a/chicken-install.scm b/chicken-install.scm
index c8e4c97b..ddb277f0 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -70,6 +70,7 @@
       "chicken.repl.import.so"
       "chicken.read-syntax.import.so"
       "chicken.tcp.import.so"
+      "chicken.time.import.so"
       "chicken.utils.import.so"
       "csi.import.so"
       "setup-api.import.so"
diff --git a/chicken.import.scm b/chicken.import.scm
index 93b04037..8a97f85d 100644
--- a/chicken.import.scm
+++ b/chicken.import.scm
@@ -47,12 +47,9 @@
    condition?
    condition->list
    cplxnum?
-   cpu-time
    current-error-port
    current-exception-handler
-   current-milliseconds
    current-read-table
-   current-seconds
    delete-file
    directory-exists?
    (dynamic-load-libraries . chicken.eval#dynamic-load-libraries)
diff --git a/defaults.make b/defaults.make
index 22944694..e636c9fd 100644
--- a/defaults.make
+++ b/defaults.make
@@ -265,7 +265,7 @@ CHICKEN_PROGRAM_OPTIONS += $(if $(PROFILE_OBJECTS),-profile)
 PRIMITIVE_IMPORT_LIBRARIES = chicken csi chicken.foreign
 DYNAMIC_IMPORT_LIBRARIES = setup-api setup-download srfi-4
 DYNAMIC_CHICKEN_IMPORT_LIBRARIES = bitwise flonum format gc io keyword \
-	locative posix pretty-print random
+	locative posix pretty-print random time
 DYNAMIC_CHICKEN_UNIT_IMPORT_LIBRARIES = continuation data-structures \
 	eval expand files internal irregex lolevel ports read-syntax \
 	repl tcp utils
diff --git a/distribution/manifest b/distribution/manifest
index 1f410116..3d9c63ba 100644
--- a/distribution/manifest
+++ b/distribution/manifest
@@ -290,6 +290,8 @@ chicken.repl.import.scm
 chicken.repl.import.c
 chicken.tcp.import.scm
 chicken.tcp.import.c
+chicken.time.import.scm
+chicken.time.import.c
 chicken.utils.import.scm
 chicken.utils.import.c
 srfi-4.import.scm
diff --git a/eval.scm b/eval.scm
index 25620448..d37ff0e1 100644
--- a/eval.scm
+++ b/eval.scm
@@ -73,6 +73,7 @@
 (define-foreign-variable uses-soname? bool "C_USES_SONAME")
 (define-foreign-variable install-lib-name c-string "C_INSTALL_LIB_NAME")
 
+;; TODO take these mappings from import files instead
 (define-constant core-chicken-modules
   '((chicken . chicken-syntax)
     (chicken.bitwise . library)
@@ -95,6 +96,7 @@
     (chicken.posix . posix)
     (chicken.pretty-print . extras)
     (chicken.tcp . tcp)
+    (chicken.time . library)
     (chicken.repl . repl)
     (chicken.read-syntax . read-syntax)
     (chicken.utils . utils)))
diff --git a/extras.scm b/extras.scm
index 6a12683b..6f0455c1 100644
--- a/extras.scm
+++ b/extras.scm
@@ -648,7 +648,7 @@
 (module chicken.random
   (randomize random)
 
-(import scheme chicken)
+(import scheme chicken chicken.time)
 
 (define (randomize . n)
   (let ((nn (if (null? n)
diff --git a/library.scm b/library.scm
index 66d82b9a..2ebdc2d9 100644
--- a/library.scm
+++ b/library.scm
@@ -211,7 +211,6 @@ EOF
 (define return-to-host (##core#primitive "C_return_to_host"))
 (define ##sys#symbol-table-info (##core#primitive "C_get_symbol_table_info"))
 (define ##sys#memory-info (##core#primitive "C_get_memory_info"))
-(define (current-milliseconds) (##core#inline_allocate ("C_a_i_current_milliseconds" 7) #f))
 (define ##sys#decode-seconds (##core#primitive "C_decode_seconds"))
 (define get-environment-variable (foreign-lambda c-string "C_getenv" c-string))
 (define executable-pathname (foreign-lambda c-string* "C_executable_pathname"))
@@ -243,6 +242,15 @@ EOF
   (##sys#check-range i 0 (##sys#size x) '##sys#block-set!)
   (##sys#setslot x i y) )
 
+(module chicken.time
+  (cpu-time current-milliseconds current-seconds)
+
+(import scheme)
+(reexport (only chicken time))
+
+(define (current-milliseconds)
+  (##core#inline_allocate ("C_a_i_current_milliseconds" 7) #f))
+
 (define (current-seconds) 
   (##core#inline_allocate ("C_a_get_current_seconds" 7) #f))
 
@@ -253,7 +261,7 @@ EOF
       ;; function entry and `buf' contents will have been extracted
       ;; before `values' gets called.
       (##core#inline_allocate ("C_a_i_cpu_time" 8) buf)
-      (values (##sys#slot buf 0) (##sys#slot buf 1)))))
+      (values (##sys#slot buf 0) (##sys#slot buf 1))))))
 
 (define (##sys#check-structure x y . loc) 
   (if (pair? loc)
@@ -4096,7 +4104,7 @@ EOF
 ;; From SRFI-33
 
 (module chicken.bitwise *
-(import scheme chicken)
+(import scheme)
 (define bitwise-and (##core#primitive "C_bitwise_and"))
 (define bitwise-ior (##core#primitive "C_bitwise_ior"))
 (define bitwise-xor (##core#primitive "C_bitwise_xor"))
diff --git a/modules.scm b/modules.scm
index 62db6e99..d850756f 100644
--- a/modules.scm
+++ b/modules.scm
@@ -933,6 +933,8 @@
   (##sys#register-primitive-module 'r5rs-null '() r4rs-syntax))
 
 (##sys#register-module-alias 'r5rs 'scheme)
+
+;; NOTE these are just here for shorthand and can be dropped whenever
 (##sys#register-module-alias 'bitwise 'chicken.bitwise)
 (##sys#register-module-alias 'continuation 'chicken.continuation)
 (##sys#register-module-alias 'data-structures 'chicken.data-structures)
@@ -954,6 +956,7 @@
 (##sys#register-module-alias 'repl 'chicken.repl)
 (##sys#register-module-alias 'read-syntax 'chicken.read-syntax)
 (##sys#register-module-alias 'tcp 'chicken.tcp)
+(##sys#register-module-alias 'time 'chicken.time)
 (##sys#register-module-alias 'utils 'chicken.utils)
 
 (register-feature! 'module-environments)
diff --git a/posixunix.scm b/posixunix.scm
index 2e596202..058b8c2a 100644
--- a/posixunix.scm
+++ b/posixunix.scm
@@ -92,7 +92,8 @@
 	chicken.files
 	chicken.foreign
 	chicken.irregex
-	chicken.ports)
+	chicken.ports
+	chicken.time)
 
 (include "posix-common.scm")
 
diff --git a/posixwin.scm b/posixwin.scm
index 84849c1b..4e46662e 100644
--- a/posixwin.scm
+++ b/posixwin.scm
@@ -719,7 +719,8 @@ EOF
 	chicken.foreign
 	chicken.irregex
 	chicken.ports
-	chicken.random)
+	chicken.random
+	chicken.time)
 
 (include "posix-common.scm")
 
diff --git a/rules.make b/rules.make
index d7788e1f..a004bcab 100644
--- a/rules.make
+++ b/rules.make
@@ -522,6 +522,7 @@ $(eval $(call declare-emitted-import-lib-dependency,chicken.bitwise,library))
 $(eval $(call declare-emitted-import-lib-dependency,chicken.flonum,library))
 $(eval $(call declare-emitted-import-lib-dependency,chicken.gc,library))
 $(eval $(call declare-emitted-import-lib-dependency,chicken.keyword,library))
+$(eval $(call declare-emitted-import-lib-dependency,chicken.time,library))
 $(eval $(call declare-emitted-import-lib-dependency,chicken.format,extras))
 $(eval $(call declare-emitted-import-lib-dependency,chicken.io,extras))
 $(eval $(call declare-emitted-import-lib-dependency,chicken.pretty-print,extras))
@@ -547,7 +548,8 @@ batch-driver.c: batch-driver.scm mini-srfi-1.scm \
 		chicken.files.import.scm \
 		chicken.format.import.scm \
 		chicken.gc.import.scm \
-		chicken.pretty-print.import.scm
+		chicken.pretty-print.import.scm \
+		chicken.time.import.scm
 c-platform.c: c-platform.scm mini-srfi-1.scm \
 		chicken.compiler.optimizer.import.scm \
 		chicken.compiler.support.import.scm \
@@ -563,7 +565,8 @@ c-backend.c: c-backend.scm mini-srfi-1.scm \
 		chicken.bitwise.import.scm \
 		chicken.data-structures.import.scm \
 		chicken.flonum.import.scm \
-		chicken.format.import.scm
+		chicken.format.import.scm \
+		chicken.time.import.scm
 core.c: core.scm mini-srfi-1.scm \
 		chicken.compiler.scrutinizer.import.scm \
 		chicken.compiler.support.import.scm \
@@ -611,7 +614,8 @@ support.c: support.scm mini-srfi-1.scm \
 		chicken.io.import.scm \
 		chicken.ports.import.scm \
 		chicken.pretty-print.import.scm \
-		chicken.random.import.scm
+		chicken.random.import.scm \
+		chicken.time.import.scm
 modules.c: modules.scm \
 		chicken.keyword.import.scm
 csc.c: csc.scm \
@@ -705,19 +709,22 @@ posixunix.c: posixunix.scm \
 		chicken.files.import.scm \
 		chicken.foreign.import.scm \
 		chicken.irregex.import.scm \
-		chicken.ports.import.scm
+		chicken.ports.import.scm \
+		chicken.time.import.scm
 posixwin.c: posixwin.scm \
 		chicken.bitwise.import.scm \
 		chicken.files.import.scm \
 		chicken.foreign.import.scm \
 		chicken.irregex.import.scm \
-		chicken.ports.import.scm
+		chicken.ports.import.scm \
+		chicken.time.import.scm
 data-structures.c: data-structures.scm \
 		chicken.foreign.import.scm
 expand.c: expand.scm \
 		chicken.keyword.import.scm
 extras.c: extras.scm \
-		chicken.data-structures.import.scm
+		chicken.data-structures.import.scm \
+		chicken.time.import.scm
 eval.c: eval.scm \
 		chicken.expand.import.scm \
 		chicken.foreign.import.scm \
@@ -736,7 +743,8 @@ ports.c: ports.scm \
 		chicken.io.import.scm
 tcp.c: tcp.scm \
 		chicken.foreign.import.scm \
-		chicken.ports.import.scm
+		chicken.ports.import.scm \
+		chicken.time.import.scm
 utils.c: utils.scm \
 		chicken.data-structures.import.scm \
 		chicken.io.import.scm \
@@ -757,7 +765,8 @@ library.c: $(SRCDIR)library.scm $(SRCDIR)banner.scm $(SRCDIR)common-declarations
 	-emit-import-library chicken.bitwise \
 	-emit-import-library chicken.flonum \
 	-emit-import-library chicken.gc \
-	-emit-import-library chicken.keyword
+	-emit-import-library chicken.keyword \
+	-emit-import-library chicken.time
 internal.c: $(SRCDIR)internal.scm $(SRCDIR)mini-srfi-1.scm
 	$(bootstrap-lib) -emit-import-library chicken.internal
 eval.c: $(SRCDIR)eval.scm $(SRCDIR)common-declarations.scm $(SRCDIR)mini-srfi-1.scm
diff --git a/support.scm b/support.scm
index b9122536..9c61ded4 100644
--- a/support.scm
+++ b/support.scm
@@ -85,7 +85,8 @@
 	chicken.io
 	chicken.ports
 	chicken.pretty-print
-	chicken.random)
+	chicken.random
+	chicken.time)
 
 (include "tweaks")
 (include "mini-srfi-1.scm")
diff --git a/tcp.scm b/tcp.scm
index f1c269d5..5f5e5196 100644
--- a/tcp.scm
+++ b/tcp.scm
@@ -145,7 +145,8 @@ EOF
 
 (import scheme chicken)
 (import chicken.foreign
-	chicken.ports)
+	chicken.ports
+	chicken.time)
 
 (include "common-declarations.scm")
 
diff --git a/tests/loopy-test.scm b/tests/loopy-test.scm
index 81e49b0f..855e06d2 100644
--- a/tests/loopy-test.scm
+++ b/tests/loopy-test.scm
@@ -1,4 +1,5 @@
-(use (only format printf))
+(use (only format printf)
+     (only time current-milliseconds))
 
 (load-relative "loopy-loop.scm")
 (load-relative "matchable.scm")
diff --git a/tests/runtests.sh b/tests/runtests.sh
index d8cd48a9..e1238d38 100755
--- a/tests/runtests.sh
+++ b/tests/runtests.sh
@@ -60,6 +60,7 @@ for x in \
     chicken.repl.import.so \
     chicken.read-syntax.import.so \
     chicken.tcp.import.so \
+    chicken.time.import.so \
     chicken.utils.import.so
 do
     cp ../$x test-repository
diff --git a/tests/scrutiny-tests.scm b/tests/scrutiny-tests.scm
index 95c9f22e..9413f075 100644
--- a/tests/scrutiny-tests.scm
+++ b/tests/scrutiny-tests.scm
@@ -20,7 +20,7 @@
 
 (string?)				; expected 1 argument, got 0
 
-(print (cpu-time))			; expected 1 result, got 2
+(print (values 1 2))			; expected 1 result, got 2
 (print (values))			; expected 1 result, got 0
 
 (let ((x 100))
diff --git a/tests/scrutiny.expected b/tests/scrutiny.expected
index 490ece11..0182af96 100644
--- a/tests/scrutiny.expected
+++ b/tests/scrutiny.expected
@@ -25,7 +25,7 @@ Warning: at toplevel:
   (scrutiny-tests.scm:21) in procedure call to `string?', expected 1 argument but was given 0 arguments
 
 Warning: at toplevel:
-  (scrutiny-tests.scm:23) expected a single result in argument #1 of procedure call `(print (cpu-time))', but received 2 results
+  (scrutiny-tests.scm:23) expected a single result in argument #1 of procedure call `(print (values 1 2))', but received 2 results
 
 Warning: at toplevel:
   (scrutiny-tests.scm:24) expected a single result in argument #1 of procedure call `(print (values))', but received zero results
diff --git a/tests/test.scm b/tests/test.scm
index 0db53d06..5c339330 100644
--- a/tests/test.scm
+++ b/tests/test.scm
@@ -2,7 +2,8 @@
 ;
 ; by Alex Shinn, lifted from match-test by felix
 
-(use data-structures) ; for "->string"
+(use data-structures) ; ->string
+(use time) ; current-milliseconds
 
 (define *pass* 0)
 (define *fail* 0)
diff --git a/types.db b/types.db
index 00b9c03d..b1a6e60d 100644
--- a/types.db
+++ b/types.db
@@ -971,8 +971,6 @@
 
 (cplxnum? (#(procedure #:pure #:predicate cplxnum) cplxnum? (*) boolean))
 
-(cpu-time (#(procedure #:clean) cpu-time () fixnum fixnum))
-
 (current-error-port
  (#(procedure #:clean #:enforce) current-error-port (#!optional output-port) output-port)
  ((output-port) (let ((#(tmp1) #(1))) 
@@ -987,12 +985,15 @@
 		  #(tmp1))))
  (() ##sys#current-exception-handler))
 
-(current-milliseconds (#(procedure #:clean) current-milliseconds () integer))
+;; time
+
+(chicken.time#cpu-time (#(procedure #:clean) chicken.time#cpu-time () fixnum fixnum))
+(chicken.time#current-seconds (#(procedure #:clean) chicken.time#current-seconds () integer))
+(chicken.time#current-milliseconds (#(procedure #:clean) chicken.time#current-milliseconds () integer))
 
 (current-read-table
  (#(procedure #:clean) current-read-table (#!optional (struct read-table)) (struct read-table)))
 
-(current-seconds (#(procedure #:clean) current-seconds () integer))
 (delete-file (#(procedure #:clean #:enforce) delete-file (string) string))
 (enable-warnings (#(procedure #:clean) enable-warnings (#!optional *) *))
 
Trap