Commits on Nov 27, 2009
  1. Win32 build fix

    Alastair Bridgewater committed Nov 27, 2009
      * Because both sbcl and <rpcndr.h> define a boolean type,
    grovel-headers was failing to build on win32.  Copied the kludge for
    working around this issue from src/runtime/runtime.h to
Commits on Nov 24, 2009

    trittweiler committed Nov 24, 2009
    Other Xref functions (WHO-CALLS etc.) are very liberal at what they
    accept as input. Adjust the two new Xref functions
Commits on Nov 20, 2009
  1. declarations and symbol-macros in methods

    csrhodes committed Nov 20, 2009
    A stray backquote caused compilation warnings and run-time errors if, within
    a method, a symbol macro with a type declaration was given a new value with
    Fixes bug #485019, reported by Iban Hatchondo
  2. (subtypep 'symbol 'keyword) must be NIL, T

    csrhodes committed Nov 20, 2009
    Special-case the hairy type (SATISFIES KEYWORDP) and its interaction with the
    SYMBOL type.  (We could potentially be cleverer at this point and additionally
    tell the system that all non-symbols are non-(SATISFIES KEYWORDP) types, but
    we're somewhat late in the development cycle now)
    Fixes bug #485972
  3. SB-POSIX:FORK guards against forking with multiple threads

    nikodemus committed Nov 20, 2009
      * It wasn't going to work right in any case, so better to refuse up
      * Remove invalid FIXME from globaldb.lisp: DO-INFO is also used by
Commits on Nov 19, 2009
  1. remove curious-hacker-cruft from constraints.lisp

    nikodemus committed Nov 19, 2009
     ...that was not supposed to go in!
  2. GENCGC tuning parameters

    nikodemus committed Nov 19, 2009
       in lisp, and let genesis tell C about them.
     * Make various generations[gen].foo tweakable from lisp, give them
       nice interface functions and document the same.
     * Bits of manual prettification in related parts.
  3. add support for x86-64/NetBSD

    csrhodes committed Nov 19, 2009
    Patch from Aymeric Vincent.
  4. type system now understands (and <array-type> (not simple-…

    csrhodes committed Nov 19, 2009
    Taken to mean the <array-type> with COMPLEXP T (rather than :MAYBE).
    Adjust the type test transform to use the old technique for testing for
    complex arrays (using an explicit (NOT SIMPLE-ARRAY) test rather than a
    full call to %TYPEP, as you would otherwise get; this is a KLUDGE, but
    no worse than before).
    Include a test case for bug #309129, which this fixes.
Commits on Nov 12, 2009
  1. Fix breakage from

    Alastair Bridgewater committed Nov 12, 2009
      * Use FIND-CONSTANT instead of MAYBE-EMIT-MAKE-LOAD-FORMS to prepare
    arglists for dumping, thus unbreaking compilation to core.
      * Add a test case for in-core case.
  2. Add build flag :sb-xref-for-internals.

    trittweiler committed Nov 12, 2009
    Enabling :sb-xref-for-internals in customize-target-features.lisp,
    will make Sbcl collect Xref data about itself during the build. This
    increases the core size drastically by about 5-6mb, but it's useful
    for SBCL developers because they can now use M-? (slime-edit-uses) to
    get a list of call/expansion/reference sites for internal stuff.
    It may be interesting to Lisp advocacy who can now show off with
    finding the use sites of standardized functions like CONS, etc. :-)
    Additionally -- regardless of :sb-xref-for-internals --, we now also
    collect xref data for keywords because they're "fine" names for
    functions and macros, and I know of people who use MACROLET on
    keywords for their DSLs.
  3. fix listen / read-char-no-hang

    csrhodes committed Nov 12, 2009
    Whoops.  The external-format changes broke read-char-no-hang after an
    unread-char: very noticeable indeed just as soon as an error occurs in
    slime.  In my defence, this was already broken on bivalent streams; I just
    propagated that brokenness to all fd-streams.
    Include a run-program-based test, because that produces the kind of streams
    that can have no data and yet not be at EOF.  In the slime context, they're
    sockets, so it's a bit difficult to test the slime case exactly; ideas for
    good simulations welcome.
  4. Add test case for

    trittweiler committed Nov 12, 2009
  5. Fix fasdumping of function arglists with instances as defa…

    Alastair Bridgewater committed Nov 12, 2009
    …ult values
      Fasdumping of a function arglist was breaking if there was a structure
    or other instance as a default value because the arglist wasn't
    processed for dumping as a literal constant.
      * Process the arglist for dumping as a literal constant when creating
    entry-info for external entry points.
      This is .
Commits on Nov 11, 2009
  1. save page table allocation information into core files

    nikodemus committed Nov 11, 2009
     * Allows unboxed objects in saved cores to be written to without
       write-protection & later scavenging.
  2. use :replacement in the external format for standard IO st…

    csrhodes committed Nov 11, 2009
    For *terminal-io*, a bidirectional stream, we have to make an arbitrary
    choice on Windows, where in theory the input and output code pages can
    differ.  We arbitrarily choose the output format; I have no idea whether
    this matters.
  3. implement output restarts for UCS2

    csrhodes committed Nov 11, 2009
    Most of the work was done; we just had to actually turn the catch tag
    on, and write tests that are correct rather than wrong.
  4. compress most unibyte-external-format definitions

    csrhodes committed Nov 11, 2009
    All the unibyte-mapper-based external-formats had huge amounts of
    cut-and-pasted code, differing only in names of functions.  This is,
    oddly enough, a clear case for abstracting away the repeated code into a
    In the process, convert them to the multibyte apparatus, which has support
    for the nice restarts, and remove the too-simple unibyte
    Include a far-from-comprehensive set of tests, which are mostly for
    iso-8859-x formats
  5. bug fixes in unibyte external formats

    csrhodes committed Nov 11, 2009
    * handling undefined codepoints:
      There's a difference between "unassigned codepoint", represented as
      (<code> nil), and "codepoint mapping to character with that codepoint",
      represented by the absence of an entry in the exceptions list.  Simply
      testing for trueness of (cadr (assoc <code> exceptions)) isn't good
      enough; test for trueness of (cdr (assoc ...)) and use the car if so.
    * undefined codepoints as the first exception:
      If the first exception to code<->byte is an undefined character, as for
      example in iso-8859-8, the lowest-code exception was computed wrongly,
      leading to incorrect encoding.
  6. Support for :REPLACEMENT external-format / encoding modifier

    csrhodes committed Nov 11, 2009
    For a given keyword :foo naming an encoding, allow an external-format
    (:foo :replacement <character>) such that any stream or octet coding
    errors are automatically treated by using the <character> as replacement
    To do this, wrap each of the functions in the external-format object
    named by the keyword with a function establishing handlers for the
    exceptional conditions. At the moment, the output restarts for c-string
    external format conversion are not implemented (so handle specific condition
    types like STREAM-FOOCODING-ERROR, not general FOOCODING-ERROR).
  7. additional allocation information

    nikodemus committed Nov 11, 2009
     * SB-INTROSPECT:ALLOCATION-INFORMATION also reports on boxedness of
       the page the object resides on.
     * When heap statistics are printed, always print the details of the
       pseudo-static generation. Make print_generation_stats extern so it
       can be called from lisp.
  8. make the utf-8 external format more robust

    csrhodes committed Nov 11, 2009
    Detect all malformed sequences, including attempts to decode or encode
    Unicode surrogate codepoints (disallowed by the Unicode definition of
    UTF-8).  Some error tests change behaviour, and some (unexported)
    condition classes are not triggered under the same circumstances any
    Also, handle null-termination on a successful conversion of an empty range of
    a nil array.
  9. external-format restart enhancements

    csrhodes committed Nov 11, 2009
    * OUTPUT-REPLACEMENT restart for fd-stream external-formats, taking a
      string designator argument and attempting to encode that instead of the
      erroneous output;
    * fixes for the FORCE-END-OF-FILE fd-stream external-format restart, using
      a somewhat involved call / return protocol for communicating out-of-band
      information between output routines and drivers;
    * INPUT-REPLACEMENT restart for fd-stream external-formats, again with
      complicated out-of-band information communication.  This also interacts
      with UNREAD-CHAR;
    * fix the ATTEMPT-RESYNC restart (and similar) at or near the end of file,
      ensuring that there is always a valid CATCH tag to be THROWN to;
    * fix a double-error case in the USE-VALUE restart for unibyte octet
    * bandage fix for mb-util decoding-error USE-VALUE restart -- there's more
      factoring to be done, but this fixes lp #314939
  10. update Unicode data files to Unicode 5.2

    csrhodes committed Nov 11, 2009
    We do still need also to update a small bit of code, but at least the
    explanatory comment now makes it obvious which bits.
Commits on Nov 7, 2009
  1. fix build under clisp

    csrhodes committed Nov 7, 2009
    It already worked with 'clisp -on-error -abort', but since there's only one
    type declaration in the whole system that clisp doesn't understand, we might
    as well fix it.  Report and patch by Josh Elasser, lp #396597.
Commits on Nov 6, 2009

    trittweiler committed Nov 6, 2009
    ...'cuz CLHS says so. We bind it to the standard pprint dispatch
    table, and guard against its modification in SET-PPRINT-DISPATCH,
    mimicking the guard against modification of the standard readtable
    introduced in 1.0.24.
  2. Fix slot-value on specialized parameters in SVUC methods

    csrhodes committed Nov 6, 2009
    The slot accessors' functions were being computed too early, requiring a
    wrapper (for the PV optimization) when none was available.  The fix
    delays the computation by the usual trick of installing a closure that
    will perform the slot accessor computation on demand.
    Include a correct MOP test for this (slightly hard because of
    constraints about order of instantiation: see lp #473699, reported by
    Lars Rune Nodstal).
Commits on Nov 3, 2009
  1. fix octets portion of latin-2/iso-8859-2 external-format

    csrhodes committed Nov 3, 2009
    Typo in the external format definition.  Include a test case; reported
    by Attila Lendvai (in lp #471689)
Commits on Nov 2, 2009
Commits on Oct 30, 2009

    Nathan Froyd committed Oct 30, 2009
    Users of this OUTPUT-BYTES/FOO function must have been perfect.
  2. macroize x86-64 {8,16,32}-bit array accessors

    Nathan Froyd committed Oct 30, 2009
    One wonders if the profusion of array access VOPs are merely bloat...
  3. fix open-coding of EQL in the cross-compiler

    Nathan Froyd committed Oct 30, 2009
    EQ-COMPARABLE-TYPE wasn't being defined properly, so things like
    (EQL FOO :KEYWORD) were going through GENERIC-EQL.
    Thanks to Christophe for pointing out the fix.

    trittweiler committed Oct 30, 2009
     * Add two new Xref functions to SB-INTROSPECT:
         WHO-SPECIALIZES-DIRECTLY returns method definitions which
         specialize one the designated class itself.
         WHO-SPECIALIZES-GENERALLY returns methods definitions which
         specialize on the designated class, or subclasses of it.
       Both take CLASS-EQ, and EQL specializers into account.
     * Refactor xref tests, and add tests for the two new functions.
     * Fix sb-introspect.asd to perform the test-op with a *D-P-D* bound
       to contrib/sb-introspect/.