2007-10-26 06:23  rudi

	* version.lisp-expr, src/code/defpackage.lisp,
	  tests/packages.impure.lisp:

	1.0.11.2: defer package creation of defpackage
	  Patch by Zach Beane to sbcl-devel 2007-10-09

2007-10-26 04:33  rudi

	* version.lisp-expr, contrib/asdf/asdf.lisp,
	  contrib/asdf-install/installer.lisp,
	  contrib/sb-grovel/def-to-lisp.lisp, src/code/filesys.lisp,
	  src/runtime/runtime.c:

	1.0.11.1: Handle set-but-empty environment variables

	  ... SBCL_HOME= sbcl crashed on startup
	  ... Patch by Michael Weber

2007-10-25 21:28  wnewman

	* version.lisp-expr:

	1.0.11: release, will be tagged as sbcl_1_0_11

2007-10-22 04:16  rudi

	* clean.sh, distclean.sh, version.lisp-expr:

	1.0.10.55: Remove non-portable arguments to find, xargs

2007-10-21 23:25  sa2c

	* version.lisp-expr, src/runtime/bsd-os.c:

	1.0.10.54: Fix build with old gcc

	Surround code fragment with braces for variable declarations.

2007-10-21 23:19  slyrus

	* version.lisp-expr, src/runtime/x86-darwin-os.c:

	1.0.10.53: fix undefined-alien errors on darwin

	 * the new mach exception handling stuff was checking to see if there
	   were two faults on the page by checking the region's protection
	   status and bailing out assuming that there were two faults on the
	   same page. The problem was that it was following this code path for
	   undefined-alien errors (and presumably control-stack-exhausted)
	   thereby just resignalling an EXC_BAD_ACCESS, ad infinitum. Moved
	   the checks for the page address being undefined_alien_address, or
	   the control stack guard pages up before checking the page
	   protection.

2007-10-21 05:15  rudi

	* clean.sh, distclean.sh, version.lisp-expr:

	1.0.10.52: fix clean.sh for whitespace-containing source directories

2007-10-20 06:27  sa2c

	* package-data-list.lisp-expr, version.lisp-expr,
	  doc/manual/threading.texinfo, src/code/target-thread.lisp,
	  src/runtime/thread.c, tests/clos-add-remove-method.impure.lisp,
	  tests/clos-cache.impure.lisp, tests/threads.impure.lisp:

	1.0.10.51: New function: THREAD-YIELD

	An interface to sched_yield().  And use it in busy loops in some tests.

2007-10-19 13:57  demoss

	* version.lisp-expr, src/compiler/ir1opt.lisp:

	1.0.10.50: short-circuit LVAR type derivation when type becomes T

	* Even if there are uses we have not considered yet,
	  %LVAR-DERIVED-TYPE can stop if the type turns into the universal
	  type.

2007-10-19 13:25  demoss

	* package-data-list.lisp-expr, version.lisp-expr,
	  src/code/deadline.lisp, src/code/serve-event.lisp,
	  src/code/target-thread.lisp, tests/deadline.impure.lisp:

	1.0.10.49: deadline refinements

	* Deadlines are per-thread. (Children do no inherit their parents
	  deadlines.)

	* SIGNAL-DEADLINE estabilishes a DEFER-DEADLINE restart.

	* Handle SIGNAL-DEADLINE returning due to deferred deadlines where
	  necessary.

	* Documentation.

2007-10-18 13:23  demoss

	* version.lisp-expr, src/code/condition.lisp:

	1.0.10.48: new function TRY-RESTART

	* Factor out all "find-restart and maybe invoke-restart" logic to one
	  place.

2007-10-18 12:56  demoss

	* NEWS, version.lisp-expr, src/compiler/ir1opt.lisp,
	  src/compiler/ir2tran.lisp, src/compiler/node.lisp:

	1.0.10.47: proper fix for "high-debug-known-function-inlining"

	* Add ALLOW-INSTRUMENTING slot to CLAMBDA, taking it's value
	  from *ALLOW-INSTRUMENTING*.

	* Require LAMBDA-ALLOW-INSTRUMENTING to be true for emission
	  of BIND/UNBIND-SENTINEL.

	* Remove the earlier KLUDGE workaround.

2007-10-14 23:40  jsnell

	* version.lisp-expr, src/code/target-hash-table.lisp:

	1.0.10.46: Inline the local functions in MAYBE-REHASH

	        * Fixes small hash-table speed regression introduced in
	          1.0.10.14 (and hidden by the other improvements in that
	          commit).
	        * 15-30% speedup over .14 on common hash operations.

2007-10-11 15:33  demoss

	* NEWS, version.lisp-expr, src/pcl/slots-boot.lisp,
	  tests/clos-typechecking.impure.lisp:

	1.0.10.45: save typecheck-function in slot-table even if location is not saved

	 * Otherwise non-standard metaclasses for which optimized instance
	   accessors can be used don't get the typecheck-fun from the wrapper
	   in the function returned from MAKE-OPTIMIZED-STD-WRITER-FUNCTION.

	 * Test-case.

	 * Missing NEWS entry for .44.

2007-10-11 13:13  demoss

	* version.lisp-expr, src/code/fd-stream.lisp:

	1.0.10.44: BUFFER-P, not BUFFERP

	 * Reported by Yuri Vishnevsky on sbcl-devel.

	 * Test-case coming Real Soon.

2007-10-11 09:20  sa2c

	* BUGS, NEWS, version.lisp-expr, src/compiler/x86-64/float.lisp,
	  tests/float.pure.lisp:

	1.0.10.43: Fix NaN comparison on x86-64

	Comisd and comiss sets all of ZF, PF, and CF of EFLAGS if its
	operand contains NaN.  Because PF is never set by normal
	comparison, we use it to check NaN.  This is same as "=" vops.

2007-10-11 03:19  sa2c

	* version.lisp-expr, src/compiler/x86/parms.lisp:

	1.0.10.42: change dynamic space area on FreeBSD

	If KVA_PAGES is extended from 256 to 384 (1GB to 1.5GB), stack starts
	0x9FC00000.  So change dynamic space from 0x60000000-0xA0000000 to
	0x58000000-0x98000000.

	Nowadays, 4GB of address space is too small, isn't it?

