sbcl.git
14 years ago1.0.33.14: improve UCS external formats
Christophe Rhodes [Wed, 16 Dec 2009 21:39:30 +0000 (21:39 +0000)]
1.0.33.14: improve UCS external formats

Fix a simple bug in the CHAR->UCS-2BE error case.

Fix error-handling UCS-2 cases, by actually being careful about using the
return values of the encoding-error/decoding-error octet functions, and by
using adjustable vectors.  Include tests for this.

Implement UCS-4, as a straight-through 32-bit encoding of the char-code.

Move external-formats/ucs-2.lisp to external-formats/enc-ucs.lisp, and include
a comment header explaining the distinction in our terms between UCS and UTF
external formats.

14 years ago1.0.33.13: Catch errors during compile-time-too processing.
Tobias C. Rittweiler [Wed, 16 Dec 2009 09:58:54 +0000 (09:58 +0000)]
1.0.33.13: Catch errors during compile-time-too processing.

  * Errors signaled within an (EVAL-WHEN (:COMPILE-TOPLEVEL) ...),
    i.e. during ``compile-time-too' processing, are now caught and
    reported just like errors at macroexpansion time.

    Previously, we landed in the debugger from within the compiler and
    thus provided pretty much no information about the actual source
    context to the user.

    Now, we won't land in the debugger, and the appropriate source
    context is reported along the error.

  * Some slight generalization in the test suite.

  * So we can add tests for errors in EVAL-WHEN and during
    macroexpansion.

14 years ago1.0.33.12: Less ugly html manuals
Rudi Schlatte [Tue, 15 Dec 2009 16:09:02 +0000 (16:09 +0000)]
1.0.33.12: Less ugly html manuals
... add some light css styling
... also create single-file manual for easier grepping
... unilaterally deciding on light blue as our new corporate colour

14 years ago1.0.33.11: fix detection of tls exhaustion
Gabor Melis [Tue, 15 Dec 2009 15:22:22 +0000 (15:22 +0000)]
1.0.33.11: fix detection of tls exhaustion

... that was added in 1.0.16.21 and whose ways were shown to be wrong
by the additional pseudo atomic asserts added later.

With this fix the user gets to see the tls exhausted message instead
of a random complaint about pa.

14 years ago1.0.33.10: Make slam.sh usable to obtain a trace-file post-build.
Alastair Bridgewater [Sat, 12 Dec 2009 20:55:15 +0000 (20:55 +0000)]
1.0.33.10: Make slam.sh usable to obtain a trace-file post-build.

  * Have slam.lisp re-load build-order.lisp-expr in order to obtain new
flags as needed.

  * Also check for outdated/non-extant trace file for stems flagged as
requiring one.

14 years ago1.0.33.9: LDB stability improvements.
Alastair Bridgewater [Sat, 12 Dec 2009 20:52:13 +0000 (20:52 +0000)]
1.0.33.9: LDB stability improvements.

  * Make sure that a struct object is actually in the lisp heap space
before attempting to access its memory.

  * We have a perfectly good is_lisp_pointer() function, use it in
print_obj().

14 years ago1.0.33.8: Fix x86-64 interrupt context display in ldb.
Alastair Bridgewater [Sat, 12 Dec 2009 20:49:55 +0000 (20:49 +0000)]
1.0.33.8: Fix x86-64 interrupt context display in ldb.

  * Half of the register names were missing, causing random failures
from using words past the end of the register name array as string
pointers.

14 years ago1.0.33.7: Indicate *DEBUGGER-HOOK* / SB-EXT:*INVOKE-DEBUGGER-HOOK* in backtrace.
Tobias C. Rittweiler [Thu, 10 Dec 2009 23:32:18 +0000 (23:32 +0000)]
1.0.33.7: Indicate *DEBUGGER-HOOK* / SB-EXT:*INVOKE-DEBUGGER-HOOK* in backtrace.

14 years ago1.0.33.6: prettier PRINT-OBJECT default method
Gabor Melis [Fri, 4 Dec 2009 17:59:48 +0000 (17:59 +0000)]
1.0.33.6: prettier PRINT-OBJECT default method

If *PRINT-PRETTY*, the default method of PRINT-OBJECT now establishes
a logical block around PRINT-UNREADABLE-OBJECT that, in turn, adds a
few PPRINT-NEWLINES to allow for the stuff between #< and > be broken
into multiple lines as the pretty printer sees fit. This allows #<...>
to be wrapped properly.

https://bugs.launchpad.net/sbcl/+bug/488979

