-for 0.7.0:
+for early 0.8.x:
-* filed off the roughest edges (or, perhaps, at least hammered down the
- protruding rusty nails and snipped off the trailing razor wire,
- leaving some filing for later:-) from the monster
- EVAL/EVAL-WHEN/%COMPILE/DEFUN/DEFSTRUCT cleanup:
-* more renaming (esp. for global as opposed to lexical names):
- ** reserved DO-FOO-style names for iteration macros
- ** s/ARGUMENT/ARG/
- ** perhaps s/DEF-FROB/DEF/ or s/DEF-FROB/DEFINE/
- ** merged SB-C-CALL into SB-ALIEN
-* Perhaps rename "cold" stuff (e.g. SB-COLD and src/cold/) to "boot".
-* pending patches and bug reports that go in (or else get handled
- somehow, rejected/logged/whatever) before 0.7.0:
-=======================================================================
-for early 0.7.x:
-
-* patches postponed until after 0.7.0:
- ** CSR "rough patch to fix bug 106" 2001-10-28
- ** Alexey Dejneka "bug 111" 2001-12-30
-* building with CLISP (or explaining why not). This will likely involve
- a rearrangement of the build system so that it never renames
- the output from COMPILE-FILE, because CLISP's COMPILE-FILE
- outputs two (!) files and as far as I can tell LOAD uses both
- of them. Since I have other motivations for this rearrangement
- besides CLISPiosyncrasies, I'm reasonably motivated to do it.
-* urgent EVAL/EVAL-WHEN/%COMPILE/DEFUN/DEFSTRUCT cleanup:
- ** made inlining DEFUN inside MACROLET work again
- ** (also, while working on INLINE anyway, it should be easy
- to flush the old MAYBE-INLINE cruft entirely,
- including e.g. on the man page)
- ** fixed bug 137 (more)
+* test file reworking
+ ** non-x86 ports now pass irrat.pure.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
(so that slam.sh will run faster and also just because
ideally everything would be in cold init)
** profiled and tweaked
+* fixed (TRACE :REPORT PROFILE ...) interface to profiling
* more EVAL/EVAL-WHEN/%COMPILE/DEFUN/DEFSTRUCT cleanup:
** made %COMPILE understand magicality of DEFUN FOO
w.r.t. e.g. preexisting inlineness of FOO
** used %COMPILE where COMPILE-TOP-LEVEL used to be used
** removed now-redundant COMPILE-TOP-LEVEL and
FUNCTIONAL-KIND=:TOP-LEVEL stuff from the compiler
- ** made FUNCTION-NAME logic work on closures, so that
+ ** (ideally, but perhaps too hard, given what I've discovered
+ about the godawful internals of function debug names):
+ made FUNCTION-NAME logic work on closures, so that
various public functions like CL:PACKAGEP which
are now implemented as closures (because
they're structure slot accessors) won't be so
nasty in the debugger
- ** %SLOT-ACCESSOR/%SLOT-ACCESSOR stuff can probably go away,
- since we inline expand all slot accessors into
- %INSTANCE-REF and the optimizer knows all it needs
- to know about that.
-* rewrote long-standing confusing error restarts for redefining
- DEFSTRUCTs
* outstanding embarrassments
- ** cut-and-pasted DEF-BOOLEAN-ATTRIBUTE (maybe easier to fix
- now that EVAL-WHEN does what it should..)
- ** incomplete manual
- ** :IGNORE-ERRORS-P cruft in stems-and-flags.lisp-expr
- ** 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
+ ** :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!),
* 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
+ ** 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,
os_trunc_foo(), os_round_up_foo()
** removed various avoid-evaluating-C-macro-arg-twice
cruft
-* added mechanisms for automatically finding dead symbols is
- package-data.lisp-expr (i.e. those symbols not bound,
- fbound, defined as types, or whatever), and used them
- to remove dead symbols
-* made system handle stack overflow safely unless SAFETY is dominated
- by SPEED or SPACE
-* Probably get rid of or at least rework the fdefinition/encapsulation
- system so that (SYMBOL-FUNCTION 'FOO) = (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 location-independent way of referring to source
+ files in the target image, maybe a SYS: logical
+ pathname, and made the build system respect this.
+ ** provided a suitable readtable for reading in the source
+ files when necessary, and a mechanism for activating
+ this readtable rather than the standard one.
+
=======================================================================
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.)
- ** 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
* (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
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:
out of scope. (However, it still might be possible to
determine that some or all of them are hopelessly stale
and delete them.)
-===============================================================================
+=======================================================================
other known issues with no particular target date:
bugs listed on the man page