Commits on Oct 25, 2006
  1. 0.9.18:

    William Harold Newman committed Oct 25, 2006
    	release, will be tagged as sbcl_0_9_18
Commits on Oct 23, 2006
  1. fix windows build, MAKE-ALIEN compiler note muffled fully

    nikodemus committed Oct 23, 2006
     * Win32 build needs MAKE-ALIEN much earlier then other platforms,
       so restore MAKE-ALIEN to its old place in target-alieneval.lisp,
       and muffle the %SAP-ALIEN note from there unconditionally.
Commits on Oct 21, 2006

    bdowning committed Oct 21, 2006
        Problem reported by <>.
Commits on Oct 19, 2006

    Nathan Froyd committed Oct 19, 2006
    	Delete dead checked-cell-ref VOP in x86oid backends.
Commits on Oct 18, 2006
  1. silence %SAP-ALIEN compiler-note for MAKE-ALIEN in default…

    nikodemus committed Oct 18, 2006
    … policy
     * Uses of MAKE-ALIEN are a common source of unavoidable notes about
       unoptimized %SAP-ALIEN, which only serve to mask the ones the user
       can do something about.

    William Harold Newman committed Oct 18, 2006
    	a bit of OAOOification in the way tests/ code
    		invokes SBCL, so that now it consistently ignores
    		.sbclrc again, so tests succeed even when .sbclrc
    		contains (BREAK)

    nikodemus committed Oct 18, 2006
      * Patch by Max-Gerd Retzlaff. cfsetspeed left out as non-portable,
        cfgetispeed and cfgetospeed added.
      * Tests -- which have not been properly run, and aren't run as part
        of the SB-POSIX suite, since they require serial port access.
Commits on Oct 9, 2006
  1. restore win32 and x86-darwin buildability

    nikodemus committed Oct 9, 2006
     * trivial assembler directive fixes

    csrhodes committed Oct 9, 2006
    	Scribble some notes on funcallable instances before I forget.
Commits on Oct 6, 2006
  1. async unwind for specials

    Gabor Melis committed Oct 6, 2006
      * in UNBIND zero the symbol before the value
      * in UNBIND-TO-HERE zero the value even if the symbol is zero

    csrhodes committed Oct 6, 2006
    	One missing include directive which got through the net.

    csrhodes committed Oct 6, 2006
    	... in a threaded world, we can't set the function and lexenv
    		of a funcallable instance separately, because some other
    		thread might inconveniently funcall the object 'twixt
    		the one and the other.
    	... instead, make the funcallable-instance-function a
    		fully-fledged slot, and give a funcallable-instance a
    		trampoline which knows how to call it.
    	... which means implementing this strategy for $n$
    		architectures.  Tested on x86, x86-64, ppc, alpha and
    		sparc; completely untested on mips, and unimplemented
    		on hppa.
    	This removes some of the complexity in calling closures (the
    	closure-self slot is now redundant, as is the extra
    	indirection).  Other miscellaneous fixes:
    	* extract-fun-type worked only by accident;
    	* new magic :init :funcallable-instance-tramp for primitive
    	* verify_space() need no longer worry its little brain about
    	  undefined_tramp and closure_tramp (I think)
    	* test case for threaded funcallable-instance interaction.
