1.0.4.31: remove *internal-error-context*
[sbcl.git] / TODO
diff --git a/TODO b/TODO
index 1d77f65..0dde9c9 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,13 +1,25 @@
-for early 0.7.x:
+planned incompatible changes in 0.8.x:
+  * (not done yet, but planned:) When the profiling interface settles
+    down, it might impact TRACE. They both encapsulate functions, and
+    it's not clear yet how e.g. UNPROFILE will interact with TRACE
+    and UNTRACE. (This shouldn't matter, though, unless you are using
+    profiling. If you never profile anything, TRACE should continue to
+    behave as before.)
+  * (not done yet, but planned:) Inlining can now be controlled the
+    ANSI way, without MAYBE-INLINE, since the idiom
+       (DECLAIM (INLINE FOO))
+       (DEFUN FOO (..) ..)
+       (DECLAIM (NOTINLINE FOO))
+       (DEFUN BAR (..) (FOO ..))
+       (DEFUN BLETCH (..) (DECLARE (INLINE FOO)) (FOO ..))
+    now does what ANSI says it should. The CMU-CL-style 
+    SB-EXT:MAYBE-INLINE declaration is now deprecated and ignored.
+
+for early 0.8.x:
 
 
-* urgent EVAL/EVAL-WHEN/%COMPILE/DEFUN/DEFSTRUCT cleanup:
-       ** made inlining DEFUN inside MACROLET work again
-       ** (also, while working on INLINE anyway, it might be easy
-               to flush the old MAYBE-INLINE cruft entirely, 
-               including e.g. on the man page)
 * test file reworking
 * test file reworking
-       ** non-x86 ports now pass irrat.pure.lisp
-       ** sparc and ppc now pass bit-vector.impure-cload.lisp
+       ** ports with less than 256Mb of heap (sparc, ppc and mips)
+               now don't fail bit-vector.impure-cload.lisp
 * faster bootstrapping (both make.sh and slam.sh)
        ** added mechanisms for automatically finding dead code, and
                used them to remove dead code
 * faster bootstrapping (both make.sh and slam.sh)
        ** added mechanisms for automatically finding dead code, and
                used them to remove dead code
