* Slightly less, but hopefully more representative of reality, documentation for type checking policies. * Generally reorganize the Compiler chapter a bit, moving and renaming some sections -- eg. split "Compiler Errors" --> "Compiler Diagnostics" and "Compiler Errors". * Back out a bogus lifting of chapter @nodes into sbcl.texinfo which leaked in accidentally. * Remove references to INHIBIT-WARNINGS, leaving only a footnote.
* Include documentation, however sparse, for SB-PROFILE, SB-GRAY, and SB-SIMPLE-STREAMS. * Beginnings of restructuring the manual: lift SB-BSD-SOCKETS into a full chapter called "Networking", etc. * An unfortunate consequence of the above is that we cannot autogenerate the contrib-doc list anymore, and the contrib documentation structure is less otrhogonal and has tighter coupling to the general manual structure. Since new contribs appear relatively seldom this is hopefully not a big issue.
Implement modular ASH for non-constant positive shifts ... make sure that we only apply the transform when we know the shift count won't be misinterpreted... ... and also that we don't do the more expensive non-constant shift for constant counts; ... punt on some of the cleverness for hppa; all other platforms should be optimal. ... one test for something which went wrong in an earlier version.
Fix/bandaid for some more threading problems (though regrettably only the easy ones) ... when stopping threads for GC, if kill() fails assume this is because the thread died after outliving its parent so nothing was available to set th->state=STATE_DEAD when it exited. Mark said thread dead, Ted. (Note: still doesn't cope with pid recycling. In the unlikely-unless-malefactor-involved case that a pid previously used for a thread died after its parent and now belongs to an unrelated process which the current user has permission to kill it, it will probably die in the next GC. Exploits on a postcasrd to the usual address, please) ... interrupt_thread() now checks that the thread is one we know about (instead of just some random other process) and refuses to kill if it's not. INTERRUPT-THREAD now catches this and other errors from kill() and signals a more useful condition than the provious "unexpected system call failure" ... only the parent of a thread can identify whether it is a zombie, which it should usually do when it gets a SIG_THREAD_EXIT. It's possible that this signal may go missing if delivered during pseudoatomic or similar, so for the sake of being able to GC we ask each thread to check its children again in the stop_for_gc_handler before going to sleep Thread documentation update based on the LSM lightning talk
Restore Darwin buildability ... put sbcl.h before runtime.h in ppc-darwin-mkrospace.c. It would be nice if a compilation failure in ppc-darwin-mkrospace caused the build to abort, but I don't know if make is rich enough to express that in conjunction with the fact that compiling it is not necessary on non-ppc/darwin platforms.
Define an appropriate primitive type alias for SB!C::RAW-VECTOR; the src/compiler/*/array.lisp changes from a version or two ago should now build properly (thanks to Xophe for the alias idea). Merge changes to package-data-list.lisp-expr, including support for various 32/64-bit-isms which have not yet landed.
The quest for a real 64-bit port continues: * add logic for 64-bit friendly specialized array types (although the appropriate getter and setter VOPs may not be written); * add widetags for the same and attempt to preserve binary compatibility by not moving around the widetags for existing 32-bit ports; * modify bits of the garbage collector to handle the same, mostly in scavenging and friends. The garbage collector has not been reviewed (yet) for 64-bit cleanness; * export symbols for 64-bit friendly specialized array types from appropriate packages (but note KLUDGE in package-data-list); * export several Lisp-determined constants in SB!VM to C-land. Since they are no longer hard-coded in the C source files, rearrange headers to #include sbcl.h as the first user-defined header to ensure constants are recognized in other header files; * remove 32-bit assumptions from NWORDS in the garbage collector and remove duplicate definitions from various places.