changes in sbcl-2.3.11 relative to sbcl-2.3.10:
* minor incompatible change: streams with an external-format specified with
:REPLACEMENT will use their replacement data once per stream unit that
causes a decoding error (rather than, in some cases, once for a sequence
of bytes none of which is a valid character start position for that
external-format).
* minor incompatible change: external-format designators with unsupported or
unrecognized options now signal an error when used.
* enhancement: During generic function dispatch, for a generic function
using standard- or short-method-combination, if there are no applicable
primary methods the system will call the generic function
SB-PCL:NO-PRIMARY-METHOD, whose default behaviour is to signal an error.
Users may define methods on this generic function.
* enhancement: external formats for unibyte encodings and utf-8 now support
newline variants.
* enhancement: character decoding and encoding errors signalled by stream or
octet functions now provide a USE-VALUE restart for handlers to provide
replacement input or output.
* enhancement: READ-SEQUENCE and WRITE-SEQUENCE support user-defined
sequences; the default implementation proceeds element-by-element, reading
or writing single bytes or characters to or from the stream as
appropriate.
* bug fix: OCTETS-TO-STRING using unibyte external formats with unallocated
codepoints (e.g. iso-8859-3) correctly signal or use replacements rather
than taking bits from the address of NIL and converting those bits to
a character.
* bug fix: FILE-STRING-LENGTH now returns NIL if the input datum is not
encodable in the stream's external format.
* bug fix: table-based multibyte external formats (EUC-JP, Shift-JIS, GBK)
now honour a replacement character (in the external format or through
restarts) when encoding to octets.
* bug fix: converting from octets using the UCS-2, UCS-4 and UTF-32 external
formats no longer reads past the end of an octet array with a non-integral
number of two- or four-byte units.
* bug fix: converting from octets using the UCS-2, UCS-4, UTF-16 or UTF-32
external formats now returns a simple string, as required by the type
declaration of OCTETS-TO-STRING.
* bug fix: providing an invalid external format argument to OPEN or
WITH-OPEN-FILE (or the internal MAKE-FD-STREAM) no longer leaks a file
descriptor.
* bug fix: SB-ROTATE-BYTE recognizes out-of-relevant-range BYTE
specifications for integers before attempting to cons up enormous bignums
for masking and shifting. (lp#2042937)
* bug fix: fix type derivation on compiling SB-ROTATE-BYTE forms with
non-zero POSITION in the byte specifier. (lp#2042775)
* bug fix: fix multiple assembler errors when compiling MAKE-ARRAY,
MAKE-STRING and similar with a large constant size. (lp#2037347, lp#2038744)
* bug fix: fix internal error when compiling (SETF SBIT) with a large
constant index. (lp#2037415)
* bug fix: fix internal compiler error on invalid lambda list parameters in
LABELS. (lp#2040334)
* bug fix: fix internal compiler error when compiling some
infinitely-recursive LABELS forms. (lp#2042704)
* bug fix: fix internal compiler error when attempting to inline a jump to a
label that has been deleted. (lp#2043262)
* bug fix: FILL-POINTER should never be made to go negative. (lp#2042452)
* optimization: external formats with :REPLACEMENT no longer bind handlers
for coding errors around conversion functions, and so should cons less and
be faster.
* optimization: when the :EXTERNAL-FORMAT argument to STRING-TO-OCTETS or
OCTETS-TO-STRING is a compile-time constant, the external format is
resolved at load time rather than on each call.
* optimization: the compiler is able to constrain the types of inputs to
some functions given a derived or asserted type of the function's return
value.
* optimization: the compiler performs fewer redundant type checks in ASSOC,
GETF and similar functions.