2007-10-10 21:36  sa2c

	* version.lisp-expr, src/runtime/thread.c:

	1.0.10.41: Remove unnecessary sched_yield()

	Don't call sched_yield() on thread creation and retirement, since
	the cost of sched_yield() is very high on FreeBSD 7.

2007-10-08 11:02  rudi

	* make-config.sh, make-target-contrib.sh, sbcl-pwd.sh,
	  version.lisp-expr:

	1.0.10.40: Fix build for windows when source directory contains spaces

2007-10-08 08:34  rudi

	* .gitignore, version.lisp-expr:

	1.0.10.39: .gitignore additions for windows

2007-10-08 06:19  rudi

	* version.lisp-expr, contrib/sb-bsd-sockets/constants.lisp,
	  contrib/sb-bsd-sockets/name-service.lisp:

	1.0.10.38: fix get-host-by-address on Darwin
	  sockaddr_in has a length field on Darwin but not on linux

2007-10-08 04:30  slyrus

	* version.lisp-expr, src/runtime/darwin-os.h,
	  src/runtime/x86-64-arch.c, src/runtime/x86-64-darwin-os.c,
	  src/runtime/x86-64-darwin-os.h:

	1.0.10.37: fix x86-64/darwin build

	 * use MAC_OS_X_VERSION_10_5 instead of __DARWIN_UNIX03 as the test
	   for new style headers as __DARWIN_UNIX03 is defined when building
	   x86-64 on 10.4

2007-10-08 01:46  slyrus

	* version.lisp-expr, contrib/sb-bsd-sockets/name-service.lisp,
	  contrib/sb-bsd-sockets/tests.lisp, src/code/foreign.lisp,
	  src/compiler/x86-64/c-call.lisp, src/runtime/darwin-os.h,
	  src/runtime/x86-64-arch.c, src/runtime/x86-64-darwin-os.c,
	  src/runtime/x86-64-darwin-os.h, src/runtime/x86-arch.c,
	  src/runtime/x86-darwin-os.c, src/runtime/x86-darwin-os.h,
	  tools-for-build/ldso-stubs.lisp:

	1.0.10.36: support for Darwin versions that support __DARWIN_UNIX03

	 * on some versions of darwin symbols without a leading _ are dropped
	   by the linker. Use a leading _ on Darwin ldso_stub functions.

	 * Add a FIXME about 128-bit integeer passing being broken on x86-64

	 * _DARWIN_UNIX03 support
	   ** os_context_t is now __darwin_ucontext
	   ** eip -> __eip (and friends) - use macro hackery EIP etc...
	   ** use darwin_ucontext/darwin_mcontext instead of struct
	      ucontext/mcontext where appropriate.
	   ** struct ucontext -> os_context_t where appropriate

	 * allow socket-error for the aceptable errors in inet-socket error
	   test cases

	 * Add a fix me about a rumored OS bug fix that in name-service tests

2007-10-07 20:21  slyrus

	* version.lisp-expr, contrib/sb-posix/posix-tests.lisp:

	1.0.10.35: fix sb-posix test on linux

	 * look for sys instead of wheel when testing getgrnam

2007-10-07 11:00  antifuchs

	* version.lisp-expr, contrib/sb-posix/interface.lisp,
	  contrib/sb-posix/posix-tests.lisp:

	1.0.10.34: Fix sb-posix:get{{gr,pw}nam},pwuid,grgid} for non-existing entries.

	Used to signal memory fault, now returns NIL on queries for non-existing
	users or groups.

2007-10-06 21:53  ths-sf

	* version.lisp-expr, src/runtime/purify.c:

	1.0.10.33: Lesson: Test before commit.

2007-10-06 17:55  slyrus

	* version.lisp-expr, src/runtime/x86-darwin-os.c:

	1.0.10.32: better mach exception handling

	 * Patch from Ole Myren Rohne for better mach exception handling. This
	   deals with the case where the kernel started a signal handler
	   before our mach exception handler got a chance to run. This was
	   causing us to inappropriately SIGILL and die. This patch fixes
	   this, along with some general cleanup issues, including the
	   call_handler_on_thread wrapper function.

	 * TODO: this logic needs to be applied to the x86-64/darwin port as
	   well

2007-10-06 16:53  slyrus

	* version.lisp-expr, contrib/sb-posix/constants.lisp,
	  contrib/sb-posix/defpackage.lisp,
	  contrib/sb-posix/interface.lisp,
	  contrib/sb-posix/posix-tests.lisp:

	1.0.10.31: sb-posix support for getgrnam and getgrgid

	 * add alien-group and group protocol-class

	 * add define-gr-call macro a la define-pw-call

	 * alien definitions for getgrnam and getgrgid

	 * trivial test for above calls

2007-10-06 13:26  sa2c

	* version.lisp-expr, src/code/target-thread.lisp:

	1.0.10.30: Fix build without sb-thread

2007-10-05 14:48  demoss

	* NEWS, version.lisp-expr, src/code/early-fasl.lisp,
	  src/code/gc.lisp, src/code/target-thread.lisp,
	  src/code/thread.lisp:

	1.0.10.29: MUTEX refactoring & optimization

	 * (SETF MUTEX-VALUE) removed entirely. Using it was never sane,
	   and in the new setup entirely broken.

	 * On futex platforms, keep track of state of the mutex: free, taken,
	   or contested (taken and may have one ore more threads waiting).

	 * On release, if the mutex is not contested, there is no need to
	   perform the wakeup.

	 * Document assumptions made by GET-MUTEX & RELEASE-MUTEX better.

	 * Update FASL version.

2007-10-05 14:00  demoss

	* NEWS, package-data-list.lisp-expr, version.lisp-expr,
	  doc/manual/threading.texinfo, src/code/target-thread.lisp:

	1.0.10.28: export semaphore interface

	 * Semaphores are a fundamental threading construct -- export them.
	   Clean up the interface slightly: not (SETF SEMAPHORE-COUNT), note
	   that being a subclass of STRUCTURE-OBJECT is not guaranteed, etc.