14 years ago1.0.33.5: improve DESCRIBE (#lp488976)
Gabor Melis [Fri, 4 Dec 2009 16:07:38 +0000 (16:07 +0000)]
1.0.33.5: improve DESCRIBE (#lp488976)

Instead of printing the object type and address in an around method on
DESCRIBE-OBJECT, make it a normal method that all other methods are
supposed to call via CALL-NEXT-METHOD if they wish. This makes it
possible to completely change the output of DESCRIBE for one class
while leaving other classes alone.

Also, kill the unused *IN-DESCRIBE* var in the process.

14 years ago1.0.33.4: rewriting history, the regexp way
Christophe Rhodes [Wed, 2 Dec 2009 21:07:14 +0000 (21:07 +0000)]
1.0.33.4: rewriting history, the regexp way

The html generation in sbcl-page now supports automatic linking to launchpad
bug IDs mentioned in NEWS, given a certain format.  Convert existing
references to launchpad bugs to that format.

14 years ago1.0.33.3: restore buildability from CMUCL
Christophe Rhodes [Wed, 2 Dec 2009 08:54:43 +0000 (08:54 +0000)]
1.0.33.3: restore buildability from CMUCL

- Add extra keyword in the ftype declaration for %DEFKNOWN (oh, the irony);
- move the THREAD structure into the cross-compiler, so that MUTEX slots
  can be declared to have type (OR NULL THREAD);
- IGNORE on non-binding in saptran

(build failure reported by xme@gmx.net)

14 years ago1.0.33.2: Fix bug 489698 (reading #p"\\\\" on windows).
Alastair Bridgewater [Sat, 28 Nov 2009 22:53:45 +0000 (22:53 +0000)]
1.0.33.2: Fix bug 489698 (reading #p"\\\\" on windows).

  * Actual bug was a missed range check prior to calling POSITION in
EXTRACT-DEVICE in src;code;win32-pathname.  Fixed.

  * Added test case.

14 years ago1.0.33.1: DEFTYPE-LAMBDA-LIST for builtin types.
Tobias C. Rittweiler [Sat, 28 Nov 2009 13:25:21 +0000 (13:25 +0000)]
1.0.33.1: DEFTYPE-LAMBDA-LIST for builtin types.

Make SB-INTROSPECT:DEFTYPE-LAMBDA-LIST also work on most builtin
types.

14 years ago1.0.33: will be tagged as sbcl_1_0_33
Christophe Rhodes [Fri, 27 Nov 2009 17:59:15 +0000 (17:59 +0000)]
1.0.33: will be tagged as sbcl_1_0_33

14 years ago1.0.32.39: Win32 build fix
Alastair Bridgewater [Fri, 27 Nov 2009 16:59:28 +0000 (16:59 +0000)]
1.0.32.39: Win32 build fix

  * Because both sbcl and <rpcndr.h> define a boolean type,
grovel-headers was failing to build on win32.  Copied the kludge for
working around this issue from src/runtime/runtime.h to
tools-for-build/grovel-headers.c.

14 years ago1.0.32.38: liberalize WHO-SPECIALIZES-DIRECTLY/GENERALLY
trittweiler [Tue, 24 Nov 2009 16:31:19 +0000 (16:31 +0000)]
1.0.32.38: liberalize WHO-SPECIALIZES-DIRECTLY/GENERALLY

Other Xref functions (WHO-CALLS etc.) are very liberal at what they
accept as input. Adjust the two new Xref functions
WHO-SPECIALIZES-DIRECTLY and WHO-SEPCIALIZES-GENERALLY accordingly.

14 years ago1.0.32.37: declarations and symbol-macros in methods
Christophe Rhodes [Fri, 20 Nov 2009 21:40:04 +0000 (21:40 +0000)]
1.0.32.37: declarations and symbol-macros in methods

A stray backquote caused compilation warnings and run-time errors if, within
a method, a symbol macro with a type declaration was given a new value with
SETQ.

Fixes bug #485019, reported by Iban Hatchondo

14 years ago1.0.32.36: (subtypep 'symbol 'keyword) must be NIL, T
Christophe Rhodes [Fri, 20 Nov 2009 21:33:51 +0000 (21:33 +0000)]
1.0.32.36: (subtypep 'symbol 'keyword) must be NIL, T

Special-case the hairy type (SATISFIES KEYWORDP) and its interaction with the
SYMBOL type.  (We could potentially be cleverer at this point and additionally
tell the system that all non-symbols are non-(SATISFIES KEYWORDP) types, but
we're somewhat late in the development cycle now)

Fixes bug #485972

14 years ago1.0.32.35: SB-POSIX:FORK guards against forking with multiple threads
Nikodemus Siivola [Fri, 20 Nov 2009 11:48:12 +0000 (11:48 +0000)]
1.0.32.35: SB-POSIX:FORK guards against forking with multiple threads

  * It wasn't going to work right in any case, so better to refuse up
    front.

  * Remove invalid FIXME from globaldb.lisp: DO-INFO is also used by
    SB-INTROSPECT.

14 years ago1.0.32.34: remove curious-hacker-cruft from constraints.lisp
Nikodemus Siivola [Thu, 19 Nov 2009 16:35:50 +0000 (16:35 +0000)]
1.0.32.34: remove curious-hacker-cruft from constraints.lisp

 ...that was not supposed to go in!

 *blush*

14 years ago1.0.32.33: GENCGC tuning parameters
Nikodemus Siivola [Thu, 19 Nov 2009 16:08:37 +0000 (16:08 +0000)]
1.0.32.33: GENCGC tuning parameters

 * Define +HIGHEST-NORMAL-GENERATION+ and +PSEUDO-STATIC-GENERATION+
   in lisp, and let genesis tell C about them.

 * Make various generations[gen].foo tweakable from lisp, give them
   nice interface functions and document the same.

 * Bits of manual prettification in related parts.

14 years ago1.0.32.32: add support for x86-64/NetBSD
Christophe Rhodes [Thu, 19 Nov 2009 15:38:50 +0000 (15:38 +0000)]
1.0.32.32: add support for x86-64/NetBSD

Patch from Aymeric Vincent.

14 years ago1.0.32.31: type system now understands (and <array-type> (not simple-array))
Christophe Rhodes [Thu, 19 Nov 2009 11:50:42 +0000 (11:50 +0000)]
1.0.32.31: type system now understands (and <array-type> (not simple-array))

Taken to mean the <array-type> with COMPLEXP T (rather than :MAYBE).
Adjust the type test transform to use the old technique for testing for
complex arrays (using an explicit (NOT SIMPLE-ARRAY) test rather than a
full call to %TYPEP, as you would otherwise get; this is a KLUDGE, but
no worse than before).

Include a test case for bug #309129, which this fixes.

14 years ago1.0.32.30: Fix breakage from 1.0.32.26.
Alastair Bridgewater [Thu, 12 Nov 2009 16:07:49 +0000 (16:07 +0000)]
1.0.32.30: Fix breakage from 1.0.32.26.

  * Use FIND-CONSTANT instead of MAYBE-EMIT-MAKE-LOAD-FORMS to prepare
arglists for dumping, thus unbreaking compilation to core.

  * Add a test case for in-core case.

14 years ago1.0.32.29: Add build flag :sb-xref-for-internals.
trittweiler [Thu, 12 Nov 2009 15:10:04 +0000 (15:10 +0000)]
1.0.32.29: Add build flag :sb-xref-for-internals.

Enabling :sb-xref-for-internals in customize-target-features.lisp,
will make Sbcl collect Xref data about itself during the build. This
increases the core size drastically by about 5-6mb, but it's useful
for SBCL developers because they can now use M-? (slime-edit-uses) to
get a list of call/expansion/reference sites for internal stuff.

It may be interesting to Lisp advocacy who can now show off with
finding the use sites of standardized functions like CONS, etc. :-)

Additionally -- regardless of :sb-xref-for-internals --, we now also
collect xref data for keywords because they're "fine" names for
functions and macros, and I know of people who use MACROLET on
keywords for their DSLs.

14 years ago1.0.32.28: fix listen / read-char-no-hang
Christophe Rhodes [Thu, 12 Nov 2009 11:29:23 +0000 (11:29 +0000)]
1.0.32.28: fix listen / read-char-no-hang

Whoops.  The external-format changes broke read-char-no-hang after an
unread-char: very noticeable indeed just as soon as an error occurs in
slime.  In my defence, this was already broken on bivalent streams; I just
propagated that brokenness to all fd-streams.

Include a run-program-based test, because that produces the kind of streams
that can have no data and yet not be at EOF.  In the slime context, they're
sockets, so it's a bit difficult to test the slime case exactly; ideas for
good simulations welcome.

14 years ago1.0.32.27: Add test case for 1.0.32.26.
trittweiler [Thu, 12 Nov 2009 10:42:50 +0000 (10:42 +0000)]
1.0.32.27: Add test case for 1.0.32.26.

14 years ago1.0.32.26: Fix fasdumping of function arglists with instances as default values
Alastair Bridgewater [Thu, 12 Nov 2009 00:10:21 +0000 (00:10 +0000)]
1.0.32.26: Fix fasdumping of function arglists with instances as default values

  Fasdumping of a function arglist was breaking if there was a structure
or other instance as a default value because the arglist wasn't
processed for dumping as a literal constant.

  * Process the arglist for dumping as a literal constant when creating
entry-info for external entry points.

  This is https://bugs.launchpad.net/sbcl/+bug/310132 .

14 years ago1.0.32.25: save page table allocation information into core files
Nikodemus Siivola [Wed, 11 Nov 2009 19:01:20 +0000 (19:01 +0000)]
1.0.32.25: save page table allocation information into core files

 * Allows unboxed objects in saved cores to be written to without
   write-protection & later scavenging.

14 years ago1.0.32.24: document stream external-formats and :replacement option
Christophe Rhodes [Wed, 11 Nov 2009 18:20:34 +0000 (18:20 +0000)]
1.0.32.24: document stream external-formats and :replacement option

14 years ago1.0.32.23: use :replacement in the external format for standard IO streams
Christophe Rhodes [Wed, 11 Nov 2009 18:08:31 +0000 (18:08 +0000)]
1.0.32.23: use :replacement in the external format for standard IO streams

For *terminal-io*, a bidirectional stream, we have to make an arbitrary
choice on Windows, where in theory the input and output code pages can
differ.  We arbitrarily choose the output format; I have no idea whether
this matters.

14 years ago1.0.32.22: implement output restarts for UCS2
Christophe Rhodes [Wed, 11 Nov 2009 17:52:39 +0000 (17:52 +0000)]
1.0.32.22: implement output restarts for UCS2

Most of the work was done; we just had to actually turn the catch tag
on, and write tests that are correct rather than wrong.

14 years ago1.0.32.21: compress most unibyte-external-format definitions
Christophe Rhodes [Wed, 11 Nov 2009 17:34:09 +0000 (17:34 +0000)]
1.0.32.21: compress most unibyte-external-format definitions

All the unibyte-mapper-based external-formats had huge amounts of
cut-and-pasted code, differing only in names of functions.  This is,
oddly enough, a clear case for abstracting away the repeated code into a
macro.

In the process, convert them to the multibyte apparatus, which has support
for the nice restarts, and remove the too-simple unibyte
DEFINE-EXTERNAL-FORMAT (and EXTERNAL-FORMAT-DECODING-ERROR) which are now
unused.

Include a far-from-comprehensive set of tests, which are mostly for
iso-8859-x formats

14 years ago1.0.32.20: bug fixes in unibyte external formats
Christophe Rhodes [Wed, 11 Nov 2009 17:21:05 +0000 (17:21 +0000)]
1.0.32.20: bug fixes in unibyte external formats

* handling undefined codepoints:

  There's a difference between "unassigned codepoint", represented as
  (<code> nil), and "codepoint mapping to character with that codepoint",
  represented by the absence of an entry in the exceptions list.  Simply
  testing for trueness of (cadr (assoc <code> exceptions)) isn't good
  enough; test for trueness of (cdr (assoc ...)) and use the car if so.

* undefined codepoints as the first exception:

  If the first exception to code<->byte is an undefined character, as for
  example in iso-8859-8, the lowest-code exception was computed wrongly,
  leading to incorrect encoding.

14 years ago1.0.32.19: Support for :REPLACEMENT external-format / encoding modifier
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).

14 years ago1.0.32.18: additional allocation information
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.

14 years ago1.0.32.17: make the utf-8 external format more robust
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.

14 years ago1.0.32.16: external-format restart enhancements
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

14 years ago1.0.32.15: update Unicode data files to Unicode 5.2
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.

14 years ago1.0.32.14: fix build under clisp
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.

14 years ago1.0.32.13: WITH-STANDARD-IO-SYNTAX must also bind *PRINT-PPRINT-DISPATCH*...
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.

14 years ago1.0.32.12: Fix slot-value on specialized parameters in SVUC methods
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).

14 years ago1.0.32.11: fix octets portion of latin-2/iso-8859-2 external-format
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)

14 years ago1.0.32.10: fix timer starvation caused by setting the system clock back
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

14 years ago1.0.32.9: fix thinko in DEFINE-EXTERNAL-FORMAT/VARIABLE-WIDTH
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.

14 years ago1.0.32.8: macroize x86-64 {8,16,32}-bit array accessors
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...

14 years ago1.0.32.7: fix open-coding of EQL in the cross-compiler
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.

14 years ago1.0.32.6: WHO-SPECIALIZES-DIRECTLY & WHO-SPECIALIZES-GENERALLY
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/.

14 years ago1.0.32.5: defend against full MAKE-ARRAY before the type system is ready
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.

14 years ago1.0.32.4: fix INSPECT on closures
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)

