The Guile TODO List (actually, an -*-outline-*-) * Protocol These TODO items are grouped by target release version. The first group is the "Eventually" group, which is not associated w/ any particular version. Items should be initially added to this group, and then later moved under a version upon either ownership or sponsorship. Maintainers (w/ write privs) indicate ownership by `[USERNAME]'. Use `[ACTUAL-OWNER:MAINTAINER]' to indicate sponsorship, where both elements are usernames. Upon completion, simply change the "-" to a "+", but do not delete the item. At release time, the "+" entries will be deleted after review to make sure that user-visible changes are reflected in NEWS. * Eventually - [after signal handling and threading have been fixed] remove the code corresponding to GUILE_OLD_ASYNC_CLICK and the corresponding GUILE_OLD_ASYNC_CLICK macro. - implement and integrate generational garbage collection - add POSIX thread support - factor thread support out of libguile - protect common resources using mutecis from the new interface - remove the dynamic roots - revise the fluid implementation - implement the GC thread synchronization (all threads: go to sleep!) - implementing the libguileposix threads glue library - develop better representation for GOOPS objects - write Orbit CORBA interface - [after new module system] factor out modules sort.c and random.c should be factored out into separate modules - include malloc debugging code in an optional file in libguile - fix looking up procedure names in environment in backtraces - implement srcprops using double cells - use "real" procprops - add facilities for easily debugging Scheme programs from Emacs - write good interface to Tk - write translators for additional languages - Perl - Python - TCL - Emacs Lisp - Rexx - make GDB work with Guile - use the SCM trick of tagging environments with immediates (see m_letrec1) to convert source correctly in unmemocopy - eliminate argument checking for closures - Implement a thread-safe alternative to SCM's environment caches - rename ice-9 to something more obvious - implement implicitly shared substrings (thread-safe, copy on write). In this context, the concept of read-only-strings might be re-introduced to implement the symbol->string semantics of R5RS. - implement internationalized strings - revise the uniform vector implementation - make the set of error signalling functions more consistent - Fix bug reported by Sven.Hartrumpf@fernuni-hagen.de 2001-08-31: (debug-disable 'debug) has no effect if it is the first form in ~/.guile. - provide a non-extended implementation of 'define' for the R5RS module. * Before releasing 1.8.0: - deprecate old uniform vector interface. - add DLL support [ela] <-- set by ttn (my bad) - write emacs/patch.el [ttn] + outgoing - incoming + sync srfi-modules.texi [ttn] - For GOOPS: [ttn] - rewrite method cache management in C - rewrite core macros (define-class et al) in C - define C API - Compile with --enable-error-on-warning without failure. Requires a number of fixes, including num2integral.i.c and on some platforms gc_os_dep.c. Also SCM_FIXABLE etc. will produce unavoidable warnings on some platforms with some vars as written now. i.e. on alphas, SCM_FIXABLE(some_int) is always true. We need more conditional compilation or similar. - Move sample .gdbinit in HACKING to somewhere more appropriate (manual?). - Make sure we have appropriate interface numbers for shared libraries, and that we document and use the libtool conventions. [rlb]. - Update the version numbers in GUILE-VERSION and README. [rlb] - Start a new section of the NEWS file. * Before releasing 1.10.0: - in boot-9.scm: remove deprecated function `feature?´. - gc.c and gc.h: remove deprecated macros SCM_NEWCELL and SCM_NEWCELL2 together with their support staffing scm_deprecated_newcell, scm_deprecated_newcell2, scm_tc16_allocated, mark_allocated. - in gc.c and gc.h: Remove deprecated functions scm_must_malloc, scm_must_realloc, scm_must_free, scm_done_malloc, scm_done_free, scm_must_strndup, scm_must_strdup. - Change return types of smob and port free functions to void. They should all return zero by now. [TODO ends here]