@@ -29,27 +41,24 @@ for early 0.7.x:
                are now implemented as closures (because
                they're structure slot accessors) won't be so
                nasty in the debugger
                are now implemented as closures (because
                they're structure slot accessors) won't be so
                nasty in the debugger
-* rewrote long-standing confusing error restarts for redefining
-       DEFSTRUCTs
 * outstanding embarrassments
 * outstanding embarrassments
-       ** cut-and-pasted DEF-BOOLEAN-ATTRIBUTE (maybe easier to fix
-               now that EVAL-WHEN works correctly..)
        ** :IGNORE-ERRORS-P cruft in stems-and-flags.lisp-expr. (It's
                reasonable to support this as a crutch when initially
                bootstrapping from balky xc hosts with their own
                idiosyncratic ideas of what merits FAILURE-P, but it's
                embarrassing to have to use it when bootstrapping 
                under SBCL!),
        ** :IGNORE-ERRORS-P cruft in stems-and-flags.lisp-expr. (It's
                reasonable to support this as a crutch when initially
                bootstrapping from balky xc hosts with their own
                idiosyncratic ideas of what merits FAILURE-P, but it's
                embarrassing to have to use it when bootstrapping 
                under SBCL!),
-       ** weird double-loading (first in GENESIS, then in warm init)
-               of src/assembly/target/*.lisp stuff, and the associated
-               weirdness of the half-baked state (compiler almost but
-               not quite ready for prime time..) of the system after
-               cold init
 * fixups now feasible because of pre7 changes
 * fixups now feasible because of pre7 changes
-       ** ANSIfied DECLAIM INLINE stuff (deprecating MAYBE-INLINE)
+       ** ANSIfied DECLAIM INLINE stuff (deprecating MAYBE-INLINE,
+               including e.g. on the man page)
+       ** (maybe) allow INLINE of a recursive function, so that the
+               body is inlined once
 * miscellaneous simple refactoring
        * belated renaming:
                ** renamed %PRIMITIVE to %VOP
 * miscellaneous simple refactoring
        * belated renaming:
                ** renamed %PRIMITIVE to %VOP
+               ** A few hundred things named FN and FCN should be
+                       named FUN (but maybe not while drichards is
+                       working on a Windows port).
        * These days ANSI C has inline functions, so..
                ** redid many cpp macros as inline functions: 
                        HeaderValue, Pointerp, CEILING, ALIGNED_SIZE,
        * These days ANSI C has inline functions, so..
                ** redid many cpp macros as inline functions: 
                        HeaderValue, Pointerp, CEILING, ALIGNED_SIZE,
@@ -58,23 +67,54 @@ for early 0.7.x:
                        os_trunc_foo(), os_round_up_foo()
                ** removed various avoid-evaluating-C-macro-arg-twice
                        cruft
                        os_trunc_foo(), os_round_up_foo()
                ** removed various avoid-evaluating-C-macro-arg-twice
                        cruft
-* added mechanisms for automatically finding dead symbols in
-       package-data.lisp-expr (i.e. those symbols not bound,
-       fbound, defined as types, or whatever), and used them
-       to remove dead symbols
 * Either get rid of or at least rework the fdefinition/encapsulation
        system so that (SYMBOL-FUNCTION 'FOO) is identically equal to
        (FDEFINITION 'FOO).
 * Either get rid of or at least rework the fdefinition/encapsulation
        system so that (SYMBOL-FUNCTION 'FOO) is identically equal to
        (FDEFINITION 'FOO).
+* Make the system sources understandable to the system, so that
+       searching for sources doesn't error out quite so often
+       (e.g. in error handlers)
+       ** provided a suitable readtable for reading in the source
+               files when necessary, and a mechanism for activating
+               this readtable rather than the standard one.
+* Some work on conditions emitted by the system
+       ** eliminated COMPILER-WARN and COMPILER-STYLE-WARN, which
+               were simply limited versions of WARN and STYLE-WARN.
+       ** made STYLE-WARN parallel WARN more closely (by accepting
+               a condition type, which should be a subtype of
+               STYLE-WARNING, and initargs, as well as a format
+               string and format arguments for SIMPLE-STYLE-WARNING.
+               (WARN can also be used to signal STYLE-WARNINGs, but
+               STYLE-WARN helps to document the code)
+       ** eliminated use of INHIBIT-WARNINGS by code emitted by the
+               system from user code.
+       ** caused use of INHIBIT-WARNINGS to signal a STYLE-WARNING.
+       ** eliminated use of INHIBIT-WARNINGS within the system
+       ** deprecated INHIBIT-WARNINGS, causing its use to signal a
+               full WARNING.
+       ** began work on developing a class hierarchy of conditions
+               along semantic lines.
+       ** annotated conditions emitted by the system to have
+               references to documentation where applicable, so that
+               users can easily find an explanation for the
+               conditions they're seeing.
+
 =======================================================================
 for 0.9:
 
 =======================================================================
 for 0.9:
 
+[ note: much of the below refers to preparation for merging SB-PCL:FOO
+  and CL:FOO.  However, it turned out to be surprisingly
+  straightforward to do this notional end goal without doing many of
+  the preparatory operations.  That doesn't mean that plenty of the
+  goals below aren't worthwhile, but the motivation is somewhat
+  different. ]
+
 * refactored in preparation for moving CLOS into cold init and merging
        SB-PCL:FOO with CL:FOO (for FOO=CLASS, FOO=CLASS-OF, etc.)
 * refactored in preparation for moving CLOS into cold init and merging
        SB-PCL:FOO with CL:FOO (for FOO=CLASS, FOO=CLASS-OF, etc.)
-       ** systematized support for MOP (new regression tests, maybe
-               new SB-MOP package..) to try to make sure things don't
-               get mislaid in the upcoming CLOS restructuring
-       ** extracted type system from SB-KERNEL into new SB-TYPE
-               package
+       ** systematized support for MOP (more regression tests, maybe) 
+               to try to make sure things don't get mislaid in the 
+               upcoming CLOS restructuring
+       ** extracted type system (and maybe CLASSOIDs) from SB-KERNEL 
+               into new SB-TYPE package
        ** reimplemented GENERIC-FUNCTION as a primitive object (or
                maybe made SB-MOP:FUNCALLABLE-STANDARD-OBJECT the
                primitive object, and then let GENERIC-FUNCTIONs
        ** reimplemented GENERIC-FUNCTION as a primitive object (or
                maybe made SB-MOP:FUNCALLABLE-STANDARD-OBJECT the
                primitive object, and then let GENERIC-FUNCTIONs
@@ -105,7 +145,6 @@ for 0.9:
 * (maybe) more refactoring in preparation for merging SB-PCL:FOO
        into CL:FOO: reimplemented type system OO dispatch
        (!DEFINE-TYPE-METHOD, etc.) in terms of CLOS OO dispatch
 * (maybe) more refactoring in preparation for merging SB-PCL:FOO
        into CL:FOO: reimplemented type system OO dispatch
        (!DEFINE-TYPE-METHOD, etc.) in terms of CLOS OO dispatch
-* merged SB-PCL:FOO into CL:FOO (and similarly CLASS-OF, etc.)
 * added some automatic tests for basic binary compatibility, in hopes
        that it might be practical to maintain binary compatibility
        between minor maintenance releases on the stable branch (but no
 * added some automatic tests for basic binary compatibility, in hopes
        that it might be practical to maintain binary compatibility
        between minor maintenance releases on the stable branch (but no
@@ -125,6 +164,10 @@ other priorities, no particular time:
        personal itch): I don't want socket-level stuff so much as I
        want RPC-level or higher (CORBA?) interfaces and (possibly
        through RPC or CORBA) GUI support
        personal itch): I don't want socket-level stuff so much as I
        want RPC-level or higher (CORBA?) interfaces and (possibly
        through RPC or CORBA) GUI support
+* Especially when ldb is not compiled in, the default "assertion failed"
+       behaviour in many parts of the runtime is unfriendly.  It may
+       be appropriate to look at some of these and see if they can be 
+       handled in some less abrupt way than aborting
 =======================================================================
 important but out of scope (for WHN, anyway: Patches from other people
 are still welcome!) until after 1.0:
 =======================================================================
 important but out of scope (for WHN, anyway: Patches from other people
 are still welcome!) until after 1.0: