1. Proposed Structure
    1. "Decided"
      1. Removals
      2. Changes
    2. Other things

Proposed Structure

This is a summary of work that has been done for CHICKEN 5.0.

If you see any core procedures missing, please add them to the correct library and tell Evan about the omission.

Note that queues, memory-mapped-files, binary-search, scan-input-lines, group-information and object-evict have already been evicted (heh) from core and into eggs (see #1142). Please don't add their procedures.

"Decided"

(chicken bitwise) [done]
arithmetic-shift bit->boolean bitwise-and bitwise-ior bitwise-not bitwise-xor integer-length
(chicken blob) [done]
blob->string string->blob blob? blob=? blob-size make-blob
(chicken condition) [done]
abort condition condition->list condition-case condition-predicate condition-property-accessor condition? current-exception-handler get-condition-property handle-exceptions make-composite-condition make-property-condition signal with-exception-handler print-error-message
(chicken continuation) [done]
continuation-capture continuation-graft continuation-return continuation?
(chicken errno) [done]
errno errno/acces errno/again errno/badf errno/busy errno/child errno/exist errno/fault errno/intr errno/inval errno/io errno/isdir errno/mfile errno/noent errno/noexec errno/nomem errno/nospc errno/notdir errno/perm errno/pipe errno/rofs errno/spipe errno/srch errno/wouldblock
(chicken eval) [done]
eval-handler module-environment
(chicken file posix) [done]
create-fifo create-symbolic-link read-symbolic-link file-type block-device? character-device? directory? fifo? regular-file? socket? symbolic-link? file-access-time file-change-time file-modification-time duplicate-fileno set-file-permissions! set-file-position! set-file-times! set-file-owner! set-file-group! perm/irgrp perm/iroth perm/irusr perm/irwxg perm/irwxo perm/irwxu perm/isgid perm/isuid perm/isvtx perm/iwgrp perm/iwoth perm/iwusr perm/ixgrp perm/ixoth perm/ixusr open/append open/binary open/creat open/excl open/fsync open/noctty open/noinherit open/nonblock open/rdonly open/rdwr open/read open/sync open/text open/trunc open/write open/wronly fcntl/dupfd fcntl/getfd fcntl/getfl fcntl/setfd fcntl/setfl file-close file-control file-creation-mode file-link file-lock file-lock/blocking file-mkstemp file-open file-owner file-group file-permissions file-position file-read file-select file-size file-stat file-test-lock file-truncate file-unlock file-write fileno/stderr fileno/stdin fileno/stdout open-input-file* open-output-file* seek/cur seek/set seek/end port->fileno
(chicken file) [done]
create-directory delete-directory create-temporary-file create-temporary-directory delete-file delete-file* copy-file move-file rename-file file-exists? directory-exists? file-readable? file-writable? file-executable? directory find-files glob
(chicken fixnum) [done]
fx+ fx+? fx- fx-? fx/ fx/? fx* fx*? fx< fx<= fx= fx> fx>= fxand fxeven? fxior fxmax fxmin fxmod fxrem fxgcd fxlen fxneg fxnot fxodd? fxshl fxshr fxxor fixnum-bits fixnum-precision most-positive-fixnum most-negative-fixnum fixnum-bits fixnum-precision
(chicken flonum) [done]
fp+ fp- fp/ fp* fp< fp<= fp= fp> fp>= fpgcd fpfloor fpceiling fptruncate fpround fpsin fpcos fptan fpasin fpacos fpatan fpatan2 fplog fpexp fpexpt fpsqrt fpabs fpinteger? maximum-flonum minimum-flonum flonum-radix flonum-epsilon flonum-precision flonum-decimal-precision flonum-maximum-exponent flonum-minimum-exponent flonum-maximum-decimal-exponent flonum-minimum-decimal-exponent
(chicken foreign) [done]
location define-location let-location foreign-code foreign-value foreign-declare define-foreign-type define-foreign-variable foreign-primitive foreign-lambda foreign-lambda* foreign-safe-lambda foreign-safe-lambda* foreign-type-size
(chicken format) [done]
format fprintf printf sprintf
(chicken gc) [done]
set-finalizer! gc set-gc-report! current-gc-milliseconds memory-statistics force-finalizers
(chicken io) [done]
read-buffered read-byte read-list read-line read-lines read-string read-string! read-token write-byte write-line write-string
(chicken irregex) [done]
irregex irregex? string->sre maybe-string->sre sre->irregex irregex-names irregex-num-submatches string->irregex make-irregex-chunker irregex-extract irregex-fold irregex-match irregex-match? irregex-search irregex-split irregex-replace irregex-replace/all irregex-fold/chunked irregex-match/chunked irregex-search/chunked irregex-match-data? irregex-match-names irregex-match-start-index irregex-match-end-index irregex-match-num-submatches irregex-match-substring irregex-match-valid-index? irregex-match-start-chunk irregex-match-subchunk sre->string irregex-opt irregex-quote glob->sre
(chicken keyword) [done]
get-keyword keyword->string keyword? string->keyword
(chicken load) [done]
dynamic-load-libraries load-noisily load-relative load-library load-verbose provide provided? require set-dynamic-load-mode!
(chicken locative) [done]
locative->object locative-ref locative-set! locative? make-locative make-weak-locative
(chicken memory) [done]
move-memory! allocate free align-to-word make-pointer-vector address->pointer object->pointer pointer+ pointer->address pointer->object pointer-f32-ref pointer-f32-set! pointer-f64-ref pointer-f64-set! pointer-like? pointer-s16-ref pointer-s16-set! pointer-s32-ref pointer-s32-set! pointer-s64-ref pointer-s64-set! pointer-s8-ref pointer-s8-set! pointer-tag pointer-u16-ref pointer-u16-set! pointer-u32-ref pointer-u32-set! pointer-u64-ref pointer-u64-set! pointer-u8-ref pointer-u8-set! pointer-vector pointer-vector-fill! pointer-vector-length pointer-vector-ref pointer-vector-set! pointer-vector? pointer=? pointer? tag-pointer tagged-pointer?
(chicken module) [done]
module import import-for-syntax import-syntax import-syntax-for-syntax export reexport define-interface functor current-module
(chicken pathname) [done]
absolute-pathname? decompose-pathname make-pathname make-absolute-pathname pathname-directory pathname-file pathname-extension pathname-replace-directory pathname-replace-file pathname-replace-extension pathname-strip-directory pathname-strip-extension normalize-pathname directory-null? decompose-directory
(chicken platform) [done]
build-platform chicken-home chicken-version feature? features repository-path software-type software-version register-feature! unregister-feature! machine-byte-order machine-type installation-repository return-to-host
(chicken port) [done]
call-with-input-string call-with-output-string copy-port make-input-port make-output-port port-for-each port-map port-fold make-bidirectional-port make-broadcast-port make-concatenated-port with-error-output-to-port with-error-output-to-string with-input-from-port with-input-from-string with-output-to-port with-output-to-string port-name port-position set-port-name! terminal-port? terminal-name terminal-size set-buffering-mode!
(chicken pretty-print) [done]
pp pretty-print pretty-print-width
(chicken process signal) [done]
set-signal-handler! set-signal-mask! signal-handler signal-mask signal-mask! signal-masked? signal-unmask! signal/abrt signal/alrm signal/break signal/bus signal/chld signal/cont signal/fpe signal/hup signal/ill signal/int signal/io signal/kill signal/pipe signal/prof signal/quit signal/segv signal/stop signal/term signal/trap signal/tstp signal/urg signal/usr1 signal/usr2 signal/vtalrm signal/winch signal/xcpu signal/xfsz set-alarm!
(chicken process) [done]
qs system system* process-execute process-fork process-run process-signal process-spawn process-wait call-with-input-pipe call-with-output-pipe close-input-pipe close-output-pipe create-pipe open-input-pipe open-output-pipe with-input-from-pipe with-output-to-pipe process process* pipe/buf spawn/overlay spawn/wait spawn/nowait spawn/nowaito spawn/detach
(chicken process-context) [done]
command-line-arguments argv argc+argv get-environment-variable get-environment-variables set-environment-variable! unset-environment-variable! executable-pathname program-name change-directory current-directory current-effective-user-name
(chicken process-context posix) [done]
change-directory* set-root-directory! create-session current-effective-group-id current-effective-user-id current-group-id current-user-id current-user-name current-process-id parent-process-id process-group-id user-information process-sleep
(chicken random) [done]
set-pseudo-random-seed! pseudo-random-integer pseudo-random-real random-bytes
(chicken read-syntax) [done]
set-read-syntax! set-sharp-read-syntax! set-parameterized-read-syntax! copy-read-table current-read-table define-reader-ctor?
(chicken repl) [done]
repl repl-prompt quit reset reset-handler
(chicken syntax) [done]
er-macro-transformer ir-macro-transformer expand get-line-number strip-syntax syntax-error syntax begin-for-syntax define-for-syntax define-compiler-syntax let-compiler-syntax
(chicken tcp) [done]
tcp-close tcp-listen tcp-connect tcp-accept tcp-accept-ready? tcp-listener? tcp-addresses tcp-abandon-port tcp-listener-port tcp-listener-fileno tcp-port-numbers tcp-buffer-size tcp-read-timeout tcp-write-timeout tcp-accept-timeout tcp-connect-timeout
(chicken time posix) [done]
seconds->utc-time utc-time->seconds seconds->local-time seconds->string local-time->seconds string->time time->string local-timezone-abbreviation time
(chicken time) [done]
cpu-time current-milliseconds current-seconds time
(chicken sort) [done]
merge merge! sort sort! sorted? topological-sort
(chicken string) [done]
->string conc string-chop string-chomp string-compare3 string-compare3-ci reverse-string-append string-intersperse string-split string-translate string-translate* substring=? substring-ci=? substring-index substring-index-ci reverse-list->string
(chicken type) [done]
the assume define-type define-specialization compiler-typecase :
(chicken memory representation) [done]
block-ref block-set! extend-procedure extended-procedure? make-record-instance mutate-procedure! number-of-bytes number-of-slots object-become! object-copy procedure-data record->vector record-instance-length record-instance-slot record-instance-slot-set! record-instance-type record-instance? set-procedure-data! vector-like?
(chicken plist) [done]
remprop! get put! symbol-plist get-properties
(chicken base) [done]
and-let* assert bignum? case-lambda cplxnum? cut cute declare define-constant define-inline define-record define-record-type define-record-printer define-values delay-force exact-integer? exact-integer-sqrt exact-integer-nth-root flonum? fluid-let fixnum? get-call-chain include include-relative print print* add1 sub1 call/cc current-error-port error void gensym print-call-chain promise? char-name enable-warnings equal=? finite? foldl foldr getter-with-setter infinite? let-optionals let-values let*-values letrec-values letrec* make-parameter nan? nth-value notice optional parameterize procedure-information ratnum? rec receive set!-values setter signum string->uninterned-symbol subvector symbol-append unless vector-copy! vector-resize warning when require-library require-extension quotient&remainder quotient&modulo alist-ref alist-update alist-update! rassoc atom? butlast chop compress flatten intersperse join list-of? tail? constantly complement compose conjoin disjoin each flip identity o emergency-exit exit exit-handler implicit-exit-handler on-exit sleep port? port-closed? input-port-open? output-port-open? get-output-string open-input-string open-output-string flush-output case-sensitive keyword-style parentheses-synonyms symbol-escape
Removals
_exit [done]
rename to emergency-exit
use and use-for-syntax use [done]
Remove in favor of "import" and "import-for-syntax"
compile-file [done]
move to egg
compile-file-options [done]
move to egg
get-groups [done]
move to egg and rename to supplementary-group-ids
getenv [done]
rename to get-environment-variable
group-information [done]
move to egg
initialize-groups [done]
move to egg and combine with set-supplementary-group-ids!
read-all [done]
remove in favor of read-string
read-file [done]
rename to read-list
scan-input-lines [done]
move to egg
set-groups! [done]
move to egg and rename to set-supplementary-group-ids!
setenv [done]
rename to set-environment-variable!
unsetenv [done]
rename to unset-environment-variable!
yes-or-no? [done]
keep, but don't expose to users
any? [done]
remove in favor of constantly
system-information [done]
move to egg (system-information)
get-host-name [done]
moved to egg (system-information)
eval-when [done]
move to miscmacros egg
ensure [done]
move to miscmacros egg
select [done]
move to miscmacros egg
Changes
system* [done]
no longer sprintfs
sleep [done]
sleeps the process when scheduler is not loaded, sleeps the current thread when loaded (also, use a hook to implement this)
read-string [done]
returns #!eof on #!eof
condition->list [done]
Returns a plist instead of a (sort of) alist.

Other things

To make CHICKEN fully modular, these have to find a home under one of the above namespaces. This may be done in a future version.

##sys#slot, ##sys#setslot, ##sys#setislot
rename to

unsafe-block-ref, unsafe-block-set! and unsafe-block-set-immediate! and move under (chicken memory ???) where block-ref and block-set! are?