sbcl Log

Commit Date  
[92a170] by Juho Snellman Juho Snellman

:backtrace-interrupted-condition-wait fails on x86 Linux

2011-12-04 23:08:42 Tree
[c6fecd] by Nikodemus Siivola Nikodemus Siivola

fix bug in semaphore notification objects on TRY-SEMAPHORE

It's not notifiction.

2011-12-01 16:05:43 Tree
[44947b] by Stas Boukarev Stas Boukarev

Fix clos.impure.lisp DOCUMENTATION test on #-sb-doc.

Don't rely on docstrings being present on standard functions
when testing DOCUMENTATION.

2011-12-01 14:34:37 Tree
[971940] by Alastair Bridgewater Alastair Bridgewater

tests: Skip stream.impure.lisp / BUG-657183 on non-unicode.

* For some reason, #\GREEK_SMALL_LETTER_LAMDA isn't a valid
character name on non-unicode builds. Who knew?

2011-11-30 16:39:00 Tree
[224de3] by Joshua Elsasser Joshua Elsasser

Oops, remove a debugging printenv which snuck in.

2011-11-30 05:29:58 Tree
[8c4183] by Nikodemus Siivola Nikodemus Siivola

try to robustify test for bug-309448

We've been getting intermittent reports of it failing, but I've been unable
to reproduce so far. The test in question is a compiler scaling test, which
compares times it takes to compile different things. Brittle, indeed.

Other than non-SBCL causes the only thing I can think of right now is GCs
from other tests getting accounted against one of the supposed-to-be-fast
runs. So, run GC :FULL T before getting the timings to make things more

2011-11-29 08:56:57 Tree
[7da051] by Nikodemus Siivola Nikodemus Siivola


On platforms without UNWIND-TO-FRAME-AND-CALL vops we introduce an extra
block, which then shows up there in the function names for eg. lambdas
defined at the toplevel in high debug code. Fix that.

CATCH also introduces a block. Filter those out too.

2011-11-27 14:53:20 Tree
[0dda50] by Lutz Euler Lutz Euler , pushed by Nikodemus Siivola Nikodemus Siivola

Tighter floating-point type constraints in some cases

CONSTRAIN-FLOAT-TYPE used to return a closed bound in some cases where
the corresponding (tighter) open bound would have been derivable,
leading to missed optimisation opportunities. For example the compiler
did not derive that x is not zero in the following call to LOG:

(defun foo (x)
(declare (type (single-float 0.0) x))
(when (> x 0.0)
(log x)))

Fix CONSTRAIN-FLOAT-TYPE so that it returns the tightest possible result
in all cases.

See lp#894498 for details.

2011-11-25 08:59:37 Tree
[c5e9ad] by Joshua Elsasser Joshua Elsasser

Insure that the test for bug 881445 runs with a large enough dynamic space.

2011-11-23 07:29:13 Tree
[9cb944] by Joshua Elsasser Joshua Elsasser

Skip a known failure on openbsd.

2011-11-23 01:20:49 Tree
[feb345] by Joshua Elsasser Joshua Elsasser

Avoid a reader error in threads.pure.lisp with non-threaded sbcl.

2011-11-23 01:15:03 Tree
[b90e13] by Lutz Euler Lutz Euler , pushed by Christophe Rhodes Christophe Rhodes

Make EXPT use double-precision throughout in more cases

lp#741564 notes that a Maxima test case fails because the result of
(EXPT <fixnum> <(complex double)>) is much less precise than expected.
This is caused by EXPT using an intermediate single-float value here.

This behaviour actually occurs for all the following combinations
of argument types:

(EXPT <(or rational single-float)> <(complex double-float)>)

(EXPT <(or (complex rational) (complex single-float))>
<(or (complex double-float) double-float)>)

In all these cases the first step EXPT does is to calculate (LOG BASE)
in single precision.

Refine the type dispatch clauses in EXPT to separate these cases
as appropriate, before applying LOG. Add tests.

Fixes lp#741564.

Signed-off-by: Christophe Rhodes <>

2011-11-20 15:50:17 Tree
[6f9469] by Nikodemus Siivola Nikodemus Siivola

oops, SB-EXT:DYNAMIC-SPACE-SIZE broke a test

(Package lock violation.)

2011-11-20 12:20:11 Tree
[2050b7] by Nikodemus Siivola Nikodemus Siivola , pushed by Nikodemus Siivola Nikodemus Siivola

better inner and anonymous function names

* New concept: "name context". It is either name of the outermost non-NIL
block in the current lexenv (FIXME: would be better to have the outermost
global function name instead) or the source-namestring of the file in which
the function resides.

* Name anonymous functions as

