~ chicken-core (chicken-5) 47249ad1e2064f21313d8a48e8e7b4ca5bd33c1e


commit 47249ad1e2064f21313d8a48e8e7b4ca5bd33c1e
Author:     Evan Hanson <evhan@foldling.org>
AuthorDate: Mon Jan 18 22:34:58 2016 +1300
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Tue Mar 8 22:52:33 2016 +1300

    Move remaining procedures in extras to new chicken.io module
    
    This allows full removal of the extras module.

diff --git a/README b/README
index b34982bd..d0c09447 100644
--- a/README
+++ b/README
@@ -291,12 +291,12 @@
 	|   |       |-- chicken.data-structures.import.so
 	|   |       |-- chicken.eval.import.so
 	|   |       |-- chicken.expand.import.so
-	|   |       |-- chicken.extras.import.so
 	|   |       |-- chicken.files.import.so
 	|   |       |-- chicken.foreign.import.so
 	|   |       |-- chicken.format.import.so
 	|   |       |-- chicken.lolevel.import.so
 	|   |       |-- chicken.internal.import.so
+	|   |       |-- chicken.io.import.so
 	|   |       |-- chicken.irregex.import.so
 	|   |       |-- chicken.ports.import.so
 	|   |       |-- chicken.posix.import.so
diff --git a/batch-driver.scm b/batch-driver.scm
index 8c67ec14..39b26df5 100644
--- a/batch-driver.scm
+++ b/batch-driver.scm
@@ -42,7 +42,6 @@
 
 (import chicken scheme
 	chicken.data-structures
-	chicken.extras
 	chicken.files
 	chicken.format
 	chicken.pretty-print
diff --git a/c-backend.scm b/c-backend.scm
index 4b9d8ffc..9635b97e 100644
--- a/c-backend.scm
+++ b/c-backend.scm
@@ -44,7 +44,6 @@
 	chicken.compiler.core
 	chicken.compiler.c-platform
 	chicken.compiler.support
-	chicken.extras
 	chicken.foreign
 	chicken.internal)
 
diff --git a/c-platform.scm b/c-platform.scm
index b4463603..082b9149 100644
--- a/c-platform.scm
+++ b/c-platform.scm
@@ -199,7 +199,7 @@
     chicken.data-structures#substring-ci=?
     chicken.data-structures#any? chicken.data-structures#atom?
     chicken.data-structures#alist-ref chicken.data-structures#rassoc
