Clean up regressions, easy new bugs, etc. ... fix one or two embarrassing bugs in ctor MAKE-INSTANCE optimization patch: * REINITIALIZE-INSTANCE now checks arguments again * defining methods on MAKE-INSTANCE (or its siblings) now invalidates the optimized methods for subclasses too ... trivial ADJUST-ARRAY patch
Installed ctor.lisp MAKE-INSTANCE optimization (from Gerd Moellmann, via CSR sbcl-devel 2002-12-21) ... wrote tests for those bugs which it fixes ... do not delete fast-init.lisp yet; waiting for user feedback before destroying some CVS history ... update COPYING information to reflect the new copyright owner
Fix up a theoretical bug in the COMPILE DERIVE-TYPE-OPTIMIZER ... '(VALUES FUNCTION BOOLEAN BOOLEAN), not 'FUNCTION (why only a "theoretical" bug? Well, at present, SBCL's type engine returns (VALUES FUNCTION BOOLEAN BOOLEAN) for (VALUES-TYPE-INTERSECTION 'FUNCTION '(VALUES (OR FUNCTION SYMBOL) BOOLEAN BOOLEAN)) so it DWIM. However, CMUCL doesn't (it returns the empty type instead), which led to the discovery of this error by Raymond Toy when he tried to port the optimizer.)
Fix bug 222 (as per APD sbcl-devel 2002-12-11) ... define the macro in the correct (restricted) lexical context. Fix bug in COERCE [e.g. (COERCE 2 '(SINGLE-FLOAT 3.0 4.0))] ... when converting to a real type, don't be so lenient if the original datum is a rational. Define improved DERIVE-TYPE-OPTIMIZER for COERCE ... for constant RESULT-TYPE arguments, write a branch that understands complex canonicalization ... leave in old branch for ARRAY-ELEMENT-TYPE return types Write DERIVE-TYPE-OPTIMIZER for COMPILE ... (COMPILE NIL <x>) returns an object of type FUNCTION
merged Robert E. Brown shush-the-compiler patch (sbcl-devel 2002-12-13) minor changes... ...removed DECLAIM FTYPE for SLOT-ACCESSOR-INLINE-EXPANSION-DESIGNATORS on the theory that it's too fragile (since (1) S-A-I-E-D does currently return functions, but could validly return nonfunctions in some later implementation, and (2) SBCL's declarations-are-assertions still doesn't work right for DECLAIM FTYPE) ...sometimes used THE instead of DECLARE (didn't do yet, but still intend to: add some documentation related to drichards' #lisp question about :NOT-HOST)
Fix one "outstanding embarrassment" (as per CSR sbcl-devel 2002-12-10): no more building of compiler files in warm load. ... play symlink games instead, to build the troublesome assembly files twice under different names (will need adjustments to work on non-Unix filesystems (e.g. NTFS) but no more than the rest of the build).
Fix bug 219 (ANSIfying DEFINE-COMPILER-MACRO in non-toplevel contexts): ... remove IR1 implementation, converting to a macro- and EVAL-WHEN-based implementation ... increment fasl file version number also, while I'm at it, set the COMPILER-MACRO-FUNCTION name to something useful for use in the debugger; apply similar fix for the MACRO-FUNCTION of a macro: ... move DEBUG-NAMIFY to SB-INT and export it.
A couple of array fixes ... make DESCRIBE work on rank-0 arrays (Lutz Euler sbcl-devel 2002-12-03) ... make DEFTRANSFORM MAKE-ARRAY warn (or style-warn) in the various appropriate cases: * default :INITIAL-ELEMENT not compatible with :ELEMENT-TYPE * provided :INITIAL-ELEMENT not compatible with :ELEMENT-TYPE * provided :INITIAL-ELEMENT not compatible with (UPGRADED-ARRAY-ELEMENT-TYPE ELEMENT-TYPE)
Working INLINE inside MACROLET for user code. (more or less as per CSR sbcl-devel 2002-12-03) ... change tricky cross-compiled inline functions to source transforms (including adding some functions to the function database) ... use now-working FUNCTION-LAMBDA-EXPRESSION to get the expander function for local macros ... build a complex LAMBDA-WITH-LEXENV for inlining user code (like CMUCL's INLINE-SYNTACTIC-CLOSURE-LAMBDA does) Some miscellaneous frobs ... actually signal a style warning for array code (though it might actually be in currently-dead-but-should-be-alive code) ... actually test the return value in the second half of filesys.test.sh ... minor text adjustments (no more calling this period "early 0.7.x")
Staging-post on the way to working INLINE/MACROLET ... implement previously (MACROLET ((DEF ...)) (DEF ...)) INLINE functions as defined by global !DEF macros ... don't touch SORT-VECTOR, as it is complicated ... implement a BUG 117 bogowarning workaround in code/defstruct.lisp The plan from here is to move FIND and friends into the realm of SOURCE-TRANSFORMS, so that the cross-compiler is born knowing how to compile FIND; a similar solution is likely for SORT-VECTOR. Then defensive code can be written around a version of MAYBE-INLINE-SYNTACTIC-CLOSURE (as per CSR sbcl-devel 2002-07-02 "BUG 156 and INLINE FIND"), and voil�! working INLINE.
Improve FUNCTION-LAMBDA-EXPRESSION marginally, to help in getting INLINE-inside-MACROLET working in the target compiler ... associate the function with the debug-source where possible ... we now store (LAMBDA ...), not (FUNCTION (LAMBDA ...)), so remove the bogus SECOND
embarrassment reduction: transformed ugly duplicate DEF-BOOLEAN-ATTRIBUTE into ugly OAOO (and also renamed it to !DEF-BOOLEAN-ATTRIBUTE, since not aspiring to make it exist on the target seemed to make it easier to think about) Also, as long as I'm renaming it anyway, it has no special connection to the compiler and is used in SB!ASSEM too, I moved !DEF-BOOLEAN-ATTRIBUTE from SB!C to SB!INT.