* Make two passes: first, compute live _sets_, second, order
them to stacks;
* new VOP: %%NIP-VALUES, removing dead UVL from the middle of
the stack (currently implemented only on X86).
Better %SXHASH-SUBSTRING (patch Juho Snellman sbcl-devel 2004-03-09)
... frob comments a little
... make the same FLET workaround in %SXHASH-SIMPLE-SUBSTRING
... probably fasl-incompatible with 0.8.8.22, but I've already
changed the fasl version number once this cycle. Let's
see if anyone complains :)
... 20% faster at compiling mk-defsystem on DB's iMac
(MORE SPEED!)
Less pprint suboptimiality
... s/simple-string/(simple-array character (*))/ and add
explicit coercions;
... this should remove most of the performance degradation in the
pretty printer introduced around 0.8.1.x when (vector nil)
was recognized as a string type.
Make unknown variables signal a compile-time warning.
... slightly hacky (if (eq kind :variable) ...) in the
warning logic itself;
... rearrange bits of the build to eliminate technically
undefined forward references;
... fix for multiple *CURRENT-CATCH-BLOCK* and
*CURRENT-UNWIND-PROTECT-BLOCK*: we now have one and
only one of each variable, rather than three
Hey look! An ANSI bug that's more annoying than (vector nil)!
... printing #\Space is defined to yield #\
... did you see the whitespace at the end of that line?
Fix for *PRINT-CASE* :CAPITALIZE and word determination (see
CLHS *PRINT-CASE* and STRING-CAPITALIZE)
... also note unpleasant discovery about lack of threadsafety
in the printer
* VALID-FUN-USE:
** when checking result type, intersect NODE-DERIVED-TYPE with
the trusted type assertion, if it exists;
** recognize NIL for RESULT-TEST as "always succeeds".
hacked TRACE :PRINT code so that it does TERPRI as well as
FRESH-LINE (which is perhaps less elegant than doing
only one or the other, but seems to be more robust
than the previous FRESH-LINE-only solution)
fixed overlooked merge conflict in NEWS (pointed out by
Neil Schemenauer)
CONCATENATED-STREAM-STREAMS fix
... yes, do discard streams. The old behaviour said "keep streams
around for closing", but that's actually the user's job.
MORE MICRO-OPTIMIZATION
... renumber all widetags. (LESS BINARY-COMPATIBILITY)
... implement some smarter type tag checking on the x86.
The smarter type checking comes in several flavours.
* If we have two adjacent lowtags, in three cases out of four
we can do "and, cmp, branch", rather than
"cmp, branch, cmp, branch";
* If we have two lowtags that are unadjacent but differ by
just one bit, we can likewise do "and, cmp, branch" rather
than "cmp, branch, cmp, branch";
* If we have a contiguous range of lowtags that includes the
most positive lowtag, we do not need to test the upper bound;
* If we have four lowtags with only two bits different, we can
do "and, cmp, branch" rather than *four* "cmp, branch" pairs.
This change will conflict with ongoing 64-bit ports. The
conflict is resolvable (there are enough widetags in the "array"
range (which in practice is 130 - 254; currently there are five
in this range unused (or three with long-float arrays)
Reinstate some compiler transforms for STRINGoid types.
... since STRING is now a union type, some compiler transforms
would give up (unnecessarily) with arguments of such
a type, even when the conditions were otherwise
favourable;
... extend the logic in those transforms to deal with arrays
with the same 'shape' but different specialized
array element type
Fix for CLEAR-INPUT
... its optional argument can be NIL or T as well as a stream;
... since we're in the area,
s/STREAMLIKE/STREAM-DESIGNATOR/
s/STRINGABLE/STRING-DESIGNATOR/
s/SYMBOLS/SYMBOLS-DESIGNATOR/
(and move SYMBOLS-DESIGNATOR and PACKAGE-DESIGNATOR to
deftypes-for-target.lisp where they belong)
Note *ZAP-ARRAY-DATA-TEMP* as a source of non-threadsafety
in ADJUST-ARRAY
MAKE-STRING-INPUT-STREAM fixes
... :END can be NIL;
... coerce non-(simple-array character (*))s to that type.
Also fix an erroneous test and message in ADJUST-ARRAY.
Some fixes for ADJUST-ARRAY
... make sure we copy the element in a zero-rank array;
... don't adjust simple arrays, even if it doesn't break
anything (because there's probably lying to compilers
going on).
Merge build patch ("building SBCL with Sun toolchain" Nikodemus
Siivola sbcl-devel 2004-02-05)
... add some assertions to ldso-stubs.lisp
... fix the conditional around dlopen()
... delete ~% pasteo from sparc-funcdef.sh
text fiddling:
corrected credits on the big OS X patch
some explanation from Brian Mastenbrook on the big
OS X patch (with more, for sigreturn() stuff,
in the queue and expected to be checked in soon)
tweaked oft-misunderstood diagnostic output
Fix for bug revealed by ITERATE on PPC
... the powerpc backend has no branch delay slot, so putting the
last defaulting operation after the branch doesn't work
so well
... neither does the alpha, so fix that too, even though with a
higher REGISTER-ARG-COUNT value it's not exposed by
ITERATE
... cook up a test case that's likely to catch the problem
elsewhere, if present
Fix unbelievably long-standing RUN-PROGRAM bug (190) once
and for all
... sigtrap_handler() in ppc-arch.c was just completely wrong; it
handled the SIGTRAP multiple times. Oh well :-)
Implement tc{get,set}attr() for sb-posix
... yet more horrible kludges that will need fixing once sb-grovel
generates alien types -- including one in constants.lisp
Miscellaneous fixes
... fix bad behaviour on install.sh on missing directories (reported
Zach Beane sbcl-devel 2004-01-16)
... fix PUSHNEW docstring (patch VJA sbcl-devel 2003-12-30)
... call PACK-BEFORE-GC-HOOK by hand in make-target-2.sh, to get
core sizes down a bit (2Mb on x86, 6Mb on PPC). We're still
awaiting a proper fix, though.
Make sb-bsd-sockets properly depend on sb-grovel. The disadvantage
of reaching into sb-grovel internals is more than balanced by the
advantage of not having two similar but diverging implementations
of the same functionality. (patch VJA sbcl-devel 2004-02-08)
Allow opening of streams with element-type larger than 32 bits
... autogenerate an input/output routine if it's none of our
friendly predefined ones are applicable
... arbitrary constants, endianness issues and the like are
all wilfully ignored.
... passes 12 more of PFD's ansi-tests!
Improve DESCRIBE and INSPECT slightly
... make condition objects less opaque to inspect
... likewise funcallable-instances
... make generic functions /more/ opaque to DESCRIBE...
... so now (describe #'print-object) only
takes up 4 screens, not hundreds
simplified *FOP-STACK* mechanism (fixing bug when *FOP-STACK*
was expanded within nested LOADs; also slightly
pessimizing performance, O(10%) in simple benchmark)
Allow SET-PPRINT-DISPATCH to take symbols as arguments
... possibly violate ANSI by immediate coercion to function
... move things around so that I can add the pprinting
functions to fndb (new host-pprint file)
... also delete unused WHITESPACE-CHAR-P
Make STREAM-ELEMENT-TYPE and FRESH-LINE work better on
BROADCAST-STREAMs
... also fix various odd close behaviours -- compound streams
should probably all get closed by CLOSE, even if their
constituents don't
Make {IN,OUT}PUT-STREAM-P work on synonym streams
... looks like pvaneynd's HIGH-SECURITY is in fact necessary
... delete workarounds for this through the rest of the stream
code while I'm at it.
Merge patch (Vincent Arkesteijn sbcl-devel 2004-02-03) for
ASDF-INSTALL (and my patch lisppaste/113 for namestrings)
... :name "" no longer prints the same as :name nil
... make the asdf-install:directorified pathname more
robustly
... also add a couple of :supersedes. ARGH WHY DOES
SB-BSD-SOCKETS STILL HAVE ITS OWN FAKE SB-GROVELALIKE?
SB-POSIX fcntl binding, inspired by Helmut Eller (with cribbing
from Vincent Arkesteijn's ioctl())
... add constants
... write three variants like ioctl (for two-arg,
third-arg-integer and third-arg-pointer versions)