-    chicken.extras#read-string chicken.format#format
+    chicken.io#read-string chicken.format#format
     chicken.format#printf chicken.format#sprintf chicken.format#fprintf))
 
 (set! internal-bindings
@@ -1029,7 +1029,7 @@
 
 (rewrite 'read-char 23 0 '##sys#read-char/port '##sys#standard-input)
 (rewrite 'write-char 23 1 '##sys#write-char/port '##sys#standard-output)
-(rewrite 'chicken.extras#read-string 23 1 '##sys#read-string/port '##sys#standard-input)
+(rewrite 'chicken.io#read-string 23 1 '##sys#read-string/port '##sys#standard-input)
 (rewrite 'chicken.data-structures#substring=? 23 2 '##sys#substring=? 0 0 #f)
 (rewrite 'chicken.data-structures#substring-ci=? 23 2 '##sys#substring-ci=? 0 0 #f)
 (rewrite 'chicken.data-structures#substring-index 23 2 '##sys#substring-index 0)
diff --git a/chicken-bug.scm b/chicken-bug.scm
index 142353e6..7bc302cd 100644
--- a/chicken-bug.scm
+++ b/chicken-bug.scm
@@ -27,9 +27,9 @@
 (require-library posix tcp data-structures utils extras)
 
 (import chicken.data-structures
-	chicken.extras
 	chicken.foreign
 	chicken.format
+	chicken.io
 	chicken.posix
 	chicken.tcp
 	chicken.utils)
diff --git a/chicken-ffi-syntax.scm b/chicken-ffi-syntax.scm
index 7317a92c..f37d7e23 100644
--- a/chicken-ffi-syntax.scm
+++ b/chicken-ffi-syntax.scm
@@ -40,7 +40,6 @@
   (no-procedure-checks))
 
 (import chicken.data-structures
-	chicken.extras
 	chicken.format)
 
 (include "mini-srfi-1.scm")
diff --git a/chicken-install.scm b/chicken-install.scm
index 9f396101..5c1b7242 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -33,10 +33,10 @@
   (import setup-download setup-api)
 
   (import chicken.data-structures
-	  chicken.extras
 	  chicken.files
 	  chicken.foreign
 	  chicken.format
+	  chicken.io
 	  chicken.irregex
 	  chicken.ports
 	  chicken.posix
@@ -51,12 +51,12 @@
       "chicken.data-structures.import.so"
       "chicken.eval.import.so"
       "chicken.expand.import.so"
-      "chicken.extras.import.so"
       "chicken.files.import.so"
       "chicken.foreign.import.so"
       "chicken.format.import.so"
       "chicken.import.so"
       "chicken.internal.import.so"
+      "chicken.io.import.so"
       "chicken.irregex.import.so"
       "chicken.lolevel.import.so"
       "chicken.ports.import.so"
diff --git a/chicken-status.scm b/chicken-status.scm
index 1e00bad2..bff74847 100644
--- a/chicken-status.scm
+++ b/chicken-status.scm
@@ -32,7 +32,6 @@
   (import scheme chicken)
   (import setup-api)
   (import chicken.data-structures
-	  chicken.extras
 	  chicken.files
 	  chicken.foreign
 	  chicken.format
diff --git a/chicken-uninstall.scm b/chicken-uninstall.scm
index 70f59372..fd9dc691 100644
--- a/chicken-uninstall.scm
+++ b/chicken-uninstall.scm
@@ -34,10 +34,10 @@
   (import scheme chicken)
   (import setup-api)
   (import chicken.data-structures
-	  chicken.extras
 	  chicken.files
 	  chicken.foreign
 	  chicken.format
+	  chicken.io
 	  chicken.irregex
 	  chicken.ports
 	  chicken.posix
diff --git a/core.scm b/core.scm
index a09f7d38..ac274b05 100644
--- a/core.scm
+++ b/core.scm
@@ -322,9 +322,9 @@
 	chicken.data-structures
 	chicken.eval
 	chicken.expand
-	chicken.extras
 	chicken.foreign
 	chicken.format
+	chicken.io
 	chicken.pretty-print)
 
 (define (d arg1 . more)
diff --git a/csc.scm b/csc.scm
index 2afa6f44..e67da2e8 100644
--- a/csc.scm
+++ b/csc.scm
@@ -31,7 +31,6 @@
 
 (import chicken.posix
 	chicken.data-structures
-	chicken.extras
 	chicken.files
 	chicken.format
 	chicken.utils)
diff --git a/csi.scm b/csi.scm
index 5cc46ba6..55946669 100644
--- a/csi.scm
+++ b/csi.scm
@@ -55,8 +55,8 @@ EOF
 	history-add history-ref history-clear history-show) )
 
 (import chicken.data-structures
-	chicken.extras
 	chicken.format
+	chicken.io
 	chicken.ports
 	chicken.pretty-print
 	chicken.repl)
diff --git a/defaults.make b/defaults.make
index 8f46a069..e72030ab 100644
--- a/defaults.make
+++ b/defaults.make
@@ -264,9 +264,9 @@ 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 format posix pretty-print random
+DYNAMIC_CHICKEN_IMPORT_LIBRARIES = bitwise format io posix pretty-print random
 DYNAMIC_CHICKEN_UNIT_IMPORT_LIBRARIES = data-structures eval repl expand \
-	continuation extras files internal irregex lolevel ports tcp utils
+	continuation files internal irregex lolevel ports tcp utils
 
 # targets
 
diff --git a/distribution/manifest b/distribution/manifest
index af96b06d..e248e3a9 100644
--- a/distribution/manifest
+++ b/distribution/manifest
@@ -254,8 +254,6 @@ chicken.eval.import.scm
 chicken.eval.import.c
 chicken.expand.import.scm
 chicken.expand.import.c
-chicken.extras.import.scm
-chicken.extras.import.c
 chicken.files.import.scm
 chicken.files.import.c
 chicken.foreign.import.scm
@@ -264,6 +262,8 @@ chicken.format.import.scm
 chicken.format.import.c
 chicken.internal.import.scm
 chicken.internal.import.c
+chicken.io.import.scm
+chicken.io.import.c
 chicken.irregex.import.scm
 chicken.irregex.import.c
 chicken.lolevel.import.scm
diff --git a/eval.scm b/eval.scm
index 1d1136bc..15445fe3 100644
--- a/eval.scm
+++ b/eval.scm
@@ -79,11 +79,11 @@
     (chicken.data-structures . data-structures)
     (chicken.eval . eval)
     (chicken.expand . expand)
-    (chicken.extras . extras)
     (chicken.files . files)
     (chicken.foreign . chicken-ffi-syntax)
     (chicken.format . extras)
     (chicken.internal . internal)
+    (chicken.io . extras)
     (chicken.irregex . irregex)
     (chicken.lolevel . lolevel)
     (chicken.ports . ports)
diff --git a/extras.scm b/extras.scm
index 3d7491f6..a766d209 100644
--- a/extras.scm
+++ b/extras.scm
@@ -29,7 +29,7 @@
  (unit extras)
  (uses data-structures))
 
-(module chicken.extras
+(module chicken.io
   (read-buffered read-byte read-file read-line
    read-lines read-string read-string! read-token
    write-byte write-line write-string)
@@ -243,7 +243,7 @@
   (##sys#check-output-port port #t 'write-byte)
   (##sys#write-char-0 (integer->char byte) port) )
 
-) ; module chicken.extras
+) ; module chicken.io
 
 
 ;;; Pretty print:
diff --git a/files.scm b/files.scm
index 6d367b98..4cb2c77f 100644
--- a/files.scm
+++ b/files.scm
@@ -62,8 +62,8 @@ EOF
 
 (import scheme chicken)
 (import chicken.data-structures
-	chicken.extras
 	chicken.foreign
+	chicken.io
 	chicken.irregex)
 
 (include "common-declarations.scm")
diff --git a/lfa2.scm b/lfa2.scm
index 1301c199..6b74f4b2 100644
--- a/lfa2.scm
+++ b/lfa2.scm
@@ -41,7 +41,6 @@
 
 (import chicken scheme
 	chicken.compiler.support
-	chicken.extras
 	chicken.format)
 
 (include "tweaks")
diff --git a/manual/Unit extras b/manual/Unit extras
index 4583b8db..7c16be42 100644
--- a/manual/Unit extras	
+++ b/manual/Unit extras	
@@ -119,8 +119,11 @@ of {{(current-output-port)}}.
 Specifies the maximal line-width for pretty printing, after which line
 wrap will occur.
 
+
 === Input/Output extensions
 
+These procedures are provided by the {{(chicken io)}} module.
+
 ==== read-byte
 ==== write-byte
 
diff --git a/modules.scm b/modules.scm
index 63c2bd7b..670e28ec 100644
--- a/modules.scm
+++ b/modules.scm
@@ -934,11 +934,11 @@
 (##sys#register-module-alias 'bitwise 'chicken.bitwise)
 (##sys#register-module-alias 'continuation 'chicken.continuation)
 (##sys#register-module-alias 'data-structures 'chicken.data-structures)
-(##sys#register-module-alias 'extras 'chicken.extras)
 (##sys#register-module-alias 'expand 'chicken.expand)
 (##sys#register-module-alias 'files 'chicken.files)
 (##sys#register-module-alias 'foreign 'chicken.foreign)
 (##sys#register-module-alias 'format 'chicken.format)
+(##sys#register-module-alias 'io 'chicken.io)
 (##sys#register-module-alias 'irregex 'chicken.irregex)
 (##sys#register-module-alias 'lolevel 'chicken.lolevel)
 (##sys#register-module-alias 'ports 'chicken.ports)
diff --git a/ports.scm b/ports.scm
index 2d5b40d5..7bb4479f 100644
--- a/ports.scm
+++ b/ports.scm
@@ -54,7 +54,7 @@
    with-output-to-string)
 
 (import scheme chicken)
-(import chicken.extras)
+(import chicken.io)
 
 (include "common-declarations.scm")
 
diff --git a/posixwin.scm b/posixwin.scm
index 22e3e0d6..84849c1b 100644
--- a/posixwin.scm
+++ b/posixwin.scm
@@ -715,7 +715,6 @@ EOF
 (import scheme chicken)
 (import chicken.bitwise
 	chicken.data-structures
-	chicken.extras
 	chicken.files
 	chicken.foreign
 	chicken.irregex
diff --git a/rules.make b/rules.make
index a44f15a3..d786be10 100644
--- a/rules.make
+++ b/rules.make
@@ -520,6 +520,7 @@ $(foreach lib, $(filter-out chicken,$(COMPILER_OBJECTS_1)),\
 $(eval $(call declare-emitted-import-lib-dependency,chicken.posix,$(POSIXFILE)))
 $(eval $(call declare-emitted-import-lib-dependency,chicken.bitwise,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))
 $(eval $(call declare-emitted-import-lib-dependency,chicken.random,extras))
 
@@ -546,7 +547,7 @@ c-platform.c: c-platform.scm mini-srfi-1.scm \
 		chicken.compiler.support.import.scm \
 		chicken.compiler.core.import.scm \
 		chicken.data-structures.import.scm \
-		chicken.extras.import.scm \
+		chicken.io.import.scm \
 		chicken.files.import.scm \
 		chicken.foreign.import.scm
 c-backend.c: c-backend.scm mini-srfi-1.scm \
@@ -555,7 +556,6 @@ c-backend.c: c-backend.scm mini-srfi-1.scm \
 		chicken.compiler.core.import.scm \
 		chicken.bitwise.import.scm \
 		chicken.data-structures.import.scm \
-		chicken.extras.import.scm \
 		chicken.format.import.scm
 core.c: core.scm mini-srfi-1.scm \
 		chicken.compiler.scrutinizer.import.scm \
@@ -563,29 +563,27 @@ core.c: core.scm mini-srfi-1.scm \
 		chicken.data-structures.import.scm \
 		chicken.eval.import.scm \
 		chicken.expand.import.scm \
-		chicken.extras.import.scm \
 		chicken.format.import.scm \
+		chicken.io.import.scm \
 		chicken.pretty-print.import.scm
 optimizer.c: optimizer.scm mini-srfi-1.scm \
 		chicken.compiler.support.import.scm \
 		chicken.data-structures.import.scm \
-		chicken.extras.import.scm \
+		chicken.io.import.scm \
 		chicken.foreign.import.scm
 scheduler.c: scheduler.scm \
-		chicken.extras.import.scm \
 		chicken.format.import.scm
 scrutinizer.c: scrutinizer.scm mini-srfi-1.scm \
 		chicken.compiler.support.import.scm \
 		chicken.data-structures.import.scm \
 		chicken.expand.import.scm \
-		chicken.extras.import.scm \
 		chicken.files.import.scm \
 		chicken.format.import.scm \
+		chicken.io.import.scm \
 		chicken.ports.import.scm \
 		chicken.pretty-print.import.scm
 lfa2.c: lfa2.scm mini-srfi-1.scm \
 		chicken.compiler.support.import.scm \
-		chicken.extras.import.scm \
 		chicken.format.import.scm
 compiler-syntax.c: compiler-syntax.scm mini-srfi-1.scm \
 		chicken.compiler.support.import.scm \
@@ -594,15 +592,14 @@ compiler-syntax.c: compiler-syntax.scm mini-srfi-1.scm \
 		chicken.format.import.scm
 chicken-ffi-syntax.c: chicken-ffi-syntax.scm \
 		chicken.data-structures.import.scm \
-		chicken.extras.import.scm \
 		chicken.format.import.scm
 support.c: support.scm mini-srfi-1.scm \
 		chicken.data-structures.import.scm \
 		chicken.expand.import.scm \
-		chicken.extras.import.scm \
 		chicken.files.import.scm \
 		chicken.foreign.import.scm \
 		chicken.format.import.scm \
+		chicken.io.import.scm \
 		chicken.ports.import.scm \
 		chicken.pretty-print.import.scm \
 		chicken.random.import.scm
@@ -616,22 +613,21 @@ csc.c: csc.scm \
 		chicken.utils.import.scm
 csi.c: csi.scm \
 		chicken.data-structures.import.scm \
-		chicken.extras.import.scm \
 		chicken.format.import.scm \
+		chicken.io.import.scm \
 		chicken.ports.import.scm \
 		chicken.pretty-print.import.scm
 chicken-bug.c: chicken-bug.scm \
 		chicken.data-structures.import.scm \
-		chicken.extras.import.scm \
 		chicken.foreign.import.scm \
 		chicken.format.import.scm \
+		chicken.io.import.scm \
 		chicken.tcp.import.scm \
 		chicken.utils.import.scm
 chicken-profile.c: chicken-profile.scm \
 		chicken.data-structures.import.scm
 chicken-status.c: chicken-status.scm \
 		chicken.data-structures.import.scm \
-		chicken.extras.import.scm \
 		chicken.files.import.scm \
 		chicken.foreign.import.scm \
 		chicken.format.import.scm \
@@ -642,10 +638,10 @@ chicken-status.c: chicken-status.scm \
 		setup-api.import.scm
 chicken-install.c: chicken-install.scm \
 		chicken.data-structures.import.scm \
-		chicken.extras.import.scm \
 		chicken.files.import.scm \
 		chicken.foreign.import.scm \
 		chicken.format.import.scm \
+		chicken.io.import.scm \
 		chicken.irregex.import.scm \
 		chicken.ports.import.scm \
 		chicken.posix.import.scm \
@@ -655,10 +651,10 @@ chicken-install.c: chicken-install.scm \
 		setup-download.import.scm
 chicken-uninstall.c: chicken-uninstall.scm \
 		chicken.data-structures.import.scm \
-		chicken.extras.import.scm \
 		chicken.files.import.scm \
 		chicken.foreign.import.scm \
 		chicken.format.import.scm \
+		chicken.io.import.scm \
 		chicken.irregex.import.scm \
 		chicken.ports.import.scm \
 		chicken.posix.import.scm \
@@ -666,10 +662,10 @@ chicken-uninstall.c: chicken-uninstall.scm \
 		setup-api.import.scm
 setup-api.c: setup-api.scm \
 		chicken.data-structures.import.scm \
-		chicken.extras.import.scm \
 		chicken.files.import.scm \
 		chicken.foreign.import.scm \
 		chicken.format.import.scm \
+		chicken.io.import.scm \
 		chicken.irregex.import.scm \
 		chicken.ports.import.scm \
 		chicken.posix.import.scm \
@@ -677,10 +673,10 @@ setup-api.c: setup-api.scm \
 		chicken.utils.import.scm
 setup-download.c: setup-download.scm \
 		chicken.data-structures.import.scm \
-		chicken.extras.import.scm \
 		chicken.files.import.scm \
 		chicken.foreign.import.scm \
 		chicken.format.import.scm \
+		chicken.io.import.scm \
 		chicken.irregex.import.scm \
 		chicken.ports.import.scm \
 		chicken.posix.import.scm \
@@ -715,19 +711,19 @@ repl.c: repl.scm \
 		chicken.eval.import.scm
 files.c: files.scm \
 		chicken.data-structures.import.scm \
-		chicken.extras.import.scm \
+		chicken.io.import.scm \
 		chicken.foreign.import.scm \
 		chicken.irregex.import.scm
 lolevel.c: lolevel.scm \
 		chicken.foreign.import.scm
 ports.c: ports.scm \
-		chicken.extras.import.scm
+		chicken.io.import.scm
 tcp.c: tcp.scm \
 		chicken.foreign.import.scm \
 		chicken.ports.import.scm
 utils.c: utils.scm \
 		chicken.data-structures.import.scm \
-		chicken.extras.import.scm \
+		chicken.io.import.scm \
 		chicken.files.import.scm \
 		chicken.foreign.import.scm \
 		chicken.format.import.scm \
@@ -754,8 +750,8 @@ modules.c: $(SRCDIR)modules.scm $(SRCDIR)common-declarations.scm $(SRCDIR)mini-s
 	$(bootstrap-lib)
 extras.c: $(SRCDIR)extras.scm $(SRCDIR)common-declarations.scm
 	$(bootstrap-lib) \
-	-emit-import-library chicken.extras \
 	-emit-import-library chicken.format \
+	-emit-import-library chicken.io \
 	-emit-import-library chicken.pretty-print \
 	-emit-import-library chicken.random
 posixunix.c: $(SRCDIR)posixunix.scm $(SRCDIR)posix-common.scm $(SRCDIR)common-declarations.scm
diff --git a/scheduler.scm b/scheduler.scm
index 43a6525d..20dba763 100644
--- a/scheduler.scm
+++ b/scheduler.scm
@@ -27,7 +27,7 @@
 
 (declare
   (unit scheduler)
-  (uses extras)
+  (uses extras) ; for sprintf
   (disable-interrupts)
   (hide ready-queue-head ready-queue-tail ##sys#timeout-list
 	##sys#update-thread-state-buffer ##sys#restore-thread-state-buffer
@@ -133,8 +133,7 @@ C_inline void C_fdset_add(int fd, int input, int output) {
 EOF
 ) )
 
-(import chicken.extras
-	chicken.format)
+(import chicken.format)
 
 (include "common-declarations.scm")
 
diff --git a/scrutinizer.scm b/scrutinizer.scm
index 3f94060d..42d4c12e 100644
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -36,9 +36,9 @@
 	chicken.compiler.support
 	chicken.data-structures
 	chicken.expand
-	chicken.extras
-	chicken.format
 	chicken.files
+	chicken.format
+	chicken.io
 	chicken.ports
 	chicken.pretty-print)
 
diff --git a/setup-api.scm b/setup-api.scm
index b216bef5..2398ff84 100644
--- a/setup-api.scm
+++ b/setup-api.scm
@@ -67,14 +67,14 @@
   
   (import scheme chicken
 	  chicken.data-structures
-	  chicken.extras
 	  chicken.files
 	  chicken.foreign
 	  chicken.format
+	  chicken.io
+	  chicken.irregex
 	  chicken.ports
 	  chicken.posix
 	  chicken.pretty-print
-	  chicken.irregex
 	  chicken.utils)
 
 (include "mini-srfi-1.scm")
diff --git a/setup-download.scm b/setup-download.scm
index 21836e55..37a9022d 100644
--- a/setup-download.scm
+++ b/setup-download.scm
@@ -39,10 +39,10 @@
   (import scheme chicken)
   (import setup-api
 	  chicken.data-structures
-	  chicken.extras
 	  chicken.files
 	  chicken.foreign
 	  chicken.format
+	  chicken.io
 	  chicken.irregex
 	  chicken.posix
 	  chicken.tcp
diff --git a/support.scm b/support.scm
index ccc1b25c..8ad6e52b 100644
--- a/support.scm
+++ b/support.scm
@@ -78,10 +78,10 @@
 (import chicken scheme
 	chicken.data-structures
 	chicken.expand
-	chicken.extras
 	chicken.files
 	chicken.foreign
 	chicken.format
+	chicken.io
 	chicken.ports
 	chicken.pretty-print
 	chicken.random)
diff --git a/tests/import-library-test2.scm b/tests/import-library-test2.scm
index e0c3b2b0..fe449297 100644
--- a/tests/import-library-test2.scm
+++ b/tests/import-library-test2.scm
@@ -1,7 +1,7 @@
 (require-library import-library-test1)
 
 (module bar (xcase)
-  (import scheme chicken extras foo)
+  (import scheme chicken foo)
   (assert (equal? '(123) (foo)))
   (assert (= 2 (xcase 1 ((1) 2)))))
 
diff --git a/tests/library-tests.scm b/tests/library-tests.scm
index 5d860f53..5ec4d088 100644
--- a/tests/library-tests.scm
+++ b/tests/library-tests.scm
@@ -1,6 +1,6 @@
 ;;;; library-tests.scm
 
-(use bitwise extras ports)
+(use bitwise ports)
 
 (define-syntax assert-fail
   (syntax-rules ()
diff --git a/tests/numbers-test.scm b/tests/numbers-test.scm
index 7631fb34..0e56d0ec 100644
--- a/tests/numbers-test.scm
+++ b/tests/numbers-test.scm
@@ -1,7 +1,8 @@
 ;;;; numbers-test.scm
 
 (include "test.scm")
-(use bitwise extras format posix)
+
+(use bitwise format posix)
 
 ;; The default "comparator" doesn't know how to deal with extended number types
 (current-test-comparator
diff --git a/tests/port-tests.scm b/tests/port-tests.scm
index 8240c148..2f759b63 100644
--- a/tests/port-tests.scm
+++ b/tests/port-tests.scm
@@ -1,4 +1,4 @@
-(require-extension data-structures extras format files ports posix srfi-4 tcp utils)
+(require-extension data-structures format files io ports posix srfi-4 tcp utils)
 
 (include "test.scm")
 (test-begin)
diff --git a/tests/reader-tests.scm b/tests/reader-tests.scm
index a79684d3..7dd5b7cf 100644
--- a/tests/reader-tests.scm
+++ b/tests/reader-tests.scm
@@ -1,7 +1,7 @@
 ;;;; reader-tests.scm
 
 
-(use (only extras read-line)
+(use (only io read-line)
      (only ports with-input-from-string with-output-to-string)
      (only utils read-all))
 
diff --git a/tests/reexport-tests.scm b/tests/reexport-tests.scm
index 1d307a92..12fdd35d 100644
--- a/tests/reexport-tests.scm
+++ b/tests/reexport-tests.scm
@@ -27,11 +27,9 @@
        (import scheme)
        (reexport imp ...)))))
 
-(compound-module 
+(compound-module
  big-chicken
- chicken ports files extras pretty-print data-structures)
-
-(require-library extras data-structures)
+ chicken ports files pretty-print data-structures)
 
 (module m3 ()
   (import scheme big-chicken)
diff --git a/tests/runtests.sh b/tests/runtests.sh
index abe14a6e..5fdeb34b 100755
--- a/tests/runtests.sh
+++ b/tests/runtests.sh
@@ -42,11 +42,11 @@ for x in \
     chicken.bitwise.import.so \
     chicken.continuation.import.so \
     chicken.data-structures.import.so \
-    chicken.extras.import.so \
     chicken.files.import.so \
     chicken.foreign.import.so \
     chicken.format.import.so \
     chicken.internal.import.so \
+    chicken.io.import.so \
     chicken.irregex.import.so \
     chicken.lolevel.import.so \
     chicken.ports.import.so \
diff --git a/tests/sgrep.scm b/tests/sgrep.scm
index 6dc442f1..7a3522c6 100644
--- a/tests/sgrep.scm
+++ b/tests/sgrep.scm
@@ -1,7 +1,7 @@
 ;;;; sgrep.scm - grepping benchmark
 
 
-(use irregex extras utils ports)
+(use io irregex ports utils)
 
 
 (define big-string
diff --git a/tests/symbolgc-tests.scm b/tests/symbolgc-tests.scm
index 19cc84cc..f37074ae 100644
--- a/tests/symbolgc-tests.scm
+++ b/tests/symbolgc-tests.scm
@@ -2,9 +2,6 @@
 ;
 ; - run this with the "-:w" option
 
-
-(use extras)
-
 (assert (##sys#fudge 15) "please run this test with the `-:w' runtime option")
 
 (define (gcsome #!optional (n 100))
diff --git a/tests/test-finalizers.scm b/tests/test-finalizers.scm
index 320a0976..36b51220 100644
--- a/tests/test-finalizers.scm
+++ b/tests/test-finalizers.scm
@@ -1,7 +1,5 @@
 ;;;; test-finalizers.scm
 
-(use extras)
-
 (##sys#eval-debug-level 0)		; disable keeping trace-buffer with frameinfo
 
 (define x (list 1 2 3))
diff --git a/tests/test-irregex.scm b/tests/test-irregex.scm
index a516ebb7..43af01a7 100644
--- a/tests/test-irregex.scm
+++ b/tests/test-irregex.scm
@@ -1,7 +1,7 @@
 ;;;: test-irregex.scm
 
 
-(use data-structures extras format irregex ports)
+(use data-structures format io irregex ports)
 
 (include "test.scm")
 
diff --git a/types.db b/types.db
index 42c1ef21..4fe8c8b9 100644
--- a/types.db
+++ b/types.db
@@ -1516,20 +1516,19 @@
 (chicken.data-structures#substring=? (#(procedure #:clean #:enforce #:foldable) chicken.data-structures#substring=? (string string #!optional fixnum fixnum fixnum) boolean))
 (chicken.data-structures#tail? (#(procedure #:clean) chicken.data-structures#tail? (* *) boolean))
 
-
-;; extras
-
-(chicken.extras#read-buffered (#(procedure #:enforce) chicken.extras#read-buffered (#!optional input-port) string))
-(chicken.extras#read-byte (#(procedure #:enforce) chicken.extras#read-byte (#!optional input-port) *))
-(chicken.extras#read-file (#(procedure #:enforce) chicken.extras#read-file (#!optional (or input-port string) (procedure (input-port) *) fixnum) list))
-(chicken.extras#read-line (#(procedure #:enforce) chicken.extras#read-line (#!optional input-port (or false fixnum)) (or eof string)))
-(chicken.extras#read-lines (#(procedure #:enforce) chicken.extras#read-lines (#!optional (or input-port string) fixnum) (list-of string)))
-(chicken.extras#read-string (#(procedure #:enforce) chicken.extras#read-string (#!optional (or fixnum false) input-port) string))
-(chicken.extras#read-string! (#(procedure #:enforce) chicken.extras#read-string! ((or fixnum false) string #!optional input-port fixnum) fixnum))
-(chicken.extras#read-token (#(procedure #:enforce) chicken.extras#read-token ((procedure (char) *) #!optional input-port) string))
-(chicken.extras#write-byte (#(procedure #:enforce) chicken.extras#write-byte (fixnum #!optional output-port) undefined))
-(chicken.extras#write-line (#(procedure #:enforce) chicken.extras#write-line (string #!optional output-port) undefined))
-(chicken.extras#write-string (#(procedure #:enforce) chicken.extras#write-string (string #!optional * output-port) undefined))
+;; io
+
+(chicken.io#read-buffered (#(procedure #:enforce) chicken.io#read-buffered (#!optional input-port) string))
+(chicken.io#read-byte (#(procedure #:enforce) chicken.io#read-byte (#!optional input-port) *))
+(chicken.io#read-file (#(procedure #:enforce) chicken.io#read-file (#!optional (or input-port string) (procedure (input-port) *) fixnum) list))
+(chicken.io#read-line (#(procedure #:enforce) chicken.io#read-line (#!optional input-port (or false fixnum)) (or eof string)))
+(chicken.io#read-lines (#(procedure #:enforce) chicken.io#read-lines (#!optional (or input-port string) fixnum) (list-of string)))
+(chicken.io#read-string (#(procedure #:enforce) chicken.io#read-string (#!optional (or fixnum false) input-port) string))
+(chicken.io#read-string! (#(procedure #:enforce) chicken.io#read-string! ((or fixnum false) string #!optional input-port fixnum) fixnum))
+(chicken.io#read-token (#(procedure #:enforce) chicken.io#read-token ((procedure (char) *) #!optional input-port) string))
+(chicken.io#write-byte (#(procedure #:enforce) chicken.io#write-byte (fixnum #!optional output-port) undefined))
+(chicken.io#write-line (#(procedure #:enforce) chicken.io#write-line (string #!optional output-port) undefined))
+(chicken.io#write-string (#(procedure #:enforce) chicken.io#write-string (string #!optional * output-port) undefined))
 
 ;; pretty-print
 
diff --git a/utils.scm b/utils.scm
index 8c015cab..c05a81e2 100644
--- a/utils.scm
+++ b/utils.scm
@@ -41,10 +41,10 @@
 
 (import scheme chicken)
 (import chicken.data-structures
-	chicken.extras
 	chicken.files
 	chicken.foreign
 	chicken.format
+	chicken.io
 	chicken.posix
 	chicken.irregex)
 
Trap