Commits on Oct 2, 2006

    jsnell committed Oct 2, 2006
            Implementation of STEP-OUT was completely bogus.
            * Only do the *STEP-OUT* binding / handling only around the STEP-INTO
              branch in the step-around wrapper, not around the STEP-NEXT /
              CONTINUE / OUT branch.
            * Detect attempts to STEP-OUT when there is no matching STEP-IN
              also in STEP-FORM, not just in the debugger repl
            * Test

    jsnell committed Oct 2, 2006
            * Fix formatting of sub-items in 0.9.17 NEWS (thanks to Kevin Reid)
            * gc.lisp whitespace canonicalization

    jsnell committed Oct 2, 2006
            The debugger tends to not show all variables regardless of the
            optimization policy. Fix the most common reason for that happening.
            * When compiling with a high debug quality, don't do substitution for
              variables that are only used once.
            * Except for variables introduced in DEFTRANSFORM inline
              lambdas, since they're not going to very interesting for the

    jsnell committed Oct 2, 2006
            The debugger tends to not show all variables regardless of the
            optimization policy. Fix the most common reason for that happening.
            * When compiling with a high debug quality, don't do substitution for
              variables that are only used once.
            * Except for variables introduced in DEFTRANSFORM inline
              lambdas, since they're not going to very interesting for the

    jsnell committed Oct 2, 2006
    	Fix the STORE-VALUE restart for CHECK-TYPE on non-variable places
            (DO considered harmful).

    jsnell committed Oct 2, 2006
    	Fix negation of character-set types (reported by Anton Kazennikov
            on comp.lang.lisp).
Commits on Sep 27, 2006
  1. fix two potential GC deadlocks

    nikodemus committed Sep 27, 2006
     * Dying threads used to grab session and all-threads locks
       with GC inhibited, which was bad:
        1. T1 has the lock, GC not inhibited
           T2 in HANDLE-THREAD-EXIT waiting for the lock, GC inhibited
        2. GC is triggered
        3. T1 stopped while holding the lock
           T2 deadlocks waiting for T1 to release the lock.
     * Mark threads dead while holding the *ALL-THREADS-LOCK*, so that
         (unless (thread-alive-p th)
           (assert (not (member th (list-all-threads)))))
       cannot fail.
     * Since dying threads can now trigger GCs, don't run after-gc hooks
       and finalizers if the thread has been marked as dead.
     * Move all thread cleanup logic to HANDLE-THREAD exit.
Commits on Sep 26, 2006

    Thiemo Seufer committed Sep 26, 2006
    	Improve thread safety.
  2. 0.9.17:

    William Harold Newman committed Sep 26, 2006
    	release, will be tagged as sbcl_0_9_17
Commits on Sep 24, 2006

    jsnell committed Sep 24, 2006
            Fix regressions:
            * Installation was broken with non-bash /bin/sh (thanks to
              Niimi Satoshi for the patch)
            * DEFAULT-EXTERNAL-FORMAT would now try to print a warning for
              an invalid external format before streams had been initialized,
              causing an infinite error loop (reported by Hannu Koivisto).
              Temporary fix is just not printing the warning, a better fix
              will wait until after the freeze.
            * Also stop autodetecting the external format from the locale
              on non-unicode builds. Having a default external format that's
              incompatible with CHARACTER doesn't seem very sensible, especially
              now that the external formats are also used for SB-ALIEN:C-STRING
              instead of just streams.
