18.104.22.168: make-target-2.lisp split into compile and dump phases.
* Split make-target-2.lisp into make-target-2.lisp and
make-target-2-load.lisp, reducing unnecessary state that was kept around.
Not keeping symbols that were interned during the compilation of PCL
saves us 400kB on x86 and between 1MB and 1.5MB on x86_86.
* Unintern symbols that are internal to CL-USER before dumping the core.
This doesn't save any space; just removes confusion.
22.214.171.124: Extensible sequences. (EXPERIMENTAL: Do Not Use As Food)
... a little bit of type system hackery, as usual; we can't
use hierarchical comparison on the newly non-sealed
classoid SEQUENCE because, well, its subclasses aren't
hierarchically arranged (take a bow, ARRAY).
... a certain amount of rearrangement of seq.lisp and related
source files; mostly, defining SEQ-DISPATCH to have
three branches rather than two, and writing trampoline
... make CONSED-SEQUENCE understand that we can only be clever
about freshly-consed vectors.
... actually make DOVECTOR be like DOLIST, in having a tagbody,
being clever about the declarations, and so on.
... new SEQUENCEP function.
... new macro DOSEQUENCE (like DOVECTOR and DOLIST but for
sequences, used in one or two places)
... lotso &REST args for sequence functions, so fndb needed
reworking. (The &REST args have dynamic extent and
are declared as such)
... change VALIDATE-SUPERCLASS to allow SEQUENCE as a
... disable a couple of XC type tests.
Note: you don't get tests for this for two reasons: one, the
interface isn't stable (I'm hoping to get feedback), but more
importantly two, the tests that I have are a derived work of a
GPL piece of software (the ansi-tests from GCL). This situation
will be rectified eventually.
With this patch, sbcl has been reported to run SLIME on win32.
... apologies if I got any credits wrong, the patches have been
floating around quite a bit - if you contributed something in
there and the NEWS entry doesn't mention you, just drop me a
note and I'll update it accordingly.
0.8.14.5: Join the foreign legion!
* x86/FreeBSD, x86/Linux and Sparc/SunOS now have
linkage-table support, allowing SAVE-LISP-AND-DIE to
function properly in the presence of loaded shared
* As a related cleanup automate testing for dlopen
support on the plaform, and conditionalize
LOAD-SHARED-OBJECT support on the resulting
0.8.12.7: Merge package locks, AKA "what can go wrong with a 3783 line patch?"
... Controlled by the presence of :sb-package-locks in target
... This builds both with and without package locks on both
x86 Linux and SunOS Sparc, with both CMUCL and SBCL
as host -- so chances are it should build elsewhere as
... Remaining TODO: turn package locking errors from lexical
constructs to program errors in the produced code, fix
the bits in SBCL that hit host's SBCL-tyle package locks
(relevant FIXME is in src/cold/shared.lisp).
Record filesystem information during the build in debug information
relative to SYS, not to /home/kevin/sbcl or equivalent.
... change to core code: tiny if ugly;
... change to warm load: only to refer to files as lpns rather
than physical namestrings;
... change to vanilla-modules: tiny;
... change to asdf modules: well, erm, less tiny. I'm not pleased
by the need to duplicate similar logic in every .asd, but
I think it's a similar symptom to the duplication of the
TEST-OP logic in many of them: the coupling between asdf
and the rest of the system is slightly wrong.
(At startup, SYS by default has translations that refer back to
the build-time values; distributors may wish to alter this for
their binaries, for instance by setting translations to
distribution-known values when dumping any final image)
... don't define a LENGTH type for disassembly; we're not
allowed to do that, because LENGTH is in the CL package. Call
it DISASSEM-LENGTH instead. (reported by rtoy on #lisp IRC)
... cut'n'pasteo: restart print functions in warm init now refer
to variables that are bound, rather than those that aren't.
Turn SB-PCL::CLASS into CL:CLASS
... and to do that, turn CL:CLASS into SB-KERNEL:CLASSOID
Well, there's a little more to it than that. This commit causes no
regressions against our own test suite (once the necessary
s/SB-PCL:FIND-CLASS/FIND-CLASS/ changes have been made) but, along with
several new passes in the gcl suite, causes one new failure to do with
There have been some code deletions, too, as some methods that were
necessary to paper over the cracks between the two different CLASSes are
now no longer necessary, as the CLASSOID structure is now viewed as
internal. The major code addition is probably
SB-PCL::SET-CLASS-TYPE-TRANSLATOR, which communicates the necessary
information to the type engine (with extra hair to get BUILT-IN-CLASSES
This branch is expected to last during the freeze period, and land
shortly after 0.7.14 is released.
PCL accessors/SLOT-MISSING fixes:
Remove some package fragility of generated accessor functions
... define a new generalized function name class:
... s/SLOT-READER-SYMBOL/SLOT-READER-NAME/, and use the new
generalized function names
... now SB-SLOT-ACCESSOR-NAME and *SLOT-ACCESSOR-NAME-PACKAGE*
can go away
Ensure that SLOT-MISSING is called in all required situations.
The easy way would just have been to adjust ASV-FUNCALL slightly,
but that would have been no fun, so include an
optimization due to Gerd Moellmann:
... new LOAD-TIME-VALUE logic that ensures that the relevant
accessor name is always FBOUNDP, so the FBOUNDP check
can be elided at runtime
By this stage, it's all working, but
... while we're at it, also include the
ASV-FUNCALL-as-was/ENSURE-ACCESSOR optimization for
SLOT-BOUNDP, which was not included in historical PCL.
... also, ensure that fast discriminating functions are
constructed, conditional on
*OPTIMIZE-CACHE-FUNCTIONS-P*: eventually, this can
probably be made either unconditional or conditional on
the compilation policy when a generic function is
Include a simple test for SLOT-MISSING behaviour.
... this version has also been tested against Gerd Moellmann's
test suite, with no regressions found.
Installed ctor.lisp MAKE-INSTANCE optimization (from Gerd
Moellmann, via CSR sbcl-devel 2002-12-21)
... wrote tests for those bugs which it fixes
... do not delete fast-init.lisp yet; waiting for user feedback before
destroying some CVS history
... update COPYING information to reflect the new copyright
Fix one "outstanding embarrassment" (as per CSR sbcl-devel
2002-12-10): no more building of compiler files in
... play symlink games instead, to build the troublesome
assembly files twice under different names (will need
adjustments to work on non-Unix filesystems (e.g.
NTFS) but no more than the rest of the build).
Fix bug 185 (top level forms at the REPL)
... implement a LOCALLY method for EVAL-IN-LEXENV
... factor out MACROLET-DEFINITIONIZE-FUN and
SYMBOL-MACROLET-DEFINITIONIZE-FUN from the IR1
translators for same
... implement SYMBOL-MACROLET and MACROLET for EVAL-IN-LEXENV
in terms of said DEFINITIONIZE-FUN macros and LOCALLY
... set compilation policy in make-target-2 to avoid file scope
... set interaction policy by hard-coding it in
... throw it together and hope it all still works.
(I hope this checkin works. I have issued conflicting instructions
to do with adding and removal of .cvsignore files, and
it's possible that this has confused things. Only the
.cvsignore files should be messed up, if anything has
Merge APD patch for BUG 191a (sbcl-devel 2002-08-12)
Merge patch from Gerd Moelmann regarding the long form of
DEFINE-METHOD-COMBINATION (cmucl-imp 2002-06-18)
Remove now-unneccessary .cvsignore files (having added a "master"
cvsignore file in sbcl's CVSROOT)
Mostly-tested but still considered "experimental" non-invasive
stack exhaustion checking, using a guard page at the end of the
stack and an extra clause in the sigsegv (on some ports, sigbus)
handler. One day there will be an internals doc with the
gory details: for now, try http://ww.telent.net/diary/2002/7/#23.59392
reviewed OPTIMIZE declarations, (mostly trying to avoid
inadvertently imposing large %DETECT-STACK-EXHAUSTION
...bumped SAFETY 1 to SAFETY 2 in warm.lisp (since
(> SPEED SAFETY) isn't what we want)
...changed (SPEED 3) (SAFETY 3) to (SPEED 2) (SAFETY 2) in
...removed OPTIMIZE declarations in time.lisp, since there's
no up-to-date compelling reason to use other than the
default optimization there.
...removed (OPTIMIZE (SAFETY 3)) in DEFTRANSFORM ARRAY-HEADER-P,
since there seems to be no reason for it
rearranged insert-%DETECT-STACK-EXHAUSTION code to make
indentation less ridiculous