14 years ago1.0.32.3: O_LARGEFILE support on x86-64/linux
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.

14 years ago1.0.32.2: minor portability fix
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: ----------------------------------------------------------------------

14 years ago1.0.32.1: fix MIPS build
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.

14 years ago1.0.32: will be tagged as sbcl_1_0_32
Christophe Rhodes [Sun, 25 Oct 2009 15:49:10 +0000 (15:49 +0000)]
1.0.32: will be tagged as sbcl_1_0_32

14 years ago1.0.31.32: missing --no-userinit in core.test.sh
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

14 years ago1.0.31.31: SATISFIES cannot refer to local functions
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.)

14 years ago1.0.31.30: fix IF docstring
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...

14 years ago1.0.31.29: Fix x86-64/FreeBSD/thread build
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)

14 years ago1.0.31.28: Add :EMIT-CFASL to the COMPILE-FILE defknown
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

14 years ago1.0.31.27: RUN-PROGRAM process group change
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)

14 years ago1.0.31.26: improved DATA-VECTOR-{REF,SET} on x86-64
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.

14 years ago1.0.31.25: fix thinko in ECHO-N-BIN
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...

14 years ago1.0.31.24: add BSWAP instruction for x86
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...

14 years ago1.0.31.23: OAOOize external-format support
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.