Commits on Sep 20, 2006

    jsnell committed Sep 20, 2006
            Fix building with CMUCL (typo in the name of an IGNOREd variable

    jsnell committed Sep 20, 2006
            Stepper tweaks:
            * Inhibit stepping while calling the stepper hook.
            * Make the body of STEP steppable
            * Signal a STEP-FINISHED-CONDITION when STEP returns

    jsnell committed Sep 20, 2006
            Switch to using the more accurate method of determining
            *STEP-FRAME* on x86/x86-64 where SIGNAL-CONTEXT-FRAME works.
            Retain the previous kludge on non-x86, where SIGNAL-CONTEXT-FRAME
            seems to be completely broken.

    jsnell committed Sep 20, 2006
            Always update TN-CURRENT-CONFLICT after the innermost loop of
            PROPAGATE-LIVE-TNS has found a match, and not just every time
            it converts a :READ conflict to a :LIVE conflict. This avoids
            useless travelsals over the tnwise global-conflicts chain, speeding
            up compilation when there are lots of global conflicts (for
            example on (DEBUG 3)). Thanks to David Lichteblau.

    jsnell committed Sep 20, 2006
            More win32 fixes.  (Thanks to Yaroslav Kavenchuk: sbcl-devel
            "win32 regression" on 2006-09-18 and "merge-pathnames on
            win32" on 2006-09-19)
            * Double the size of the string buffers given to syscalls on
              sb-unicode, since the data is going to be in UCS-2 instead of
              some single-octet encoding
            * Fix the code for finding the system-wide sbclrc
            * Whitespace
Commits on Sep 19, 2006

    jsnell committed Sep 19, 2006
    	Don't do permutation vector optimization for SLOT-VALUE on method
            parameters that are SETQd [see the test ((:setq :method-parameter)
            slot-value) in clos.impure.lisp].
            * WALK-METHOD-LAMBDA detects parameters whose bindings are modified,
              and returns them as a list
            * MAKE-METHOD-LAMBDA-INTERNAL adds a symbol-macrolet
              %PARAMETER-BINDING-MODIFIED with that list as a value around
              the method body
            * OPTIMIZED-SLOT-VALUE and friends no longer directly return the
              optimized form when the method is being walked, but a macro
              that expands to either the optimized or unoptimized form, based
            * As a side effect, SETQ-P becomes a little more accurate

    jsnell committed Sep 19, 2006
            Oops, unblock interrupts while handling a single-stepper trap. Fixes
            GC deadlocks while using the stepper in Slime on a threaded
Commits on Sep 18, 2006

    jsnell committed Sep 18, 2006
            Rewrite the single-stepper to solve the compilation/run-time
            performance and type-inference inaccuracy problems with the old
            approach. Also make some UI improvements to the stepper.
            * The IR1 stage no longer instruments the code. Instead it
              only detects function call forms which should (according to
              the policy) be steppable, and records a string
              representation of those forms in the matching combination
              nodes (to be stored in the debug-info).
            * Modify the function call vops to emit some instrumentation just
              before the actual call happens. This will check either the
              symbol-value of *STEPPING* (unithreaded) or the new STEPPING
              slot of threads (multithreaded) and trap if it's true. The
              trap handler will replace the closure / fdefn that was about
              to be called with a wrapper, which will signal a stepper
              condition and then call the original function.
            * Emit a similar bit of instrumentation before any call that
              got optimized to a simple VOP. The difference is that the
              only thing that the trap handler will do is to directly
              signal the condition.
            * The necessary VOP / runtime changes have only been done on
              x86, x86-64 and ppc so far. Alpha, Mips and Sparc should
              still compile, but the stepper won't work there.
            * Remove the old single-stepper REPL, and instead integrate the
              stepper into the debugger.
            * Add STEP-OUT functionality (stop stepping temporarily,
              resuming it once the current function returns).

    csrhodes committed Sep 18, 2006
    	Minor fixups
    	... fix building on x86-64 (delete some extra parens...)
    	... make funcallable-standard-objects (including generic
    		functions) properly inspectable again, after the
    		change of the superclasses' order.

    jsnell committed Sep 18, 2006
            Oops, fix minor bug introduced in .35: #+sb-unicode -> #!+sb-unicode
Commits on Sep 17, 2006

    jsnell committed Sep 17, 2006
            Merge sbcl-devel "some reconstruction of win32 and others", 2006-09-10
            by Yaroslav Kavenchuk.
            * Replace manual external-format conversions in various SB-WIN32
              internals with alien external-formats.
            * Implement MACHINE-INSTANCE and SOFTWARE-VERSION.

    Nathan Froyd committed Sep 17, 2006
    	Improve code generation for LOGTEST on x86.
    	* Use the logic the fixnum test VOPs use for emitting small TEST
    	  instructions in the LOGTEST VOPs as well;
    	* Change {ODD,EVEN}P source transforms to use LOGTEST.

    Nathan Froyd committed Sep 17, 2006
    	Micro-optimize keyword argument parsing on x86 and x86-64.
    	* Change %MORE-ARG to take a negative offset, so we can perform
    	  the negation once outside the parsing loop instead of twice
    	  each time through the loop;
    	* Combine the retrieval of the keyword and its associated value
    	  into a single VOP, so we can take advantage of base+index+disp