2007-10-05 11:30  sa2c

	* binary-distribution.sh, version.lisp-expr:

	1.0.10.27: Change unportable find option "-path"

	The find option "-path" is not portable.  Use "-prune" not to
	recurse into CVS directory.

2007-10-05 09:21  rudi

	* version.lisp-expr, contrib/sb-posix/README,
	  contrib/sb-posix/defpackage.lisp,
	  contrib/sb-posix/interface.lisp,
	  contrib/sb-posix/posix-tests.lisp,
	  contrib/sb-posix/sb-posix.texinfo, doc/manual/Makefile:

	1.0.10.26: More sb-posix documentation, thanks to Richard M Kreuter

2007-10-05 00:55  ths-sf

	* version.lisp-expr, src/runtime/purify.c:

	1.0.10.25: Build fix, add a missing bit of hashtable rewrite.

2007-10-04 23:02  ths-sf

	* binary-distribution.sh, version.lisp-expr:

	1.0.10.24: Don't include CVS cruft in binary distributions.

2007-10-04 23:01  ths-sf

	* version.lisp-expr, contrib/sb-sprof/sb-sprof.lisp:

	1.0.10.23: Shuffle def* foo around for less compiler warnings.

2007-10-04 23:00  ths-sf

	* version.lisp-expr, src/code/unix.lisp:

	1.0.10.22: Code formatting.

2007-10-04 22:59  ths-sf

	* version.lisp-expr, tests/foreign.test.sh:

	1.0.10.21: MIPS will soon need an explicit -fPIC flag, too.

2007-10-04 22:56  ths-sf

	* version.lisp-expr, src/runtime/mips-assem.S:

	1.0.10.20: Code provision for a future MIPS gencgc port.

2007-10-04 22:54  ths-sf

	* version.lisp-expr, src/runtime/interrupt.c:

	1.0.10.19: Check also for MIPS foreign_function_call lossage
		... and fix a spelling typo.

2007-10-04 22:52  ths-sf

	* version.lisp-expr, src/runtime/backtrace.c:

	1.0.10.18: Define __USE_GNU only if it wasn't already defined.

2007-10-04 22:48  ths-sf

	* version.lisp-expr, src/runtime/gc-common.c:

	1.0.10.17: Reformat string, and fix compiler warning.

2007-10-04 05:12  rudi

	* version.lisp-expr, contrib/sb-posix/sb-posix.texinfo,
	  doc/manual/contrib-modules.texinfo:

	1.0.10.16: Add some documentation for sb-posix

	  Mutilated contrib/sb-posix/README, removing
	  non-implementation-specific bits and referring to sb-alien instead.
	  ... Some examples would be nice.

2007-10-02 07:17  rudi

	* version.lisp-expr, contrib/sb-posix/constants.lisp:

	1.0.10.15: Some sb-posix constants for stat().

	    Define S_IFMT and its friends S_IFIFO, S_IFDIR etc.

2007-09-30 23:18  jsnell

	* NEWS, base-target-features.lisp-expr, version.lisp-expr,
	  src/code/cold-init.lisp, src/code/early-impl.lisp,
	  src/code/gc.lisp, src/code/hash-table.lisp,
	  src/code/target-hash-table.lisp, src/compiler/srctran.lisp,
	  src/compiler/generic/early-objdef.lisp,
	  src/compiler/generic/genesis.lisp, src/runtime/gc-common.c:

	1.0.10.14: remove locking and gc inhibition from hash-tables, power of 2 sizes

	        This commit removes a bunch of bottlenecks from the hash-table
	        implementation. It speeds up GETHASH, (SETF GETHASH) and
	        REMHASH by a factor of 2-4x (on platforms with a real
	        WITH-PINNED-OBJECTS) depending on the operation. On the flip
	        side, no automatic locking is done on tables any more, so
	        multi-threaded applications must do their own locking. (The
	        locking done by SBCL was always just an implementation detail,
	        not a part of the external interface). By popular demand it's
	        also still safe to have multiple readers on the same table
	        without locking.

		Originally GCs were inhibited during most hash-table
	        operations for two reasons. To prevent the GC from rehashing a
	        table while a Lisp-side operation is going on, and to prevent
	        the GC from moving the key after the hash-value has been
	        calculated.

	        More recently, most hash-tables operations have acquired a
	        lock on the table in order to prevent two concurrent writers
	        from corrupting the chains. While it's never been the intent
	        for the standard data structures to be automatically
	        thread-safe in SBCL, this locking had to be done since corrupt
	        tables could lead to infinite GC loops.

	        Both the locking and the without-gcing are expensive
	        operations relative to the total cost of a hash-table lookup.
	        This commit removes both the gc inhibition and the locks.
	        Additionally we switch to power of two table size, which
	        allows calculating a cheaper hash -> bucket with cheaper
	        operations than MOD.

	        * The GC no longer does the rehashing itself, but just marks
	          the hash-table as needing a rehash, which will then be done
	          Lisp-side when the table is next accessed. While it's
	          possible to find cases where the former behaviour has better
	          performance, they're very contrived.
	        * The hash-table operations that work on the chains now check
	          for loops in the chains, and signal an error if one is found.
	        * The hash-table operations now pin the key before calculating
	          the hash value (needed for EQ-based hash functions).
	        * Add a GC epoch value that GETHASH can use to check whether
	          a GC happened during the lookup. This is needed since another
	          thread calling GETHASH on the same table might have caused it
	          to be rehashed.
	        * Kill the old MUST-REHASH vector header, and replace it with a
	          slot in the HASH-TABLE structure. The overloading of the header
	          caused missed rehashings when both the GC and %%PUTHASH modified
	          it at the same time.
	        * Switch to power of two table sizes, with a slightly more complex
	          hash value -> bucket calculation than just taking the low bits,
	          which in many cases have a very skewed distribution for the existing
	          SBCL hash functions. Still a lot faster than using MOD.
	        * Leave in locking and GC inhibition during rehashing (needed to
	          allow multiple readers to coexist) and for weak hash-tables
	          (they need some GC support, and the code is much simpler when
	          all of the logic is in the GC instead of interleaved in the GC and
	          Lisp-side). Neither of these cases is performance critical.

