* Delete SUPPORT and minimize BUGS.
The information that used to be there is now the first chapter of
the manual: "Getting Support and Reporting Bugs", Maybe it belongs
elsewhere, but IMO it should be as prominent as we can make it - so
the first chapter for now.
Refer to Lauchpad and sbcl-bugs in "Reporting Bugs".
Remove Dan B. from support providers for now, given that
metacircles.com is currently domain-parked.
* Define LVAR-CONSERVATIVE-TYPE &co, which take into accound that a
function call can change the type of a cons or a non-simple array
without changing it's identity. Use this instead of LVAR-TYPE in
derive-type optimizers for CAR and CDR, and in the ARRAY-DIMENSIONS
transform. (There may be other places where it should be used as
well, but I could not find anything else just now.)
- change runtime.h so that a simple '#define QSHOW_SIGNAL 1' turns
QSHOW automatically and defaults to blocking signals during printing
- add notes to BUGS on how to report bugs related to signal handling
- kill a warning in thread.c in code conditional on QSHOW_SIGNAL
- add #include <stdio.h> to x86{-64,}-darwin-os.c so that it compiles
with QSHOW
- add comment explaining the previous commit
* Add support for base-strings in fill-pointer output streams.
* Also fix a bug revealed by this change in derivation of
ARRAY-ELEMENT-TYPE return type.
Originally reported by Bruno Haible, more recently by Stephen Wilson.
* SHARED-INITIALIZE (SLOT-OBJECT) should not check structure slots
versus +SLOT-UNBOUND+: uninitialized slots are zeroed. Since adding
slots to structure classes cannot cause those slots to be added to
structure instances, we don't really have to check for boundness at
all.
* SB-PCL::STRUCTURE-TYPE-SLOT-DESCRIPTION-LIST and
SB-PCL::MAKE-STRUCTURE-CLASS-DEFSTRUCT-FORM did not take overridden
slot specifications into account, and the latter also omitted
initform and type information.
* Delete SB-PCL::ALLOCATE-STRUCTURE-INSTANCE, unused.
* ALLOCATE-INSTANCE (STRUCTURE-OBJECT) should not fall back on
ALLOCATE-STANDARD-INSTANCE.
* Don't terminate the block in MAYBE-TERMINATE-BLOCK even if the node
is a call to a function that never returns if it is also the tail
end of a XEP -- this allows TCO to deal with the XEP.
* More stale bugs:
** 143 -- cannot replicate, interrupt handling has been robustified
and partially redesigned since than, so confidence that this is
really gone is reasonably high.
** 238 -- has gotten fixed at some point.
* Case A is a non-issue. SBCL interprets "unpredictable but harmless"
to mean "anything, but heap will no be corrupted, data lost, etc"
-- that is, an error may or may not be signalled, but it the lisp
session will remain sane and operable.
* Case B is negated by the portability argument: since specifying both
is unspecified, we should not build useful-seeming extensions on top
of it, as it will only create portability problems for users.
* Case C remains partially valid, except for the runtime WARNINGs.
Integrated into the new text.
* As we cannot reliably ensure nothing calls SET or (SETF
SYMBOL-VALUE) on the special variable, we need to disable
optimizations perutation vector optimizations for them.
* For the same reason we cannot implicitly declare types for even
local specials in DEFMETHODs.
* Delete bug 276: the issue it refers to was fixed back when we
stopped inserting declarations for special variables.
* Mark lambdas introduced by the compiler as such, so that
LAMBDA-SYSTEM-LAMBDA-P returns true for them.
* Allow USE-GOOD-FOR-DX-P to inspect COMBINATIONs with CLAMBDA
functionals: if the return value of the function always originates
from a known DX-capable combination, and the arguments of the
original combination are used only by the DX-capable combination,
consider the original combination good for DX.
* Allow USE-GOOD-FOR-DX-P to inspect REFs to LAMBDA-VARs: if the var
is bound by a system lambda, has no other refs, is never set, gets
its value from a single-value combination, and the LVAR it gets its
value from is good for DX ... then the REF is good for DX as well.
* HANDLE-NESTED-DYNAMIC-EXTENT-LVARS handles REFs as well by
recursing on the lvar the REF gets its value from.
* Make PARSE-ALIEN-RECORD-FIELD return the parsed values instead of
frobbing the type object.
* In PARSE-ALIEN-RECORD-TYPE use that to parse the new fields so that
we can compare them to the old ones -- signal a continuable error
if there is a mismatch.
* Were broken -- fix by using the special FUNCALL related magic is
only for the outermost list, not sublists. Reported by Willem
Broekema.
* Adjust one of the existing tests to check for this.
* Record bug 430: nested stack allocation does not work for structures.
* (MAKE-ARRAY (1- ARRAY-DIMENSION-LIMIT)) does not cause GC invariant loss.
ARRAY-DIMENSION-LIMIT was lowered by two to leave space for the
array header.
* logged FORMAT bug
* Make CLOSE drop input buffers from ANSI-STREAMs. Reported by Damien
Cassou on sbcl-devel.
* Signal SB-INT:CLOSED-STREAM-ERROR instead of a SIMPLE-ERROR -- good
for clarity, enables a proper test.
* Remove SB-C::STACK-ALLOCATE-* policies.
* Obey DYNAMIC-EXTENT declarations if SB-EXT:*STACK-ALLOCATE-DYNAMIC-EXTENT*
is true (the default), with the following exceptions:
** Value cells are not stack allocated.
** Vectors that may be longer then a single page are stack
allocated only in SAFETY 0 policies.
* New declaration: SB-INT:TRULY-DYNAMIC-EXTENT. Always stack-allocates,
regardless of SB-EXT:*STACK-ALLOCATE-DYNAMIC-EXTENT*. Also causes stack
allocation of value cells and potentially large vectors.
Used exclusively inside SBCL.
* Move STACK-ALLOCATE-RESULT optimizers from backends to
src/compiler/generic/vm-ir2tran.lisp.
* Documentation.
* Fixes#427: vintage TRULY-THE annotated the CALL early enough that
the IR2 conversion of the %PRIMITIVE got the right primitive types.
Now that TRULY-THE is a regular cast, an optimizer is needed to
annotate the call.
* Refactor FIND-TEMPLATE-RESULTS a bit.
* Get rid of now-pointless TRULY-THE wrappers around several
%PRIMITIVE calls.
* Test-case.
* In SAFELY-BINOP, when the other argument must be coerced to single
float, punt if it is an integer that cannot be exactly represented
as a single float.
* Fixes bug 420, and a whole slew of MISC failures in ansi-tests --
including the ones that used to cause a hard crash or a hang: cvs
up -dPC your ansi-test trees, and should huzzah!
* While register sets for DESCRIPTOR-REG and ANY-REG are identical on
x86 and x86-64, the compiler reasons about them a bit differently
-- so the earlier change is wrong, and caused a regression.
* Test-case to catch the regression, reduced from Elephant sources.
* Record the bug the earlier change tried to address as #427.
* Require an explicit SB-C::STACK-ALLOCATE-VALUE-CELLS optimize
declaration before stack allocating value cells to prevent
returning garbage values from hairy user code.
* TRULY-THE no longer eagerly annotates the LVAR, but rather acts
like THE in unsafe code. (Inserts a cast for which no type-check is
generated.)
* ALLOC-NUMBER-STACK-SPACE and ALLOC-ALIEN-STACK-SPACE were missing
:RESULT-TYPES, which was masked by the old TRULY-THE
implementation. (Tested on x86, x86-64, PPC, but all backends
updated -- hopefully correctly.)
* Docstrings for THE and TRULY-THE.
FWIW, this patch seems to make PPC+GENCGC build happy once again: but
I don't know if that means the problems there were/are related to bug
423 -- or if the exact memory layout just happens to change subtly so
that whatever corruption occurs, just happens to occur in a place
where the GC doesn't see it anymore. (Or if the exact point at which
GC runs is now just slightly different so that the problem pointers
are not live anymore, or...)
20-25% improvement for the test-case in bug 188.
* New slot in LAMBDA-VAR: LAST-INITIAL-TYPE, which holds the last
initial-type for that variable seen by PROPAGATE-FROM-SETS.
* Be lazy, and don't PROPAGATE-TO-REFS unless something of
interest has happened, to wit:
-- One of the CSET nodes has a new, more specific type.
-- INITIAL-TYPE has become more specific.
This also allows us elide TYPE-UNION computation in the
uninteresting cases.
* Requires having NODE-REOPTIMIZE set when IR1-OPTIMIZE-SET
is called.
* %SINGLE-FLOAT and %DOUBLE-FLOAT should not be flushable.
* BUGS entry remains: should (COERCE (EXPT 2 1024) 'SINGLE-FLOAT)
really signal a TYPE-ERROR?
* Rewrite SPLIT-DECLARATIONS to use two (short) constant lists and
INFO instead of *VAR-DECLARATIONS-WITH|WITHOUT-ARG*.
* Test-case for #402.
* While at it, replace the *VAR-DECLARATIONS* from walker as well,
replacing it with WALKED-VAR-DECLARATION-P, and make VAR-DECLARATION
use a compiler-macro to check for bogus-declarations when possible.
(All our whopping 3 calls to it.)
* Bug #413 was fixed in 1.0.13, remove it from BUGS.
* Whitespace.
* logged a bug
* searched for sbcl-devel references and added notes about
the need to subscribe (since the mailman bounce message is
particularly unhelpful, and I periodically get mail from
frustrated would-be posters)
* fixed a few typoes
* revised a few passages, and completely gave up on trying to
summarize SBCL performance in a paragraph in the man page
* Don't store non-unique objects like symbols, fixnums,
or characters in *SOURCE-PATHS*.
* For future refactoring ease, always access *SOURCE-PATHS*
via GET-SOURCE-PATH and NOTE-SOURCE-PATH.
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.
* If an interrupt arrives while have stuff on the *CACHE-MISS-VALUES-STACK*
and the interrupt handler happens to call a gf that is already there,
we used to think this was a metacircle. Instead we need to bind
variables like this to "empty" values for interrupt hanlers.
* Test.
* Note some bugs.