Christophe Rhodes [Wed, 11 Nov 2009 17:10:40 +0000 (17:10 +0000)]
1.0.32.19: Support for :REPLACEMENT external-format / encoding modifier
For a given keyword :foo naming an encoding, allow an external-format
(:foo :replacement <character>) such that any stream or octet coding
errors are automatically treated by using the <character> as replacement
instead.
To do this, wrap each of the functions in the external-format object
named by the keyword with a function establishing handlers for the
exceptional conditions. At the moment, the output restarts for c-string
external format conversion are not implemented (so handle specific condition
types like STREAM-FOOCODING-ERROR, not general FOOCODING-ERROR).
Nikodemus Siivola [Wed, 11 Nov 2009 15:06:29 +0000 (15:06 +0000)]
1.0.32.18: additional allocation information
* SB-INTROSPECT:ALLOCATION-INFORMATION also reports on boxedness of
the page the object resides on.
* When heap statistics are printed, always print the details of the
pseudo-static generation. Make print_generation_stats extern so it
can be called from lisp.
Christophe Rhodes [Wed, 11 Nov 2009 13:52:19 +0000 (13:52 +0000)]
1.0.32.17: make the utf-8 external format more robust
Detect all malformed sequences, including attempts to decode or encode
Unicode surrogate codepoints (disallowed by the Unicode definition of
UTF-8). Some error tests change behaviour, and some (unexported)
condition classes are not triggered under the same circumstances any
more.
Also, handle null-termination on a successful conversion of an empty range of
a nil array.
Christophe Rhodes [Wed, 11 Nov 2009 13:21:37 +0000 (13:21 +0000)]
1.0.32.16: external-format restart enhancements
* OUTPUT-REPLACEMENT restart for fd-stream external-formats, taking a
string designator argument and attempting to encode that instead of the
erroneous output;
* fixes for the FORCE-END-OF-FILE fd-stream external-format restart, using
a somewhat involved call / return protocol for communicating out-of-band
information between output routines and drivers;
* INPUT-REPLACEMENT restart for fd-stream external-formats, again with
complicated out-of-band information communication. This also interacts
with UNREAD-CHAR;
* fix the ATTEMPT-RESYNC restart (and similar) at or near the end of file,
ensuring that there is always a valid CATCH tag to be THROWN to;
* fix a double-error case in the USE-VALUE restart for unibyte octet
conversions;
* bandage fix for mb-util decoding-error USE-VALUE restart -- there's more
factoring to be done, but this fixes lp #314939
Christophe Rhodes [Wed, 11 Nov 2009 12:56:15 +0000 (12:56 +0000)]
1.0.32.15: update Unicode data files to Unicode 5.2
We do still need also to update a small bit of code, but at least the
explanatory comment now makes it obvious which bits.
Christophe Rhodes [Sat, 7 Nov 2009 10:03:22 +0000 (10:03 +0000)]
1.0.32.14: fix build under clisp
It already worked with 'clisp -on-error -abort', but since there's only one
type declaration in the whole system that clisp doesn't understand, we might
as well fix it. Report and patch by Josh Elasser, lp #396597.
trittweiler [Fri, 6 Nov 2009 22:07:57 +0000 (22:07 +0000)]
1.0.32.13: WITH-STANDARD-IO-SYNTAX must also bind *PRINT-PPRINT-DISPATCH*...
...'cuz CLHS says so. We bind it to the standard pprint dispatch
table, and guard against its modification in SET-PPRINT-DISPATCH,
mimicking the guard against modification of the standard readtable
introduced in 1.0.24.
Christophe Rhodes [Fri, 6 Nov 2009 21:12:16 +0000 (21:12 +0000)]
1.0.32.12: Fix slot-value on specialized parameters in SVUC methods
The slot accessors' functions were being computed too early, requiring a
wrapper (for the PV optimization) when none was available. The fix
delays the computation by the usual trick of installing a closure that
will perform the slot accessor computation on demand.
Include a correct MOP test for this (slightly hard because of
constraints about order of instantiation: see lp #473699, reported by
Lars Rune Nodstal).
Christophe Rhodes [Tue, 3 Nov 2009 10:42:18 +0000 (10:42 +0000)]
1.0.32.11: fix octets portion of latin-2/iso-8859-2 external-format
Typo in the external format definition. Include a test case; reported
by Attila Lendvai (in lp #471689)
Gabor Melis [Mon, 2 Nov 2009 10:56:13 +0000 (10:56 +0000)]
1.0.32.10: fix timer starvation caused by setting the system clock back
Reported by Leslie P. Polzer.
https://bugs.launchpad.net/sbcl/+bug/460283
Nathan Froyd [Fri, 30 Oct 2009 18:44:34 +0000 (18:44 +0000)]
1.0.32.9: fix thinko in DEFINE-EXTERNAL-FORMAT/VARIABLE-WIDTH
Users of this OUTPUT-BYTES/FOO function must have been perfect.
Nathan Froyd [Fri, 30 Oct 2009 18:42:02 +0000 (18:42 +0000)]
1.0.32.8: macroize x86-64 {8,16,32}-bit array accessors
One wonders if the profusion of array access VOPs are merely bloat...
Nathan Froyd [Fri, 30 Oct 2009 18:22:10 +0000 (18:22 +0000)]
1.0.32.7: fix open-coding of EQL in the cross-compiler
EQ-COMPARABLE-TYPE wasn't being defined properly, so things like
(EQL FOO :KEYWORD) were going through GENERIC-EQL.
Thanks to Christophe for pointing out the fix.
trittweiler [Fri, 30 Oct 2009 18:10:38 +0000 (18:10 +0000)]
1.0.32.6: WHO-SPECIALIZES-DIRECTLY & WHO-SPECIALIZES-GENERALLY
* Add two new Xref functions to SB-INTROSPECT:
WHO-SPECIALIZES-DIRECTLY returns method definitions which
specialize one the designated class itself.
WHO-SPECIALIZES-GENERALLY returns methods definitions which
specialize on the designated class, or subclasses of it.
Both take CLASS-EQ, and EQL specializers into account.
* Refactor xref tests, and add tests for the two new functions.
* Fix sb-introspect.asd to perform the test-op with a *D-P-D* bound
to contrib/sb-introspect/.
Christophe Rhodes [Fri, 30 Oct 2009 15:23:11 +0000 (15:23 +0000)]
1.0.32.5: defend against full MAKE-ARRAY before the type system is ready
This is basically defence against bugs of the form lp #316323, where the
wrong answer comes out of a make-array before SUBTYPEP is working
properly. We should be able to arrange the build so that we never have
to do a full MAKE-ARRAY before we're ready for it.
Slight modifications of a couple of macros: VOP-related and multibyte
encoding-related. There should be no user-visible change.
Christophe Rhodes [Thu, 29 Oct 2009 17:53:21 +0000 (17:53 +0000)]
1.0.32.4: fix INSPECT on closures
(really fix %closure-values, but the inspector was the only user of this)
Christophe Rhodes [Thu, 29 Oct 2009 16:39:01 +0000 (16:39 +0000)]
1.0.32.3: O_LARGEFILE support on x86-64/linux
Reported by Daniel Janus (and patch) as lp bug #453080.
Christophe Rhodes [Thu, 29 Oct 2009 15:36:15 +0000 (15:36 +0000)]
1.0.32.2: minor portability fix
Clozure CL issues full warnings at compile time if individual clauses in
typecases are shadowed by others; this makes writing portable
warning-free typecases for character types a little bit tricky. In the
case of the FORMAT directive finders, though, the workaround is
straightforward because the whole of the CHARACTER branch in the
typecases can be removed.
While we're at it, fix the theoretical portability bug that we were
calling the host's CHAR-CODE on BASE-CHARs to fill data structures later
to be accessed using the target's CHAR-CODE. (Theoretical because all
implementations at present agree on CHAR-CODE for BASE-CHARs).
(This commit does not suffice to allow Clozure CL to build SBCL)
CVS: ----------------------------------------------------------------------
CVS: Enter Log. Lines beginning with `CVS:' are removed automatically
CVS:
CVS: Committing in .
CVS:
CVS: Modified Files:
CVS: NEWS version.lisp-expr src/code/late-format.lisp
CVS: src/code/target-format.lisp
CVS: ----------------------------------------------------------------------
Christophe Rhodes [Mon, 26 Oct 2009 08:24:56 +0000 (08:24 +0000)]
1.0.32.1: fix MIPS build
Regression from 1.0.30.38, when %unary-truncate handling was changed.
(Actually, this might not fix the build completely; we have reports of
SIGBUS while compiling PCL, but it gets noticeably further.
Christophe Rhodes [Sun, 25 Oct 2009 15:49:10 +0000 (15:49 +0000)]
1.0.32: will be tagged as sbcl_1_0_32
Nikodemus Siivola [Thu, 8 Oct 2009 11:48:41 +0000 (11:48 +0000)]
1.0.31.32: missing --no-userinit in core.test.sh
Reported by Robert Brown.
https://bugs.launchpad.net/sbcl/+bug/440052
Nikodemus Siivola [Wed, 7 Oct 2009 18:06:35 +0000 (18:06 +0000)]
1.0.31.31: SATISFIES cannot refer to local functions
* Fix misoptimization: use SB-C::GLOBAL-FUNCTION instead of
CL:FUNCTION. (Reported by Stanislaw Halik)
* Also fix a typo in the COMPARE-AND-SWAP docstring. (Thanks to Larry
Valkama.)
Nikodemus Siivola [Wed, 7 Oct 2009 09:56:48 +0000 (09:56 +0000)]
1.0.31.30: fix IF docstring
https://bugs.launchpad.net/sbcl/+bug/439264
...good thing no-one trusts a docstring, eh. A bug report to the
effect "IF is broken, executes THEN when condition true" would have
been mortifying...
Juho Snellman [Sun, 4 Oct 2009 16:15:58 +0000 (16:15 +0000)]
1.0.31.29: Fix x86-64/FreeBSD/thread build
* Remove a forwards incompatible FreeBSD 5 kludge (patch by Hiroyuki
Komatsu)
Juho Snellman [Sat, 3 Oct 2009 23:03:29 +0000 (23:03 +0000)]
1.0.31.28: Add :EMIT-CFASL to the COMPILE-FILE defknown
Juho Snellman [Sat, 3 Oct 2009 22:36:59 +0000 (22:36 +0000)]
1.0.31.27: RUN-PROGRAM process group change
* Have RUN-PROGRAM with :INPUT T only run the subprocess in a
new process group if it doesn't need to share stdin with the
sbcl process. (patch by Leslie Polzer)
Nathan Froyd [Tue, 29 Sep 2009 13:35:37 +0000 (13:35 +0000)]
1.0.31.26: improved DATA-VECTOR-{REF,SET} on x86-64
Use the low registers directly rather than going through RAX.
Nathan Froyd [Tue, 29 Sep 2009 01:27:33 +0000 (01:27 +0000)]
1.0.31.25: fix thinko in ECHO-N-BIN
I happened to look at some STYLE-WARNINGs in octets.lisp and found this
gem. Sometimes it's nice having a chatty compiler...
Nathan Froyd [Tue, 29 Sep 2009 01:24:23 +0000 (01:24 +0000)]
1.0.31.24: add BSWAP instruction for x86
Kinda weird, lifting code for x86 from x86-64...
Nathan Froyd [Tue, 29 Sep 2009 01:02:20 +0000 (01:02 +0000)]
1.0.31.23: OAOOize external-format support
fd-streams and octets support independently kept records of
external-format->function maps, suitable for the purposes of each. This
revision stores all the relevant information for an external format in a
single place--a new EXTERNAL-FORMAT structure--and has both clients
reference things in that single place.
Doing so offers opportunities for other cleanups and speedups.
fd-streams external-format storage was an alist of lists, which was bad
for client code, since everything referred to fields with NTH or
SECOND/FOURTH/FIFTH. A proper DEFSTRUCT helps here and should be
slightly more space-efficient, as we're replacing a list with
(effectively) a vector. Also, since clients had to scan through an
alist to find an external-format, this design was hurting performance in
streams code, most notably OPEN. Replacing the alist with a hash table
(which the octets code was already using) should make things a lot
snappier.
Nathan Froyd [Sun, 27 Sep 2009 01:18:47 +0000 (01:18 +0000)]
1.0.31.22: improved SAP-{REF,SET}-* for x86-64
- Don't go through RAX in reffers; zero- or sign-extend the memory
referenced into the result register directly. Specialized array
references already do this.
- Don't go through RAX in setters; use the appropriately-sized low part
of the value register directly.
Nathan Froyd [Sat, 26 Sep 2009 23:53:26 +0000 (23:53 +0000)]
1.0.31.21: OAOOize SAP-REF-64 and friends
Move SAP-REF-64-related transforms to saptran.lisp, since there's no reason
current and future 32-bit platforms should have to define these
individually.
Nathan Froyd [Sat, 26 Sep 2009 21:34:45 +0000 (21:34 +0000)]
1.0.31.20: smaller code for failing ECASE/ETYPECASE
(ERROR 'CASE-FAILURE ...) generates a lot of code. Commonize the code in
a CASE-FAILURE function and have the macros call that function instead.
This change results in fewer entries in the constant vector and smaller
code since fewer arguments have to be loaded. This makes the error case
slightly slower, but that's not a problem.
Shrinks core size by ~160K on x86-64.
Brian Mastenbrook [Tue, 22 Sep 2009 02:22:41 +0000 (02:22 +0000)]
1.0.31.19: build x86-64 on OS X when available by default
* For consistency with other platforms, build x86-64 by default on OS
X when the OS and hardware support it.
* ... also clean up some stragglers needing .cvsignore entries
Nikodemus Siivola [Mon, 21 Sep 2009 14:37:05 +0000 (14:37 +0000)]
1.0.31.18: better SXHASH on pathnames
Patch by Walter C. Pelissero, based on CMUCL code.
Also fix stale LOGICAL-PATHNAME test, left out from 1.0.31.17.
Nikodemus Siivola [Fri, 18 Sep 2009 11:31:23 +0000 (11:31 +0000)]
1.0.31.17: LOGICAL-PATHNAME signals a TYPE-ERROR
* LOGICAL-PATHNAME is specified to signal a TYPE-ERROR if pathspec is
incorrect.
Nikodemus Siivola [Fri, 18 Sep 2009 10:40:04 +0000 (10:40 +0000)]
1.0.31.16: fix DELETE-FILE on logical pathnames
(This is really the commit message for 1.0.31.15 -- which
accidentally got the message from 1.0.31.14 again. Sorry.)
Not real content in this commit.
Nikodemus Siivola [Fri, 18 Sep 2009 10:36:57 +0000 (10:36 +0000)]
1.0.31.14: removing :DEFAULT-INITARGS via DEFCLASS
* If a DEFCLASS is executed without :DEFAULT-INITARGS,
pass :DIRECT-DEFAULT-INITARGS NIL to ENSURE-CLASS.
AMOP specifies defaulting direct default initargs for
reinitialization using existing CLASS-DIRECT-DEFAULT-INITARGS, but
there is no requirement for DEFCLASS to preserve them, and doing
that seems quite undesirable -- though I cannot find a requirement
from CLHS for removing them either.
Nikodemus Siivola [Fri, 18 Sep 2009 09:42:38 +0000 (09:42 +0000)]
1.0.31.14: removing :DEFAULT-INITARGS via DEFCLASS
* If a DEFCLASS is executed without :DEFAULT-INITARGS,
pass :DIRECT-DEFAULT-INITARGS NIL to ENSURE-CLASS.
AMOP specifies defaulting direct default initargs for
reinitialization using existing CLASS-DIRECT-DEFAULT-INITARGS, but
there is no requirement for DEFCLASS to preserve them, and doing
that seems quite undesirable -- though I cannot find a requirement
from CLHS for removing them either.
Nikodemus Siivola [Thu, 17 Sep 2009 15:35:47 +0000 (15:35 +0000)]
1.0.31.13: working XREF for inlined lambda with hairy lambda-lists
Reported by Peter Seibel.
* When a function with a hairy lambda-list is converted, the
functional we get back is an OPTIONAL-DISPATCH, which the XREF code
never sees: we need to mark the entry-points as resulting from the
inlining to have things work.
* While at it, address a FIXME by annotating the CLAMBDAs with the
original GLOBAL-VAR, so that we don't need to make guesses based on
names.
Nikodemus Siivola [Wed, 16 Sep 2009 11:46:39 +0000 (11:46 +0000)]
1.0.31.12: use global lexicals for world-lock and finalizers
*WORLD-LOCK* -> **WORLD-LOCK**.
*FINALIZER-STORE* -> **FINALIZER-STORE**.
*FINALIZER-STORE-LOCK* -> **FINALIZER-STORE-LOCK**.
...eating your own dogfood is good for you.
Nikodemus Siivola [Tue, 15 Sep 2009 21:40:05 +0000 (21:40 +0000)]
1.0.31.11: better handling of vector types in LOOP
This is really 1.0.26.12 in a fixed form.
* LOOP-DECLARE-VAR calls LOOP-TYPED-INIT iff there is no explicit
initialization form, and when it does call it, the type is
constructed from the result using TYPE-OF.
* LOOP-TYPED-INIT knows how to construct zero-length vectors for all
reasonable vector types (ones expressible with an ARRAY-TYPE.)
* LOOP-MAKE-VAR informs LOOP-DECLARE-VAR about user-provided
initialization.
Nikodemus Siivola [Tue, 15 Sep 2009 20:23:40 +0000 (20:23 +0000)]
1.0.31.10: run-sbcl.sh to support --core
Thanks to Attila Lendvai.
Nikodemus Siivola [Tue, 15 Sep 2009 11:07:38 +0000 (11:07 +0000)]
1.0.31.9: some PCL micro-optimizations
* Make *BOOT-STATE* a global variable and rename it **BOOT-STATE**.
* Make various *S?-FOO-INDEX* variables constants, and rename them
+S?-FOO-INDEX+.
* Special love for SAFE-METHOD-FOO functions: store standard method
class list in a global variable, use EQ for membership testing, and
use STD-INSTANCE-SLOTS instead of GET-SLOTS (if the method has one
of the standard classes, we know it is a standard instance.)
Low-lying Nutrient Poor Fruit 'R Us.
Nikodemus Siivola [Mon, 14 Sep 2009 09:32:52 +0000 (09:32 +0000)]
1.0.31.8: specialized out-of-line CONCATENATE for strings
https://bugs.launchpad.net/sbcl/+bug/417229
CONCATENATE 'STRING was already decent when SPEED > SPACE thanks to
open coding by the deftransform.
Deal with low-speed policies by adding %CONCATENATE-TO-STRING and
%CONCATENATE-TO-BASE-STRING and transforming to them when
appropriate.
Nikodemus Siivola [Sun, 13 Sep 2009 09:53:58 +0000 (09:53 +0000)]
1.0.31.7: transform %FIND-POSITION for strings
* Based on patch by Karol Swietlicki.
https://bugs.launchpad.net/sbcl/+bug/410122
Nikodemus Siivola [Sat, 12 Sep 2009 06:40:03 +0000 (06:40 +0000)]
1.0.31.6: better error reporting for bogus parameter specializer names
https://bugs.launchpad.net/sbcl/+bug/414788
Nikodemus Siivola [Fri, 11 Sep 2009 15:35:56 +0000 (15:35 +0000)]
1.0.31.5: WITH-SLOTS on THE forms
Thanks to David Tolpin.
Nikodemus Siivola [Fri, 11 Sep 2009 14:49:34 +0000 (14:49 +0000)]
1.0.31.4: misuse of ABORT-IR1-TRANSFORM
Should have been GIVE-UP-IR1-TRANSFORM.
Nikodemus Siivola [Fri, 11 Sep 2009 13:19:59 +0000 (13:19 +0000)]
1.0.31.3: fix saving runtime options from executable cores
Runtime options used to be clobbered from the executable core even
if there were none saved there.
Patch by Zach Beane.
Fixes https://bugs.launchpad.net/sbcl/+bug/411925
Cyrus Harmon [Mon, 31 Aug 2009 06:11:12 +0000 (06:11 +0000)]
1.0.31.2: snow leopard (macos 10.6) build fixes
* on x86/darwin use -arch i386 flags in sb-grovel C compilation
* comment out failing sb-posix tests
* add -arch i386 flags to Config.x86-darwin CFLAGS and LINKFLAGS
* remove #include <ucontext.h> instances
Christophe Rhodes [Thu, 27 Aug 2009 20:50:29 +0000 (20:50 +0000)]
1.0.31.1: document new new new SourceForge File Release procedure
Christophe Rhodes [Thu, 27 Aug 2009 20:06:02 +0000 (20:06 +0000)]
1.0.31: release, to be tagged as sbcl_1_0_31
Christophe Rhodes [Wed, 26 Aug 2009 20:57:49 +0000 (20:57 +0000)]
1.0.30.54: Fix a cross-compiler leak in specialized %unary-truncate
Don't use host values of most-fooative fixnum. (Also expand on the
comment about using an exclusive test for floats within the fixnum
range)
Christophe Rhodes [Wed, 26 Aug 2009 20:25:41 +0000 (20:25 +0000)]
1.0.30.53: fix occasional SIGBUS in single-float complex arithmetic
The alignment restrictions on movaps for moving a pair of single floats
are too strict; use movq instead. (From Paul Khuong)
Christophe Rhodes [Wed, 26 Aug 2009 17:01:49 +0000 (17:01 +0000)]
1.0.30.52: fix for multiple-value TRUNCATE
Regression from 1.0.30 (in 1.0.30.28); Noted by Lars Nostdal; fix by
Paul Khuong
Christophe Rhodes [Sun, 23 Aug 2009 21:36:13 +0000 (21:36 +0000)]
1.0.30.51: fix for COERCE compilation regression
Code of the form
(defun foo (x)
(declare (type simple-vector x))
(coerce x '(vector (unsigned-byte 8))))
should not cause a full WARNING, but with the new COERCE transforms,
expanded into one of those IFs where one branch is dead, but the
compiler couldn't prove it.
Define a whole heap of new backend type predicates for all specialized
vectors, generalizing VECTOR-T-P. (Some specialized vectors are
implemented using widetags, and so are excluded from these new
definitions).
Christophe Rhodes [Sun, 23 Aug 2009 15:06:39 +0000 (15:06 +0000)]
1.0.30.50: fix SAVE-LISP-AND-DIE docstring
From Leslie Polzer sbcl-devel 2009-08-07
Christophe Rhodes [Sun, 23 Aug 2009 09:09:52 +0000 (09:09 +0000)]
1.0.30.49: delete-file behaviour reversal
In the 1.0.29.x series, DELETE-FILE started deleting the truename of the
given pathname designator (rather than the pathname itself), meaning
that symlinks could no longer be deleted. Revert back to the historical
behaviour. (Noted on sbcl-devel by Luis Oliveira 2009-08-18.)
Although the behaviour hasn't changed recently, there's a similar issue
in RENAME-FILE, but that operator has such bizarre behaviour anyway it
might be worth just letting sleeping pathname functions lie.
Christophe Rhodes [Sat, 22 Aug 2009 15:54:46 +0000 (15:54 +0000)]
1.0.30.48: utf-8 simple-array-nil correctness
If an empty range of a simple-array-nil is requested for conversion, we
should return an empty octet sequence, not blow up.
Christophe Rhodes [Sat, 22 Aug 2009 15:43:20 +0000 (15:43 +0000)]
x86 sap fixes
The sap-ref-with-offset stuff was wrong in that the displacement was
multiplied by a notional element size, rather than being uniformly
treated as a number of bytes. Mostly this codepath wasn't exposed at
all (other than with sap-ref-8, which worked by "accident"), but
attempts to implement UTF-16, which requires (sap-ref-16 sap (+ offset
2)), showed up the problem.
Nikodemus Siivola [Wed, 12 Aug 2009 12:22:19 +0000 (12:22 +0000)]
1.0.30.46: SB-INTROSPECT test adjustment
* Fix ALLOCATION-INFORMATION test on PPC, and hopefully on SPARC as
well. Thanks to Bruce O'Neel.
Nikodemus Siivola [Wed, 12 Aug 2009 11:59:04 +0000 (11:59 +0000)]
1.0.30.45: various pretty-printing improvements
Patch by Tobias Rittweiler:
* Add a PPRINT-DECLARE which a) makes sure that (DECLARE (FUNCTION
F)) is not printed as (DECLARE #'F), and b) places each declaration
specifier on its own line. Also used for DECLAIM.
* Better pprint SETQ forms which assign to multiple variables. At the
moment it's printed like
(SETQ FOO
(FROB-FOO 0 1 2 3 4 5 6 7 8 9)
QUUX
(FROB-QUUX 9 8 7 6 5 4 3 2 1 0))
With the patch it's indented like
(SETQ FOO (FROB-FOO 0 1 2 3 4 5 6 7 8 9)
QUUX (FROB-QUUX 9 8 7 6 5 4 3 2 1 0))
It uses the former indentation style if the value (e.g. the
"(FROB-FOO ...)") does not fit on a single line.
This also affects PSETQ, SETF, PSETF.
* Add pprint entry for SB-INT:DX-FLET because there are CL macros
which expand to that.
* Fix typo in *LOOP-SEPARATING-CLAUSES*; I mistakenly put WHERE
instead of WITH in it.
* Fix PPRINT-IF to make sure that the predicate is always printed
right after the IF. The current definition may occassionally print
an IF form like
(IF
(PREDICATE)
(THEN)
(ELSE))
* Some small refactoring work:
- Use PPRINT-LINEAR, and PPRINT-FILL instead of equivalent, but
hairy FORMAT calls.
- Add PPRINT-SPREAD-FUN-CALL which is the common subtrate of
pretty-printing simple LOOP forms, and DECLARE forms.
Nikodemus Siivola [Wed, 12 Aug 2009 11:14:15 +0000 (11:14 +0000)]
1.0.30.44: DECODE-FLOAT and INTEGER-DECODE-FOAT are not flushable
...as they should signal an error for non-floats in safe code,
and hence UNSAFELY-FLUSHABLE.
Ditto for FLOAT-SIGN, FLOAT-RADIX, FLOAT-DIGITS, and FLOAT-PRECISION,
though for some reason Python seemed unwilling to delete these calls
despite them being marked as flushable as well.
See: https://bugs.launchpad.net/sbcl/+bug/412416
Nikodemus Siivola [Tue, 11 Aug 2009 11:22:17 +0000 (11:22 +0000)]
1.0.30.43: LVAR-MATCHES needs to deal with unnamed leaves
...by passing ERRORP=NIL to COMBINATION-FUN-SOURCE-NAME. Also smooth
the return value convention of C-F-S-N by adding a secondary value:
NIL is a valid name for a local function.
See: https://bugs.launchpad.net/sbcl/+bug/411563
Nikodemus Siivola [Mon, 10 Aug 2009 09:58:45 +0000 (09:58 +0000)]
1.0.30.42: missing array predicate definitions
* Not all specialized array predicates had an out-of-line predicate.
Generate them from the SAETP vector. Reported by Stelian Ionescu.
* Test case.
Christophe Rhodes [Fri, 7 Aug 2009 11:21:21 +0000 (11:21 +0000)]
1.0.30.41: Octets support for ebcdic-us
Continuing the theme of extensions no-one has ever asked for.
(There's a lot of duplicated code everywhere in
src/code/external-formats that could be replaced with a
sufficiently complicated macro-defining-macro...)
Nikodemus Siivola [Thu, 6 Aug 2009 15:57:26 +0000 (15:57 +0000)]
1.0.30.40: faster SLOT-VALUE on structures
* Replace the SLOT-VALUE and SET-SLOT-VALUE compiler macros
with deftransforms once PCL has been built, and if the type
is known to be a structure and the slot name maps cleanly
to an accessor we can use it.
Nikodemus Siivola [Thu, 6 Aug 2009 13:41:41 +0000 (13:41 +0000)]
1.0.30.39: SB-INTROSPECT:ALLOCATION-INFORMATION test adjustment
* Ignore the :LARGE property on PPC, where is seems to bounce
back and forth. Reported by Bruce O'Neel.
(This is not a real fix, of course: the question of _why_
PPC sometimes has (or thinks it has) #'CONS on a large
object page remains.)
Nikodemus Siivola [Thu, 6 Aug 2009 12:52:58 +0000 (12:52 +0000)]
1.0.30.38: faster TRUNCATE on floats
* Specialized %UNARY-TRUNCATE/SINGLE-FLOAT and
%UNARY-TRUNCATE/DOUBLE-FLOAT.
* Explicit coercions to appropriate float types in the TRUNCATE
transforms. This gets rid of generic arithmetic in the general case
(Python is reluctant to insert explicit integer-tofloat coercions
for integers of unknown range due to precision issues.)
* Since COERCE (and %SINGLE-FLOAT and %DOUBLE-FLOAT) are not
flushable, take core not to generate leftover code in the TRUNCATE
transform when the result lvar has a single-value type.
* Rename %UNARY-TRUNCATE float VOPs, so that transforming to a
specialized floating point version doesn't make use unable to
implement it directly as a VOP when the range of the float is
sufficiently constrained.
Nikodemus Siivola [Thu, 6 Aug 2009 12:03:38 +0000 (12:03 +0000)]
1.0.30.37: fix SB-INTROSPECT test broken by 1.0.30.35
* Mishandled return value.
Christophe Rhodes [Wed, 5 Aug 2009 14:17:51 +0000 (14:17 +0000)]
1.0.30.36: Hangul syllable character names
Provide for the construction of Hangul syllable character names,
as required by Unicode ("This character name is a normative
property of the character"). At present done at build-time; if
the increase in core size is too painful, it can be done
algorithmically in CHAR-NAME and NAME-CHAR.
Nikodemus Siivola [Wed, 5 Aug 2009 12:11:42 +0000 (12:11 +0000)]
1.0.30.35: turn SB-INTROSPECT into an ASDF system
* I at least am starting to find myself having to insert
(EVAL-WHEN (...) (REQUIRE :SB-INTROSPECT))
in too many places. This may be a sign that things aught to be in
SB-EXT instead, but ASDFication seems like a logical next step.
...arguably all contribs but ASDF itself should be ASDF systems.
Nikodemus Siivola [Tue, 4 Aug 2009 10:59:09 +0000 (10:59 +0000)]
1.0.30.34: flushable INITIALIZE-VECTOR
* Allows deleting simple unused MAKE-ARRAY and VECTOR combinations.
* Move ASSERT-NO-CONSING and ASSERT-CONSING to compiler-test-util.lisp,
so that they can be used outside dynamic-extent.impure.lisp.
Nikodemus Siivola [Tue, 4 Aug 2009 10:15:11 +0000 (10:15 +0000)]
1.0.30.33: failed aver in %ALLOCATE-CLOSURES IR2 conversion
Patch by Larry D'Anna. He explains:
This snippit
(labels ((K (&optional x) #'k)))
fails with failed AVER: (XEP-P XEP), in %ALLOCATE-CLOSURES-IR2-CONVERT-OPTIMIZER
The problem is that it's trying to allocate a closure for the XEP
for K, but K has been deleted because nothing references K except
itself. %ALLOCATE-CLOSURES-IR2-CONVERT-OPTIMIZER already skips any
leafs that lacks a XEP. This patch makes it also skip leafs who's
XEPs have been deleted.
Christophe Rhodes [Mon, 3 Aug 2009 16:13:23 +0000 (16:13 +0000)]
1.0.31.32: Update to Unicode 5.0.1
There's more to be done, including fixing magic numbers and
documenting formats in internals, but this does the job for now, and
does wonders for my "lines changed" stats.
Kevin Rosenberg [Sun, 2 Aug 2009 12:47:21 +0000 (12:47 +0000)]
1.0.30.31:
src/runtime/interrupt.c: Fix spelling error in error message
Nikodemus Siivola [Sat, 1 Aug 2009 09:13:35 +0000 (09:13 +0000)]
1.0.30.30: make SB-CLTL2:VARIABLE-INFORMATION alien-aware.
* Patch by Larry D'Anna.
Nikodemus Siivola [Sat, 1 Aug 2009 09:05:01 +0000 (09:05 +0000)]
1.0.30.29: SB-CLTL2:DEFINE-DECLARATION
* Patch by Larry D'Anna.
Nikodemus Siivola [Sat, 1 Aug 2009 08:30:08 +0000 (08:30 +0000)]
1.0.30.28: SB-CLTL2:AUGMENT-ENVIRONMENT
* Patch by Larry D'Anna.
Nikodemus Siivola [Sat, 1 Aug 2009 07:57:36 +0000 (07:57 +0000)]
1.0.30.27: pretty-printing improvements
* Improved pretty-printing of simple LOOP forms, IF, and
MULTIPLE-VALUE-CALL. Patches by Tobias Rittweiler.
* Improved pretty-printing of general macro calls by inspecting
location of &BODY in the lambda-list. Patch by Tobias Rittweiler.
* Make tests in walker.impure.lisp ignore newlines as well.
Nikodemus Siivola [Fri, 31 Jul 2009 13:00:17 +0000 (13:00 +0000)]
1.0.30.26: fix failing AVER in CONVERT-MV-CALL
See https://bugs.launchpad.net/sbcl/+bug/392203
Patch by Larry D'Anna.
His comments:
Ever since Spice Lisp, convert-mv-call had returned without doing
anything if (functional-entry-fun fun) is not null, ie if fun
possesses a XEP. 0.8.5.5 replaces this criterion with "if the last
optional entry has references", and signals an error if the last
optional entry has no references and the XEP exists.
I can't know exactly what Alexy was thinking when he put the aver
in, but I can guess: If the XEP exists it should contain a
reference to the last entry point, so if the last entry point has
no refs and a XEP exists something went wrong. However, if the
number of required + optional arguments is 0, then XEP doesn't need
the "last" entry point, it can always use the "more" entry point
instead, which is exactly what seems to have happened in this case.
This patch combines the two conditions. convert-mv-call will return
without action if *either* a XEP exists, *or* the last optional
entry has references."
Nikodemus Siivola [Fri, 31 Jul 2009 12:14:00 +0000 (12:14 +0000)]
1.0.30.25: deftransform for ARRAY-IN-BOUNDS-P
* Patch by Leslie Polzer.
* Also give notes when giving up in ARRAY-TYPE-DIMENSIONS-OR-GIVE-UP.
Nikodemus Siivola [Fri, 31 Jul 2009 09:42:20 +0000 (09:42 +0000)]
1.0.30.24: hopefully fix _long_ SLEEP issues on OpenBSD
* OpenBSD refuses to nanosleep() over 100 million seconds (returning
EINVAL), so loop with 100 million second sleeps till the time left
is smaller than that.
...who knows, maybe there is a good reason to sleep over 3 years?
Bug reported by Johsh Elsasser.
Nikodemus Siivola [Fri, 31 Jul 2009 09:19:19 +0000 (09:19 +0000)]
1.0.30.23: adjust OpenBSD address spaces on x86
* Patch by Josh Elsasser. He says:
"The current address space locations for x86 OpenBSD are adequate,
but could still be better chosen. The only real problem with the
current addresses is that the default dynamic space size is larger
than the default data size resource limit, which means that sbcl
will not run without some tweaking. Attached is a patch to lower
the dynamic space size, as well as move all spaces to locations
which I suspect may prove more future-proof against OpenBSD
changes. The patch also greatly expands the OpenBSD comment. I
apologize for the verbosity, but the address space layout on
OpenBSD/i386 is quite complex and I wanted to record the details
before I forgot (again)."
Committing untested, as I don't have an OpenBSD system available.
Nikodemus Siivola [Fri, 31 Jul 2009 09:11:15 +0000 (09:11 +0000)]
1.0.30.22: better DELETE-FILE on streams
* Don't close the stream on Unix, so users can enjoy the normal
Unixy-IO to unlinked files.
* On Windows, close the stream with :ABORT NIL, so that there
is no danger of close trying to delete file as well.
Bug with DELETE-FILE trying to delete files twice reported by
John Fremlin.
Nikodemus Siivola [Thu, 30 Jul 2009 14:10:39 +0000 (14:10 +0000)]
1.0.30.21: prettier STYLE-WARNINGS for incompatible type proclamations
* Print the specifier, not the type object.
Nikodemus Siivola [Thu, 30 Jul 2009 13:36:43 +0000 (13:36 +0000)]
1.0.30.20: less DEFGENERIC clobbers FTYPE STYLE-WARNINGS
* Remove the declamation from DESCRIBE-OBJECT.
* Make SBCL warn only if the new type is more general than the old
type.
* In NOTE-GF-SIGNATURE, use the existing GF lambda-list if the user
didn't provide one to ENSURE-GENERIC-FUNCTION. This allows us to
deduce sufficiently good types for condition slot readers from the
lambda-list to elide the warning.
Nikodemus Siivola [Thu, 30 Jul 2009 11:37:12 +0000 (11:37 +0000)]
1.0.30.19: optimize (COERCE X 'VECTOR) as well
Nikodemus Siivola [Thu, 30 Jul 2009 11:02:21 +0000 (11:02 +0000)]
1.0.30.18: undefined variables in contribs
* No MSG_NOSIGNAL on Darwin. It was also groveled twice on Linux.
* Tyop in SB-SIMPLE-STREAMS.
...the real question is why ASDF didn't consider these failures,
though. Grumble.
Nikodemus Siivola [Thu, 30 Jul 2009 09:51:57 +0000 (09:51 +0000)]
1.0.30.17: generalize the previous COERCE optimization a bit
* As noted by Christophe Rhodes, this is simple enough to apply to
non-simple one-dimensional recognizable subtypes of ARRAY. ...and
(COERCE X 'STRING) is so tempting to write that it is worth
optimizing too.
Need to take some care with things like
(COERCE X '(BIT-VECTOR (NOT SIMPLE-BIT-VECTOR)))
though.
Add compiler notes as well.
Nikodemus Siivola [Wed, 29 Jul 2009 19:14:46 +0000 (19:14 +0000)]
1.0.30.16: faster COERCE for various (SIMPLE-ARRAY * (*)) subtypes
* Optimize for all regonizable subtypes.
* Also optimize for SIMPLE-STRING.
Nikodemus Siivola [Wed, 29 Jul 2009 16:15:42 +0000 (16:15 +0000)]
1.0.30.15: more complete SB-CLTL2:DECLARATION-INFORMATION
* (DECLARATION-INFORMATION 'DECLARATION) returns a list of
declaration names that have been proclaimed as valid.
Patch by Larry D'Anna.
Nikodemus Siivola [Wed, 29 Jul 2009 16:01:29 +0000 (16:01 +0000)]
1.0.30.14: some SB-CLTL2 docstrings
* Add docstrings for DECLARATION-INFORMATION, PARSE-MACRO and ENCLOSE.
* Rename a test for variable-information that had the same name as another.
Patch by Larry D'Anna, prose and indentation somewhat altered
by yours truly.
Nikodemus Siivola [Wed, 29 Jul 2009 15:36:58 +0000 (15:36 +0000)]
1.0.30.13: SB-EXT:CONSTANT-FUNCTION does not exits
* Remove reference to it from the manual.
Nikodemus Siivola [Wed, 29 Jul 2009 15:34:15 +0000 (15:34 +0000)]
1.0.30.12: make SB-GROVEL ASDF:OOS :FORCE T friendly
* Use INTERN instead of GENTEMP to generate padding names.
Patch by Leslie Polzer.
Nikodemus Siivola [Wed, 29 Jul 2009 15:15:31 +0000 (15:15 +0000)]
1.0.30.11: autogenerate tagname information for LDB in genesis
* Also remove some 32-bit assumption from LDB, and
add missing array types there.
Patch by Luis Oliveira.
* Also fix the DESCRIBE buglet credit in NEWS.
Nikodemus Siivola [Wed, 29 Jul 2009 14:51:23 +0000 (14:51 +0000)]
1.0.30.10: DESCRIBE reports on undefined but assumed/declared functions
* If FTYPE has been declared, report it even if the function is
not defined.
* If calls to the function have been compiled, report it with
an "assumed type" -- for now that is always FUNCTION, though.
Nikodemus Siivola [Wed, 29 Jul 2009 14:48:51 +0000 (14:48 +0000)]
1.0.30.9: improved generic-function FTYPE handling
* Use :DEFINED-METHOD as :WHERE-FROM even if there is no explicit
DEFGENERIC -- initial type becomes FUNCTION.
* Also signal a style-warning when the FTYPE is clobbered by a
generic function -- though in this case it is more "bad SBCL style"
than bad user style... but at least the user will know that
something unexpected is going on. (Clobbering itself is not new.)
Nikodemus Siivola [Wed, 29 Jul 2009 13:35:33 +0000 (13:35 +0000)]
1.0.30.8: redo the recent FP optimizations in a better way
* Multiplication and division should respect signed zeros.
* Optimize division to multiplication by reciprocal when an exact
reciprocal exits -- and always for FLOAT-ACCURACY=0. (Thanks
to Paul Khuong!)