2007-09-29 13:27  wnewman

	* version.lisp-expr, src/runtime/monitor.c:

	1.0.10.13: trivial change: Print more explicit message upon entering LDB.

2007-09-28 12:56  wnewman

	* BUGS, version.lisp-expr:

	1.0.10.12: logged bug 417

2007-09-27 19:25  antifuchs

	* version.lisp-expr, src/code/early-extensions.lisp:

	1.0.10.11: Make FEATUREP accept only symbols or conses.

	One more restriction on feature expressions: They can contain only conses
	or symbols. The previous implementation allowed conses and atoms.

2007-09-27 15:56  demoss

	* version.lisp-expr, src/code/early-type.lisp:

	1.0.10.10: theoretical #!+long-float fix to MAKE-MEMBER-TYPE

	* 0.0l0, not 0.0lo. Thanks to Peter Graves.

2007-09-27 15:50  demoss

	* NEWS, version.lisp-expr, src/code/macroexpand.lisp,
	  tests/macroexpand.impure.lisp:

	1.0.10.9: symbol-macro expansion uses *MACROEXPAND-HOOK*

	Thanks to Tobias Rittweiler.

2007-09-27 15:43  demoss

	* version.lisp-expr, src/compiler/ir1util.lisp,
	  src/compiler/locall.lisp, src/compiler/physenvanal.lisp,
	  tests/dynamic-extent.impure.lisp:

	1.0.10.8: correct nested DX implementation

	* Instead of just checking for BASIC-COMBINATION-P,
	  HANDLE-NESTED-DYNAMIC-EXTENT needs to do the same check for each USE
	  as RECHECK-DYNAMIC-EXTENT-LVARS does.

	* Tests.

2007-09-26 16:00  demoss

	* NEWS, OPTIMIZATIONS, version.lisp-expr, src/compiler/locall.lisp,
	  src/compiler/physenvanal.lisp, src/compiler/stack.lisp,
	  tests/dynamic-extent.impure.lisp:

	1.0.10.7: multiply-used DX LVARS

	* HANDLE-NESTED-DYNAMIC-EXTENT maps over all the uses of the LVAR,
	  collecting their argument lvars as well.

	* RECHECK-DYNAMIC-EXTENT-LVARS accepts multiply-used DX LVARs,
	  checking that all uses support stack allocation.

	* UPDATE-UVL-LIVE-SETS accepts multiply-used DX LVARs, doing that
	  lifetime merging with all uses.

	* ...and OOPS, move the NEWS entries of .5 and .6 to a new section for
	  1.0.11...

2007-09-26 15:54  demoss

	* NEWS, OPTIMIZATIONS, version.lisp-expr, src/compiler/locall.lisp,
	  tests/dynamic-extent.impure.lisp:

	1.0.10.6: nested DX allocation

	* RECOGNIZE-DYNAMIC-EXTENT-LVARS needs to propagate DX information to
	  combination arguments, so that

	  (LET ((X (LIST (LIST 1 2) (LIST 3 4))))
	    (DECLARE (DYNAMIC-EXTENT X))
	    (FOO X))

	  does the right thing.

2007-09-26 15:44  demoss

	* NEWS, OPTIMIZATIONS, version.lisp-expr,
	  src/compiler/alpha/alloc.lisp, src/compiler/generic/objdef.lisp,
	  src/compiler/generic/vm-ir2tran.lisp,
	  src/compiler/hppa/alloc.lisp, src/compiler/mips/alloc.lisp,
	  src/compiler/ppc/alloc.lisp, src/compiler/sparc/alloc.lisp,
	  src/compiler/x86/alloc.lisp, src/compiler/x86-64/alloc.lisp,
	  tests/dynamic-extent.impure.lisp:

	1.0.10.5: dynamic-extent CONS

	* Extend EMIT-FIXED-ALLOC to support stack-allocation.

	* Appropriate DEFOPTIMIZER for CONS.

	Note: it seems like it should be a simple matter to support stack
	allocation of all primitive objects allocated using the :ALLOC-TRANS
	framework.

2007-09-26 11:42  sa2c

	* version.lisp-expr, src/runtime/bsd-os.c, src/runtime/bsd-os.h,
	  src/runtime/interrupt.c:

	1.0.10.4: Use variable for SIG_MEMORY_FAULT on FreeBSD

	When SIGBUS is signalled on FreeBSD 7, or SIGSEGV is signalled on
	FreeBSD 6 or earlier, it's very hard to debug if both of the signals
	are hooked for GC.

	Instead to hook both signals, define SIG_MEMORY_FAULT as variable
	and set it at startup.

2007-09-26 11:37  sa2c

	* version.lisp-expr, contrib/sb-posix/constants.lisp,
	  tools-for-build/grovel-features.sh,
	  tools-for-build/grovel-headers.c,
	  tools-for-build/os-provides-suseconds-t-test.c:

	1.0.10.3: Grovel suseconds_t

	Instead to detect if suseconds_t exists by OS and architecture,
	check it in grovel-features.sh.

2007-09-26 11:30  sa2c

	* version.lisp-expr, src/runtime/Config.x86-bsd,
	  src/runtime/Config.x86-netbsd, src/runtime/Config.x86-openbsd:

	1.0.10.2: Don't link unnecessary undefines.c on FreeBSD/i386

	undefines.c is not required anymore on FreeBSD/i386.  Since I'm not
	sure it's required or not on other *BSD, add it to OS_SRC in
	Config.x86-*bsd.

2007-09-26 11:24  sa2c

	* version.lisp-expr, src/runtime/alloc.c, src/runtime/alloc.h,
	  src/runtime/gencgc.c, src/runtime/interr.c, src/runtime/thread.c,
	  src/runtime/x86-arch.c, src/runtime/x86-assem.S,
	  src/runtime/x86-bsd-os.c, src/runtime/x86-bsd-os.h,
	  tools-for-build/grovel-headers.c:

	1.0.10.1: Cleanup code

	Shut GCC warnings up.

2007-09-25 16:18  wnewman

	* version.lisp-expr:

	1.0.10: release, will be tagged as sbcl_1_0_10