(LAMBDA <lambda-list> :IN <context>)

* Name FLET and LABELS functions as

(FLET <name> :IN <context>)


(LABELS <name> :IN <context>)

Adjust tests to suit.

* Remove BLOCK-GENSYM as this fulfills the same goals, and together
they make backtraces overly noisy.

2011-11-19 17:00:09 Tree
[6848a9] by Nikodemus Siivola Nikodemus Siivola

default gen.bytes_consed_between_gc to same 5% of dynamic space size

...the previous default was 2,000,000 bytes, not 20Mb as the
documentation claimed. Oops.

2011-11-19 15:04:37 Tree
[6cfdd9] by Nicolas Edel Nicolas Edel , pushed by Nikodemus Siivola Nikodemus Siivola

pass errno from exec() to parent in spawn()

Open a pipe, set FD_CLOEXEC.

Child: if exec() fails, grab errno and write it to pipe.

Parent: try to read from the pipe -- if you get something, it means the
child didn't exec and the reason is in the pipe. Wait for the child to exit
and return -1 and set errno to whatever the child got.

Also use _exit() instead of exit() when dying in the child after exec
failure -- running exit hooks there would probably be bad.

(Somewhat edited from Nicolas' original patch.)

Signed-off-by: Nikodemus Siivola <>

2011-11-18 11:50:36 Tree
[9f1903] by Nikodemus Siivola Nikodemus Siivola

semaphore notification objects

2011-11-17 17:08:58 Tree
[67a805] by Paul Khuong Paul Khuong

Plug two more CTYPE leaks into fasls

* (setf aref) would dump the declared element type on compile-time
type mismatch.

* same for function return value types (e.g. via (declare (values ...)))

2011-11-15 21:20:06 Tree
[5efae2] by Paul Khuong Paul Khuong

Plug a CTYPE leak into fasls via SETQ

Type mismatch from SETQing lexical variables used to dump CTYPE
structs directly. Splice a type specifier in instead during
IR1 conversion of SETQ so that the source form remains dumpable.

Reported with the test case by Xach on #lisp.

Fixes lp#890750.

2011-11-15 16:53:50 Tree
[79be3b] by Nikodemus Siivola Nikodemus Siivola


Both followed symlinks too eagerly.

* Presumably anyone doing (rename-file "link-to-foo" "bar") wants to rename
the link and not the file it points to -- which has the unpleasant
side-effect of breaking the selfsame link.

Make it so.

* It is less clear what someone doing (delete-directory "link-to-dir")
expects to happen -- so take the conservative option and signal an error,
and document this.

2011-11-14 14:20:02 Tree
[79c4a7] by Paul Khuong Paul Khuong

More numerically stable %hypot (ABS of complex floats) on win32

Based on a patch by Robert Smith.

2011-11-13 20:02:01 Tree
[b71b8d] by Nikodemus Siivola Nikodemus Siivola

extensible CAS and CAS extensions

DEFSETF, including CAS-functions similar to SETF-functions:

(defun (cas foo) (old new ...) ...)

THis is exported from SB-EXT for users to play with, and used to implement
our CAS places internally.

Add support for CAS of:




In case of SLOT-VALUE we don't yet support any optimizations or specify
results when SLOT-VALUE-USING-CLASS or friends are in play -- perhaps later
we can add


in order to support it for arbitrary instances.

Adding support for permutation vector optimization should not be too hard
either, but let's let the dust settle first...

2011-11-12 13:41:48 Tree
[40660c] by Christophe Rhodes Christophe Rhodes

fix out-of-line structure predicates on obsolete standard-instances

Apply the same fix to typep-to-layout that I did over five years ago
to the various inline / compiler transforms. Include an out-of-line
test case.

2011-11-11 16:47:30 Tree
[a7a9b1] by Alastair Bridgewater Alastair Bridgewater


* Move the valid_lisp_pointer_p() guts from gencgc.c to
gc-common.c, updating header files and staticness as required.
Also remove all of the debug output conditional on
gencgc_verbose (which is obviously gencgc-specific).

* Make the lisp-side VALID-LISP-POINTER-P not-gencgc-specific.

* Always use VALID-LISP-POINTER-P in MAKE-LISP-OBJ instead of
using some simple bounds-check on CHENEYGC.

2011-11-10 19:52:09 Tree
[597c0a] by Alastair Bridgewater Alastair Bridgewater

gencgc: Make MAKE-LISP-OBJ of SIMPLE-FUN object addresses work.

* This turned out to be a bug in the gencgc guts,
looks_like_valid_lisp_pointer_p() was doing pointer arithmetic
when it should have been converting the pointer to an integer.

2011-11-10 19:43:48 Tree
Older >