14 years ago1.0.31.22: improved SAP-{REF,SET}-* for x86-64
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.

14 years ago1.0.31.21: OAOOize SAP-REF-64 and friends
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.

14 years ago1.0.31.20: smaller code for failing ECASE/ETYPECASE
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.

14 years ago1.0.31.19: build x86-64 on OS X when available by default
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

14 years ago1.0.31.18: better SXHASH on pathnames
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.

14 years ago1.0.31.17: LOGICAL-PATHNAME signals a TYPE-ERROR
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.

14 years ago1.0.31.16: fix DELETE-FILE on logical pathnames
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.

14 years ago1.0.31.14: removing :DEFAULT-INITARGS via DEFCLASS
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.

14 years ago1.0.31.14: removing :DEFAULT-INITARGS via DEFCLASS
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.

14 years ago1.0.31.13: working XREF for inlined lambda with hairy lambda-lists
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.

14 years ago1.0.31.12: use global lexicals for world-lock and finalizers
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.

14 years ago1.0.31.11: better handling of vector types in LOOP
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.

14 years ago1.0.31.10: run-sbcl.sh to support --core
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.

14 years ago1.0.31.9: some PCL micro-optimizations
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.

14 years ago1.0.31.8: specialized out-of-line CONCATENATE for strings
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.