2007-09-19 04:11  sa2c

	* make-config.sh, version.lisp-expr, src/runtime/bsd-os.c:

	1.0.9.64: Use umtx system call on FreeBSD to emulate futex.

2007-09-18 08:05  antifuchs

	* version.lisp-expr, src/code/early-extensions.lisp:

	1.0.9.63: Disallow (:not) in #+/#- expressions.

		NOT in feature expressions is specified to accept exactly one argument.
		The previous implementation of FEATUREP allowed zero or one argument,
		so tighten that check.

		Might need to fix CLRFI-1, as well (-:

2007-09-18 06:43  sa2c

	* make-config.sh, version.lisp-expr, src/runtime/globals.c,
	  src/runtime/globals.h, src/runtime/thread.c,
	  src/runtime/thread.h, src/runtime/x86-64-assem.S,
	  src/runtime/x86-64-bsd-os.c, src/runtime/x86-64-linux-os.c,
	  src/runtime/x86-bsd-os.c, src/runtime/x86-linux-os.c:

	1.0.9.62: Performance and stability improvement of threading on FreeBSD

	* Use GCC's Thread-Local Storage to store current thread.
	  (Tested on Linux x86 and x86-64, too)

	* Restore lisp level TLS segment register at interrupt handler.

2007-09-17 18:38  crhodes

	* version.lisp-expr, src/code/condition.lisp,
	  tests/reader.pure.lisp:

	1.0.9.61: Fix %report-reader-error
		It was missing an apply (or, equivalently, a ~?) for printing
		the simple-condition part of the error.

2007-09-16 12:05  wnewman

	* package-data-list.lisp-expr, version.lisp-expr,
	  contrib/sb-cover/cover.lisp, src/code/backq.lisp,
	  src/code/condition.lisp, src/code/reader.lisp,
	  src/code/sharpm.lisp, tests/condition.impure.lisp:

	1.0.9.60: partial fix for bug in STREAM-ERROR :REPORT
		* added a new (partially #+NILed out) test case for a bug in
		  STREAM-ERROR :REPORT, where it expects STREAM-ERROR to have
		  SIMPLE-CONDITION-like properties
		* partial fix for bug in test case:
		  ** Define SB-INT:SIMPLE-READER-ERROR which portably behaves
		     the way that pre-ANSI code expected READER-ERROR to behave.
		  ** Redo most internal references to READER-ERROR as references
		     to SB-INT:SIMPLE-READER-ERROR.
		* (This is only a partial fix because PARSE-ERROR and
		  STREAM-ERROR still have similar issues.)

2007-09-12 16:14  crhodes

	* NEWS, version.lisp-expr, src/compiler/x86-64/arith.lisp:

	1.0.9.59: Fix ash/smod61 on x86-64 for constant large shifts.
		Thanks to Paul Khuong for the translation.

2007-09-12 15:37  crhodes

	* NEWS, version.lisp-expr, src/compiler/x86/arith.lisp,
	  tests/compiler.pure.lisp:

	1.0.9.58: Fix x86 smod30 ash with a constant large argument.
		The usual thing: the VOP was written in the belief that the
		compiler had already proved that the shift couldn't be
		too large.

		(Include test cases which should catch the analogous problem on
		x86-64 as well as the problem just fixed.)

2007-09-10 21:42  demoss

	* NEWS, version.lisp-expr, src/pcl/vector.lisp:

	1.0.9.57: allow pv-optimizations for typechecking (SETF SLOT-VALUE)

	* For each optimized access, store both the slot location and the
	  typecheck function in the permutation vector. If the write is in
	  safe code, use the typecheck function to validate the new value
	  before using it.

	* Approximately ~5x as fast as SAFE-SET-SLOT-VALUE -- which is still
	  needed in a few places as ACCESSOR-SET-SLOT-VALUE doesn't do type
	  checking.

2007-09-10 20:55  demoss

	* version.lisp-expr, src/pcl/slots-boot.lisp:

	1.0.9.56: faster typechecking/optimized std-writer-method-functions

	* Fetch the type-check-fun from wrapper-slot-table, not
	  from the slot-definition.

2007-09-10 20:34  demoss

	* version.lisp-expr, src/pcl/vector.lisp:

	1.0.9.55: trivial src/pcl/vector.lisp cleanup

	* There hasn't been a :DEFAULT kind in permutation vector code
	  for ages -- delete the code that handled it.

2007-09-10 14:29  demoss

	* version.lisp-expr, src/pcl/std-class.lisp, src/pcl/vector.lisp:

	1.0.9.54: clean up old pv updating code

	* Since the vectors that are updated are referred to by stale
	  wrappers, this seems to be quite useless: if an instance has an
	  invalid wrapper it will still have the old layout as well.

2007-09-10 13:31  wnewman

	* make-config.sh, version.lisp-expr,
	  doc/manual/package-locks-extended.texinfo,
	  src/assembly/x86-64/assem-rtns.lisp, src/code/octets.lisp,
	  src/code/profile.lisp, src/code/stream.lisp,
	  src/code/external-formats/mb-util.lisp,
	  src/compiler/ir1-translators.lisp, src/runtime/x86-bsd-os.c,
	  src/runtime/x86-darwin-os.c, src/runtime/x86-sunos-os.c,
	  tests/compiler.pure.lisp:

	1.0.9.53: trivial typo fixes
		(I had batched these up as a "git baby steps" commit, but now
		that's been delayed...)

2007-09-10 12:36  demoss

	* NEWS, version.lisp-expr, src/compiler/copyprop.lisp,
	  tests/compiler.impure.lisp:

	1.0.9.52: copy propagation interfering with local calls

	* Don't allow copy propagation to a local call argument, thus
	  preserving parallel assignment semantics -- to judge by the comment
	  above OK-COPY-REF, this is what it was ment to do in the first
	  place. Reported by Paul Khuong on sbcl-devel.

2007-09-10 12:14  demoss

	* NEWS, version.lisp-expr, contrib/sb-cltl2/env.lisp,
	  contrib/sb-cltl2/tests.lisp:

	1.0.9.51: SB-CLTL2: implement FUNCTION-INFORMATION, touch VARIABLE-INFORMATION

	* Based on work done by Larry D'Anna.

	* Rewire VARIABLE-INFORMATION in a similar manner. Add a FIXME
	  note about lexically apparent special bindings, and document
	  the current state of affairs. Improve the documentation string.

	* Tests, and more tests for VARIABLE-INFORMATION as well.

2007-09-09 12:39  demoss

	* NEWS, version.lisp-expr, src/runtime/gc-common.c,
	  src/runtime/gencgc.c:

	1.0.9.50: O(1) weak pointer scavenging

	* Use self-pointer instead of NULL to mark the end of scavenged weak
	  pointer list in GC, which allows identifying unscavenged pointers
	  by the NULL next pointers.

	* Scavenging a single weak pointer in gencgc is now an O(1) operation
	  instead of O(#scanned pointers so far).

	Thanks to Paul Khuong.

2007-09-09 07:46  crhodes

	* version.lisp-expr, tools-for-build/ldso-stubs.lisp:

	1.0.9.49: NetBSD 2.0 build fix (Aymeric Vincent sbcl-devel 2007-09-05)
		No ptsname() and friends on NetBSD.

2007-09-09 07:32  crhodes

	* version.lisp-expr, doc/internals/.cvsignore,
	  doc/internals/Makefile, doc/manual/Makefile,
	  src/pcl/wrapper.lisp:

	1.0.9.48: texi2pdf rework (Aymeric Vincent sbcl-devel 2007-09-05)
		It looks likely that texi2dvi is more ubiquitous than texi2pdf,
		so just apply the patch.
		... (plus whitespace and .cvsignore collateral changes).

2007-09-08 17:35  demoss

	* version.lisp-expr, src/pcl/slots.lisp, src/pcl/vector.lisp,
	  src/pcl/wrapper.lisp:

	1.0.9.47: VALID-WRAPPER-OF

	* Renamed CHECK-OBSOLETE-INSTANCE/WRAPPER-OF, and fixed the semantics
	  so that it always returns the fresh wrapper.

	* Add FIXME re CHECK-WRAPPER-VALIDITY name.

2007-09-08 17:32  demoss

	* version.lisp-expr, src/pcl/braid.lisp, src/pcl/slots-boot.lisp,
	  src/pcl/slots.lisp, src/pcl/std-class.lisp, src/pcl/vector.lisp:

	1.0.9.46: take pv-slot value from wrapper-slot-table

	* Use NIL instead of T in the CAR of the SLOT-TABLE cells to indicate
	  "slot location not saved for some reason".

	* Better slot location computation for SLOT-TABLES: remaining wrapper
	  copies now also copy the slot-table, and bootstrapping computes the
	  slot locations for rest of the interesting cases.

	* Use SLOT-TABLE to obtain the slot location for permutation vectors
	  instead of WRAPPER-CLASS-SLOTS and WRAPPER-INSTANCE-SLOTS-LAYOUT.
	  Faster, and slowly point the way to getting rid of WRAPPER/LAYOUT
	  distinction.

	* We deal with slot names in permutation vectors: remove the unused
	  code that computed things for non-slot-name places in them.

2007-09-08 16:20  demoss

	* version.lisp-expr, src/pcl/vector.lisp:

	1.0.9.45: cleaner & thread-safe pv-table interning

	* Rename the global interning tables and comment on
	  their purpose for easier understanding.

	* Simplify by-slot indexing: PV-OFFSETS are not needed in the global
	  table.

	* Lock around hash-table accesses.

2007-09-08 15:54  demoss

	* version.lisp-expr, src/pcl/vector.lisp:

	1.0.9.44: clean up PV-TABLE constructor

2007-09-08 15:15  demoss

	* version.lisp-expr, src/pcl/boot.lisp, src/pcl/combin.lisp,
	  src/pcl/dlisp.lisp, src/pcl/methods.lisp,
	  src/pcl/slots-boot.lisp, src/pcl/vector.lisp:

	1.0.9.43: .PV-CELL., use .PV. directly

	* Now that .CALLS. are gone we can get rid of the extra indirection.
	  (Maybe we have to add it back later, but worry about that then.)

	* Since .PV. is magical, also localize its bindings to vector.lisp,
	  instead of exposing the variable in PV-BINDING1's interface (which
	  is used elsewhere as well.)

2007-09-08 14:38  demoss

	* version.lisp-expr, src/pcl/boot.lisp, src/pcl/slots-boot.lisp,
	  src/pcl/vector.lisp:

	1.0.9.42: remove stale CALLS support

	* Permutation vector code contained infrastructure for optimizing
	  GF calls inside method bodies in a similar manner as slot accesses
	  are optimized, but this support was never finished.

	  While it would be nice to have it, right now clarity of the code
	  seems like a higher priority -- it seems to be simple enough to
	  reinstate when we want, and the end result is liable to be easier to
	  understand.

	* Add a big FIXME with a short explanation of the optimization and
	  a pointer to this commit.

2007-09-08 00:18  sa2c

	* version.lisp-expr, tests/threads.impure.lisp:

	1.0.9.41: Fix test on unthreaded config.

2007-09-07 09:51  demoss

	* version.lisp-expr, src/runtime/thread.c:

	1.0.9.40: fix 64 bit build

	* Need to cast (BACKEND_PAGE_SIZE-1) to an unsigned long before bit
	  flipping, otherwise we're potentially cutting the high bits off the
	  allocation address.

2007-09-06 13:36  demoss

	* version.lisp-expr, src/compiler/generic/objdef.lisp,
	  src/runtime/thread.c, tests/threads.impure.lisp:

	1.0.9.39: thread stack memory leaks

	* Since 1.0.9.30 we pad & align the per-thread areas after
	  allocation -- but we need to still pass the original address
	  and size to os_invalidate(), or else we leak.

	* Also refactor the freeable_thread_stack stuff slightly for
	  less OAOOM.

	* Whitespace in tests.

2007-09-06 11:49  demoss

	* NEWS, make-config.sh, version.lisp-expr,
	  tests/threads.impure.lisp:

	1.0.9.38: fix COMPARE-AND-SWAP

	* :COMPARE-AND-SWAP-VOPS, not :COMPARE-AND-SWAP-VOP in *FEATURES*.

	* Threaded cas tests. (threads.impure.lisp currently broken for
	  unrelated reasons since .30 or so.)

2007-09-05 20:40  ths-sf

	* version.lisp-expr, tests/foreign-stack-alignment.impure.lisp:

	1.0.9.37: MIPS shared libraries will need an explicit -fPIC soon-ish.

2007-09-05 20:36  ths-sf

	* version.lisp-expr, src/compiler/mips/macros.lisp:

	1.0.9.36: Match the correct atomicity bit.
		The wonders of copy & paste ...

2007-09-05 20:34  ths-sf

	* version.lisp-expr, src/compiler/ppc/alloc.lisp:

	1.0.9.35: Delete wrong comment.
		At that place, the header tag is written, and we have nothing
		like closure-header-slot.

2007-09-05 20:31  ths-sf

	* version.lisp-expr, src/compiler/alpha/alloc.lisp,
	  src/compiler/hppa/alloc.lisp, src/compiler/mips/alloc.lisp,
	  src/compiler/sparc/alloc.lisp:

	1.0.9.34: Encapulate the whole closure generation in pseudo-atomic.

2007-09-05 20:28  ths-sf

	* version.lisp-expr, contrib/sb-posix/constants.lisp:

	1.0.9.33: Change SIGINFO to the more common SIGPWR, and fix its documentation.

2007-09-05 12:17  ths-sf

	* version.lisp-expr, src/compiler/mips/backend-parms.lisp:

	1.0.9.32: Remove accidentially committed debug code.

2007-09-05 12:15  ths-sf

	* version.lisp-expr, src/code/unix.lisp:

	1.0.9.31: Fix broken syntax.

2007-09-05 01:20  ths-sf

	* version.lisp-expr, contrib/sb-sprof/sb-sprof.lisp,
	  src/compiler/mips/backend-parms.lisp,
	  src/compiler/ppc/backend-parms.lisp, src/runtime/gc.h,
	  src/runtime/runtime.c, src/runtime/thread.c:

	1.0.9.30: Make SBCL work on MIPS/Linux with larger page sizes.
		- Supports now up to 64k pages, aas defined by the o32 ABI.
		- Tested on a bcm1480 with a kernel for 16k pages.
		- The pagesize handling in SBCL is very broken for most other
		  architectures / OSes.

2007-09-02 23:34  ths-sf

	* version.lisp-expr, src/compiler/mips/macros.lisp:

	1.0.9.29: Fix document string formatting.

2007-09-02 03:08  ths-sf

	* make-config.sh, version.lisp-expr:

	1.0.9.28: Enable alien callbacks for MIPS.

2007-09-02 03:06  ths-sf

	* make-config.sh, version.lisp-expr, src/code/unix.lisp,
	  src/runtime/Config.mips-linux, src/runtime/wrap.c:

	1.0.9.27: Fix large file support for MIPS.

2007-09-02 03:04  ths-sf

	* base-target-features.lisp-expr, version.lisp-expr:

	1.0.9.26: Update comment about little-endian MIPS.

2007-09-01 23:37  ths-sf

	* version.lisp-expr, src/compiler/generic/genesis.lisp:

	1.0.9.25: Revert the /xhow -> /show change.
		... as the original version was correct.

2007-09-01 20:37  ths-sf

	* version.lisp-expr, src/assembly/mips/arith.lisp:

	1.0.9.24: Adjust assembly callers of WITH-FIXED-ALLOCATION.

2007-09-01 19:39  ths-sf

	* version.lisp-expr, src/compiler/mips/type-vops.lisp:

	1.0.9.23: Delete conditional INST NOP optimization.
		Using it is apparently too complicated for cold init.

2007-09-01 18:11  ths-sf

	* version.lisp-expr, src/compiler/mips/alloc.lisp,
	  src/compiler/mips/float.lisp, src/compiler/mips/macros.lisp,
	  src/compiler/mips/move.lisp, src/compiler/mips/sap.lisp,
	  tests/dynamic-extent.impure.lisp:

	1.0.9.22: Dynamic-extent value-cells for MIPS.

2007-09-01 18:09  ths-sf

	* version.lisp-expr, src/compiler/mips/macros.lisp,
	  src/compiler/mips/static-fn.lisp:

	1.0.9.21: Make less eager use of eval-when unless cross-compiling.

2007-09-01 18:06  ths-sf

	* version.lisp-expr, src/compiler/mips/c-call.lisp,
	  src/compiler/mips/macros.lisp:

	1.0.9.20: Add #+sb-doc conditionals.

2007-09-01 14:24  ths-sf

	* version.lisp-expr, src/compiler/mips/type-vops.lisp:

	1.0.9.19: Less magic constants in the mips backend.

2007-09-01 14:22  ths-sf

	* version.lisp-expr, src/code/debug-int.lisp:

	1.0.9.18: Instrument COMPUTE-CALLING-FRAME for non-x86 with /noshow0.

2007-09-01 14:02  ths-sf

	* package-data-list.lisp-expr, version.lisp-expr,
	  src/code/host-alieneval.lisp, src/code/target-alieneval.lisp:

	1.0.9.17: Delete deprecated DEF-ALIENs.

2007-09-01 11:28  ths-sf

	* version.lisp-expr, tests/float.pure.lisp:

	1.0.9.16: Remove :mips from Bug #372.
		This was a Linux/MIPS kernel bug, fixed in the latest version.

2007-09-01 11:21  ths-sf

	* version.lisp-expr, src/compiler/generic/genesis.lisp:

	1.0.9.15: Fix typo.

2007-09-01 11:19  ths-sf

	* version.lisp-expr, src/compiler/mips/alloc.lisp,
	  src/compiler/mips/arith.lisp:

	1.0.9.14: Marginally improved VOPs, and a bit of code cleanup.

2007-08-29 19:38  demoss

	* version.lisp-expr, src/pcl/std-class.lisp:

	1.0.9.13: copy the WRAPPER-SLOT-TABLE in FORCE-CACHE-FLUSHES

	* Otherwise the new wrapper will be missing the slot table,
	  potentially leading to bogus SLOT-MISSING calls.

	  No test case, as I was unable to cause bad behaviour with current
	  HEAD in the absence of this patch, but future changes depend on
	  this.

2007-08-29 17:14  demoss

	* version.lisp-expr, src/code/class.lisp,
	  src/compiler/generic/genesis.lisp, tests/clos.impure.lisp:

	1.0.9.12: inform genesis about FOR-STD-CLASS-P slot in LAYOUT

	* It was left uninitialized by genesis, resulting in bogus results
	  from LAYOUT-FOR-STD-CLASS-P.

	* Poke at it in tests.

2007-08-29 16:02  demoss

	* NEWS, package-data-list.lisp-expr, version.lisp-expr,
	  src/code/class.lisp, src/pcl/braid.lisp, src/pcl/defs.lisp,
	  src/pcl/slots-boot.lisp, src/pcl/slots.lisp,
	  src/pcl/std-class.lisp, src/pcl/wrapper.lisp,
	  tests/stream.impure.lisp:

	1.0.9.11: even faster SLOT-VALUE &co

	* Move the SLOT-TABLE data to layout, so that it can be accessed
	  faster, giving ~40% more speed to SLOT-VALUE &co using variable slot
	  names. Speedup is due to one less level of indirection, and avoiding
	  a GF call when fetching the table.

	* FIND-SLOT-DEFINITION goes back to using the linear search, as in
	  some cases where we use it the class wrapper may already be invalid.
	  This will be re-addressed later.

2007-08-29 15:26  demoss

	* .gitignore, version.lisp-expr,
	  tests/foreign-stack-alignment.impure.lisp,
	  tests/stream.impure.lisp, tests/threads.impure.lisp:

	1.0.9.10: make tests clean up after themselves a bit better

	* Delete various temporary files (still some left).

	* Also add test/test-status.lisp-expr to .gitignore.

2007-08-29 15:23  demoss

	* version.lisp-expr, src/pcl/braid.lisp, src/pcl/defs.lisp,
	  src/pcl/slots-boot.lisp, src/pcl/std-class.lisp:

	1.0.9.9: rename CLASS-SLOT-VECTOR to CLASS-SLOT-TABLE

	* And the corresponding slot from SLOT-VECTOR
	  to SLOT-TABLE.

	* Avoids confusion with instance slot vectors.

2007-08-29 15:13  demoss

	* NEWS, version.lisp-expr, src/code/early-setf.lisp:

	1.0.9.8: prettier DEFINE-MODIFY-MACRO arglist

	* Use MAKE-SYMBOL instead of GENSYM for symbols that appear in the
	  final lambda-list.

	Thanks to Tobias C. Rittweiler.

2007-08-29 14:58  demoss

	* NEWS, version.lisp-expr, tools-for-build/wxs.lisp:

	1.0.9.7: the MSI should not add .lisp and .fasl associations

	* It could, but not without asking permission.

2007-08-29 14:51  demoss

	* NEWS, base-target-features.lisp-expr, make-config.sh,
	  version.lisp-expr:

	1.0.9.6: remove :UNIX from *FEATURES* on Windows

	Thanks to Luis Oliveira.

2007-08-27 15:47  demoss

	* version.lisp-expr, src/pcl/boot.lisp:

	keep docstrings from PCL bootstrap around

	* Keep documentation strings from early generics and methods.

2007-08-27 15:33  demoss

	* .gitignore, version.lisp-expr:

	added .gdb_history to .gitignore

2007-08-27 15:31  demoss

	* version.lisp-expr, src/pcl/vector.lisp:

	micro-optimize SKIP-FAST-SLOT-ACCESS-P

	* It's the only caller of SKIP-OPTIMIZE-SLOT-SLOT-VALUE-BY-CLASS-P, so
	  inline the latter's body and remove the duplicate *BOOT-STATE* check
	  and FIND-SLOT-DEFINITION call. Add FIXME due to apparent strangeness
	  re existense of the slot definition.

2007-08-27 15:13  demoss

	* NEWS, version.lisp-expr, src/pcl/braid.lisp,
	  src/pcl/slots-boot.lisp, src/pcl/slots.lisp,
	  src/pcl/std-class.lisp, src/pcl/wrapper.lisp,
	  tests/clos.impure.lisp:

	faster SLOT-VALUE &co with variable slot names

	* Cache the slot-location and typecheckfun in the class-slots-vector
	  in addition to the slot-definition for STANDARD-CLASS and
	  FUNCALLABLE-STANDARD-CLASS.

	* New function CHECK-OBSOLETE-INSTANCE/CLASS-OF, which combines the
	  two. Faster then calling both separately, since both need to grab
	  the wrapper -- used by SLOT-VALUE &co.

	* Unoptimized SLOT-VALUE, (SETF SLOT-VALUE), SLOT-BOUNDP, and
	  SLOT-MAKUNBOUND can now directly access instance and class slots the
	  typecheckfun in normal cases, giving upto 20-25% performance boost
	  for these functions.

	* Obsolete-instance protocol tests using variable slot-names.

2007-08-27 14:44  demoss

	* NEWS, version.lisp-expr, src/code/early-type.lisp,
	  src/code/list.lisp:

	1.0.9.1: faster MAKE-MEMBER-TYPE, UNION, and NUNION

	* MAKE-MEMBER-TYPE was doing several SUBSETP calls,
	  instead just walk once over the list of members.

	* UNION and NUNION were using an O(N^2) implementation
	  for all input sizes. Use a hashtable (giving O(N))
	  for large inputs when :TEST is something we can
	  use with a hash-table.

	Thanks to Damien Diederen for catching a typo in the new UNION /
	NUNION code.

2007-08-27 00:10  wnewman

	* version.lisp-expr:

	1.0.9: release, will be tagged as sbcl_1_0_9

2007-08-26 20:53  ths-sf

	* version.lisp-expr, src/code/float-trap.lisp:

	1.0.8.48: Update comment.

2007-08-26 20:32  ths-sf

	* version.lisp-expr, src/code/mips-vm.lisp:

	1.0.8.47: Declare alien input parameters as such.

