source: project/wiki/core-libraries-reorganization @ 33878

Last change on this file since 33878 was 33878, checked in by evhan, 18 months ago

wiki/core-libs-reorg: Status update

File size: 11.8 KB
Line 
1[[toc:]]
2
3=== Proposed Structure
4
5This is a summary of work in progress. If you see core procedures
6missing, please add them to a suitable library and notify
7[[/users/evan-hanson|Evan]] of your changes. But more importantly, help
8us find a good structure for the [[#Undecided|remaining procedures]]!
9
10Note that {{queues}}, {{memory-mapped-files}}, {{binary-search}},
11{{scan-input-lines}}, {{group-information}} and {{object-evict}} have
12already been evicted (heh) from core and into eggs (see #1142). Please
13don't add their procedures.
14
15Below, {{patch}} means a relevant patch has been posted, {{partial}}
16means some work has been done but some remains, and {{done}} means what
17you'd expect.
18
19==== "Decided"
20
21; (chicken bitwise) [done] : arithmetic-shift bit-set? bitwise-and bitwise-ior bitwise-not bitwise-xor integer-length
22; (chicken continuation) [done] : continuation-capture continuation-graft continuation-return continuation?
23; (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
24; (chicken eval) : eval module-environment interaction-environment scheme-report-environment null-environment
25; (chicken file posix) [partial] : file-access-time file-change-time duplicate-fileno set-file-position! 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/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-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
26; (chicken file) [partial] : file-copy file-move file-type create-temporary-file create-temporary-directory delete-directory directory block-device? directory? fifo? character-device? socket? find-files glob change-file-mode change-file-owner file-read-access? file-write-access? file-execute-access? regular-file? file-modification-time delete-file delete-file* rename-file file-exists? read-symbolic-link create-symbolic-link symbolic-link? create-directory create-fifo directory-exists?
27; (chicken fixnum) [done] : 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
28; (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
29; (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
30; (chicken format) [done] : format fprintf printf sprintf
31; (chicken gc) [done] : set-finalizer! gc set-gc-report! current-gc-milliseconds memory-statistics
32; (chicken io) [done] : read-buffered read-byte read* read-line read-lines read-string read-string! read-token write-byte write-line write-string
33; (chicken keyword) [done] : get-keyword keyword->string keyword? string->keyword
34; (chicken load) : load load-noisily load-relative load-library set-dynamic-load-mode!
35; (chicken locative) [done] : locative->object locative-ref locative-set! locative? make-locative make-weak-locative
36; (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?
37; (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
38; (chicken platform) : build-platform chicken-home chicken-version extension-information feature? features provide provided? repository-path software-type software-version register-feature! unregister-feature! machine-byte-order machine-type system-information get-host-name
39; (chicken port) [partial] : call-with-input-string call-with-output-string copy-port make-input-port make-output-port port-for-each port-map port-fold make-broadcast-port make-concatenated-port with-error-output-to-port with-input-from-port with-input-from-string with-output-to-port with-output-to-string port-closed? port-name port-position port? flush-output get-output-string open-input-string open-output-string set-port-name! terminal-port? terminal-name terminal-size set-buffering-mode!
40; (chicken pretty-print) [done] : pp pretty-print pretty-print-width
41; (chicken process signal) [partial] : 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!
42; (chicken process) [partial] : qs system system* process-execute process-fork process-run process-signal 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 process-group-id create-session
43; (chicken process-context) : command-line-arguments argv get-environment-variable get-environment-variables set-environment-variable! unset-environment-variable! emergency-exit exit on-exit executable-pathname program-name current-directory set-root-directory! current-effective-group-id current-effective-user-id current-group-id current-process-id current-user-id parent-process-id current-user-name current-effective-user-name user-information current-supplementary-group-ids set-current-supplementary-group-ids!
44; (chicken random) [done] : random randomize
45; (chicken read-syntax) [done] : set-read-syntax! set-sharp-read-syntax! set-parameterized-read-syntax! copy-read-table current-read-table define-reader-ctor?
46; (chicken repl) [done] : repl repl-prompt
47; (chicken syntax) : er-macro-transformer ir-macro-transformer expand get-line-number strip-syntax syntax-error
48; (chicken tcp) [done] : tcp-close tcp-listen tcp-connect tcp-accept tcp-accept-ready? ##sys#tcp-port->fileno 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
49; (chicken time posix) [partial] : seconds->utc-time utc-time->seconds seconds->local-time seconds->string local-time->seconds string->time time->string local-timezone-abbreviation
50; (chicken time) [done] : cpu-time current-milliseconds current-seconds
51
52===== Removals
53
54; change-directory : remove in favor of {{current-directory}}
55; change-directory* : remove in favor of {{current-directory}}
56; _exit [done] : rename to {{emergency-exit}}
57; compile-file [done] : move to egg
58; compile-file-options [done] : move to egg
59; get-groups [done]: move to egg and rename to {{supplementary-group-ids}}
60; getenv [done] : rename to {{get-environment-variable}}
61; group-information [done] : move to egg
62; initialize-groups [done] : move to egg and combine with {{set-supplementary-group-ids!}}
63; read-all [done] : remove in favor of {{read-string}}
64; read-file [done] : rename to {{read-all}}
65; scan-input-lines [done] : move to egg
66; set-groups! [done] : move to egg and rename to {{set-supplementary-group-ids!}}
67; setenv [done] : rename to {{set-environment-variable!}}
68; unsetenv [done] : rename to {{unset-environment-variable!}}
69; yes-or-no? [done] : keep, but don't expose to users
70
71===== Changes
72
73; system* [done] : no longer sprintfs
74; sleep [done] : sleeps the process when scheduler is not loaded, sleeps the current thread when loaded (also, use a hook to implement this)
75; read-string [done] : returns {{#!eof}} on {{#!eof}}
76
77==== Undecided
78
79These procedures need a home. The library names here are just
80suggestions -- pick something better!
81
82; (chicken base) : flonum? fixnum? quit reset print print* add1 sub1 call/cc current-error-port error void gensym get put! remprop! promise? blob->string blob-size blob=? blob? char-name enable-warnings equal=? finite? foldl foldr get-call-chain get-properties getter-with-setter make-blob print-call-chain print-error-message procedure-information setter signum string->blob string->uninterned-symbol subvector symbol-append symbol-plist vector-copy! vector-resize warning
83; (chicken condition) : abort 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
84; (chicken alist) : alist-ref alist-update alist-update! rassoc
85; (chicken combinator) : any? constantly complement compose conjoin disjoin each flip identity o
86; (chicken list) : atom? butlast chop compress flatten intersperse join list-of? tail?
87; (chicken sort) : merge sort sorted? topological-sort
88; (chicken string) : ->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
89; (chicken module) : module import export reexport define-interface functor use
90; (chicken setup-api) : compile copy-file create-directory/parents extension-name-and-version find-header find-library host-extension install-extension install-program install-script installation-prefix move-file patch program-path remove-file* run setup-install-mode setup-root-directory standard-extension try-compile version>=?
91; (chicken memory ???) : 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?
92; (chicken ???) : {{:}} the assume define-type define-specialization compiler-typecase
93
94==== Other things
95
96To make CHICKEN fully modular, these have to find a home under one of
97the above namespaces.
98
99; {{##sys#slot}}, {{##sys#setslot}}, {{##sys#setislot}} : rename to
100  {{unsafe-block-ref}}, {{unsafe-block-set!}} and {{unsafe-block-set-immediate!}} and move under {{(chicken memory ???)}} where {{block-ref}} and {{block-set!}} are?
Note: See TracBrowser for help on using the repository browser.