CHICKEN 5 Libraries Reorganization
This is a summary of work that has been done for CHICKEN 5.0.
The queues, memory-mapped-files, binary-search, scan-input-lines, group-information and object-evict features have been evicted (heh) from core and into eggs (see #1142), along with srfi-1, srfi-13, srfi-14, srfi-18, and srfi-69.
Libraries
- (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.
Remaining Tasks
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?