14 years ago1.0.31.7: transform %FIND-POSITION for strings
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

14 years ago1.0.31.6: better error reporting for bogus parameter specializer names
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

14 years ago1.0.31.5: WITH-SLOTS on THE forms
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.

14 years ago1.0.31.4: misuse of ABORT-IR1-TRANSFORM
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.

14 years ago1.0.31.3: fix saving runtime options from executable cores
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

14 years ago1.0.31.2: snow leopard (macos 10.6) build fixes
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

14 years ago1.0.31.1: document new new new SourceForge File Release procedure
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

14 years ago1.0.31: release, to be tagged as sbcl_1_0_31
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

14 years ago1.0.30.54: Fix a cross-compiler leak in specialized %unary-truncate
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)

14 years ago1.0.30.53: fix occasional SIGBUS in single-float complex arithmetic
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)

14 years ago1.0.30.52: fix for multiple-value TRUNCATE
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

14 years ago1.0.30.51: fix for COERCE compilation regression
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).

14 years ago1.0.30.50: fix SAVE-LISP-AND-DIE docstring
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

14 years ago1.0.30.49: delete-file behaviour reversal
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.

14 years ago1.0.30.48: utf-8 simple-array-nil correctness
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.

14 years agox86 sap fixes
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.

14 years ago1.0.30.46: SB-INTROSPECT test adjustment
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.

14 years ago1.0.30.45: various pretty-printing improvements
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.

14 years ago1.0.30.44: DECODE-FLOAT and INTEGER-DECODE-FOAT are not flushable
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

14 years ago1.0.30.43: LVAR-MATCHES needs to deal with unnamed leaves
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