X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=NEWS;h=a9ed63a83f3944f0d719ad48bf4558515dae74c8;hb=94743c6e54d28544f72565e52a56877fa91f180c;hp=773ddf2d11c1f08dcc6d6fc0466073d7e9eb26cc;hpb=d49c71bf00d858efc5796900ca4954fb76ce6402;p=sbcl.git diff --git a/NEWS b/NEWS index 773ddf2..45facf6 100644 --- a/NEWS +++ b/NEWS @@ -1776,12 +1776,28 @@ changes in sbcl-0.8.1 relative to sbcl-0.8.0: variables in the COMMON-LISP package, and will signal errors for most violations of these type constraints (where previously they were silently accepted). - * changes in type checking closed the following bugs: + * minor incompatible change: COMPILE-FILE now uses the freedom + afforded (ANSI 3.2.2.3) to use derived function types for + functions defined in the same file. This also permits the system + to warn on static type mismatches and function + redefinition. (Currently it does not work with high DEBUG level.) + * minor incompatible change: VALUES declaration is disabled. + * When issuing notes, the compiler now signals a condition of type + SB-EXT:COMPILER-NOTE, and provides an associated MUFFLE-WARNING + restart for use in user handlers. It is expected that the + COMPILER-NOTE condition will eventually become a condition + supertype to a hierarchy of note types, which will then be + handleable in a similar fashion. However, at the moment, no such + note subtypes yet exist. (SB-INT:SIMPLE-COMPILER-NOTE exists, + but it's an implementation detail, not a classification for the + purpose above.) + * Changes in type checking closed the following bugs: ** type checking of unused values (192b, 194d, 203); ** template selection based on unsafe type assertions (192c, 236); ** type checking in branches (194bc). - * VALUES declaration is disabled. - * a short form of VALUES type specifier has ANSI meaning. + * A short form of VALUES type specifier has ANSI meaning (it has + increased the number of situations when SBCL cannot perform type + checking). * fixed bug in DEFSTRUCT: once again, naming structure slots with keywords or constants is permissible. * STREAM-READ-SEQUENCE and STREAM-WRITE-SEQUENCE now have methods @@ -1791,28 +1807,493 @@ changes in sbcl-0.8.1 relative to sbcl-0.8.0: outputs FRESH-LINE or TERPRI, and no longer converts its stream argument to a pretty-print stream. Instead, it leaves any such operations to DESCRIBE-OBJECT methods. - * bug fix: APROPOS now respects the EXTERNAL-ONLY flag. (reported + * bug fix: APROPOS now respects the EXTERNAL-ONLY flag. (reported by Teemu Kalvas) * bug fix: NIL is now a valid destructuring argument in DEFMACRO - lambda lists. (thanks to David Lichteblau) - * bug fix: defining a generic function with a :METHOD-CLASS being a + lambda lists. (thanks to David Lichteblau) + * bug fix: Defining a generic function with a :METHOD-CLASS being a subclass of STANDARD-METHOD no longer causes stack exhaustion. (thanks to Gerd Moellmann) - * increased compilation speed of long MULTIPLE-VALUES-BIND. + * fixed bug 246: increased compilation speed of long + MULTIPLE-VALUE-BIND (and likewise of NTH-VALUE with a constant + integer argument) * a contributed module implementing COMPILER-LET and MACROEXPAND-ALL has been included. * DEFCONSTANT now throws a condition of type SB-EXT:DEFCONSTANT-UNEQL if it is being asked to redefine a constant to a non-EQL value; CONTINUE and ABORT restarts - respectively change and preserve the value. + respectively change and preserve the value. + * fixed bug 63: The code walker, part of the implementation of CLOS, + is now better at handling symbol macros. + * bug fix: There is no longer an internal implementation type named + CL:LENGTH. (reported by Raymond Toy) + * bug fix: In macro-like defining macros/special operators the + implicit block does not enclose the lambda list. + * fixed bugs 10 and 43: Bare VALUES, AND, OR and MEMBER symbols (not + enclosed in parentheses) are not suitable as type specifiers, and + their use properly signals an error now. + * bug fix: An argument count mismatch for a type specifier in code + being compiled no longer causes an unhandled error at compile + time, but signals a compile-time warning. + * fixed simple vector readable printing + * bug fix: DESCRIBE takes more care over whether the class + precedence list slot of a class is bound before accessing it. + (reported by Markus Krummenacker) + * bug fix: FORMATTER can successfully compile pretty-printer format + strings which use variants of the ~* directive inside. + * bug fix: SEARCH now applies its TEST predicate to the elements of + the arguments in the correct order. (thanks to Wolfhard Buss) + * fixed bug 235b: The compiler uses return types of MAPCAR and friends + in type inference. (thanks to Robert E. Brown) + * bug fix: Reading in symbols with an explicit package name of "" + (e.g. '||::FOO) now works correctly. (reported by Henrik Motakef) * fixed some bugs revealed by Paul Dietz' test suite: ** NIL is now allowed as a structure slot name. - ** arbitrary numbers, not just reals, are allowed in certain + ** Arbitrary numbers, not just REALs, are allowed in certain circumstances in LOOP for-as-arithmetic clauses. - ** multiple class redefinitions before slot access no longer + ** Multiple class redefinitions before slot access no longer causes a type error. ** (SETF FIND-CLASS) now accepts NIL as an argument to remove the association between the name and a class. + ** Generic functions with non-standard method-combination and over + five methods all of which return constants no longer return NIL + after the first few invocations. (thanks to Gerd Moellmann) + ** CALL-NEXT-METHOD with no arguments now passes the original + values of the arguments, even in the presence of assignment. + ** Functions [N]SUBST*, LAST, NRECONC, [N]SUBLIS may return any + object. + ** DISASSEMBLE works with closures and funcallable instances. + ** ADD-METHOD now returns the generic function, not the new method. + ** FIND-METHOD signals an error if the lengths of the specializers + is incompatible with the generic function, even if the ERRORP + argument is true. + ** TYPE-OF returns recognizeable subtypes of all built-in-types of + which its argument is a member. + ** DEFCLASS only redefines the class named by its class-name + argument if that name is the proper name of the class; + otherwise, it creates a new class. + ** SLOT-UNBOUND now correctly initalizes the CELL-ERROR-NAME slot + of the UNBOUND-SLOT condition to the name of the slot. + ** (SETF (AREF bv 0) ...) did not work for bit vectors. + ** SLOT-UNBOUND and SLOT-MISSING now have their return values + treated by SLOT-BOUNDP, SLOT-VALUE, (SETF SLOT-VALUE) and + SLOT-MAKUNBOUND in the specified fashion. + +changes in sbcl-0.8.2 relative to sbcl-0.8.1: + * fixed bug 148: failure to inline-expand a local function left + garbage, confusing the compiler. + * fixed bugs 3cd: structure slot readers perform type check if the + slot can have an invalid value (i.e. it is either not initialized + or can be written with a less specific slot writer). + * bug fix: the compiler now traps array references to elements off + the end of an array; previously, the bounds checking in some + circumstances could go off-by-one. + * improved MACHINE-VERSION, especially on Linux (thanks to Lars + Brinkhoff) + * type declarations for array element types now obey the description + on the CLHS page "Declaration TYPE", as per discussions on + sbcl-help around 2003-05-08. This means that a declaration + (TYPE (ARRAY FOO) BAR) means that, within the scope of the + declaration, all references to BAR will be asserted or assumed + (with THE, so dependent on compiler policy) to involve objects of + type FOO. Note that no such declaration is implied in + (MAKE-ARRAY .. :ELEMENT-TYPE 'FOO). + * declared types of functions from the "Conditions" + chapter. (reported by Paul Dietz) + * bug fix: CERROR accepts a function as its first argument. + * bug fix: NTH an NTHCDR accept a bignum as index + arguments. (reported by Adam Warner) + * optimization: character compare routines now optimize comparing + against a constant character. (reported by Gilbert Baumann) + * bug fix: (SETF AREF) on byte-sized-element arrays with constant index + argument now works properly on the MIPS platform. + * fixed compiler failure on (TYPEP x '(NOT (MEMBER 0d0))). + * repeated evaluation of the same DEFSTRUCT, a slot of which is + declared to have a functional type, does not cause an error + anymore. + * fixed bug: sometimes MAKE-INSTANCE did not work with classes with + many :DEFAULT-INITARGS. (reported by Istvan Marko) + * fixed bug: if last continuation of a deleted block has a + destination, this destination should be deleted too. (reported by + ohler on #lisp) + * fixed a bug in the bootstrap process: the host compiler's values + of ARRAY-DIMENSION-LIMIT and ARRAY-TOTAL-SIZE-LIMIT no longer leak + into the newly-built SBCL. (reported by Eric Marsden on #lisp, + test case from Patrik Nordebo) + * improved the ability of the disassembler on the PPC platform to + provide helpful disassembly notes. + * SB-MOP:CLASS-PROTOTYPE on built-in-classes returns an instance of + the class in more cases than previously. + * bug fix: FILE-POSITION now understands :START and :END for + STRING-INPUT-STREAMs. (thanks to Nikodemus Siivola) + * bug fix: (SIGNED-BYTE 8) streams no longer return (UNSIGNED-BYTE + 8) data. (thanks to David Lichteblau) + * bug fix: it is possible to add a method to a generic function + without lambda list. + * bug fix: reader failed to signal END-OF-FILE inside an + object representation. (reported by Nikodemus Siivola) + * fixed some bugs revealed by Paul Dietz' test suite: + ** LAST and [N]BUTLAST should accept a bignum. + ** condition slot accessors are methods. + ** (VECTOR NIL) is a subtype of STRING. + +changes in sbcl-0.8.3 relative to sbcl-0.8.2: + * SBCL now builds and runs on MacOS X (version 10.2), or perhaps + more accurately, on the Darwin kernel running on PowerPC hardware. + (thanks to Brian Mastenbrook, Pierre Mai and Patrik Nordebo) + * Compiler code deletion notes now signal a condition of type + SB-EXT:CODE-DELETION-NOTE (a subtype of SB-EXT:COMPILER-NOTE) with + an associated MUFFLE-WARNING restart. + * The compiler now performs limited argument count validation of + constant format strings in FORMAT, and where appropriate in ERROR, + CERROR and WARN. (thanks to Gerd Moellmann) + * New ASDF-INSTALL contrib can be used for automatic download and + installation of third-party Lisp code from CCLAN or other sites + via CLiki. + * Threaded builds (:SB-THREAD) now support SB-THREAD:INTERRUPT-THREAD, + which forces another thread to execute a function supplied by the + caller. + * bug 75 fix: WITH-OUTPUT-TO-STRING (and MAKE-STRING-OUTPUT-STREAM) + now accept and act upon their :ELEMENT-TYPE keyword argument. + (reported by Martin Atzmueller, Edi Weitz) + * bug fix: FILE-POSITION now accepts position designators up to + ARRAY-DIMENSION-LIMIT or the extreme of the off_t range, whichever + is the greater. (thanks to Patrik Nordebo) + * bug fix: MAKE-ARRAY ignored :INITIAL-CONTENTS NIL. (reported by + Kalle Olavi Niemitalo) + * bug fix: the CLASS-PROTOTYPE of the GENERIC-FUNCTION class is now + printable. (reported by Eric Marsden) + * bug fix in sb-posix: mmap() now works on systems with a 64-bit + off_t, including Darwin and FreeBSD. (thanks to Andreas Fuchs) + * x86 bug fix in control stack exhaustion checking: now shows backtrace + * bug fix in WITH-TIMEOUT: now the body can have more than one form. + (thanks to Stig Sandoe) + * bug fix in READ-SEQUENCE: READ-SEQUENCE following PEEK-CHAR or + UNREAD-CHAR now correctly includes the unread character in the + target sequence. (thanks to Gerd Moellmann) + * bug fix in threaded builds: the system can now be suspended and + resumed by shell job control with minimal disruption. + * bug fixes in times and timezones >2038AD + * better handling of "where is GNU make?" problem in build scripts + (thanks to Nikodemus Siivola) + * new optimization: inside a named function any reference to a + function with the same name is considered to be a self-reference; + this behaviour is controlled with SB-C::RECOGNIZE-SELF-CALLS + optimization quality. + * new optimization on x86: logical functions and + now have + optimized (UNSIGNED-BYTE 32) versions, which are automatically + used when the result is truncated to 32 bits. + * VALUES declaration is partially enabled. + * fixes in SB-GROVEL (thanks to Andreas Fuchs) + * fixed some bugs revealed by Paul Dietz' test suite: + ** The system now obeys the constraint imposed by + UPGRADED-ARRAY-ELEMENT-TYPE that the upgraded array element + types form a lattice under type intersection. + ** FFLOOR, FTRUNCATE, FCEILING and FROUND work with integers. + ** ASSOC now ignores NIL elements in an alist. + ** CEILING now gives the right answer with MOST-NEGATIVE-FIXNUM + and (1+ MOST-POSITIVE-FIXNUM) answers. + ** The addition of a method with invalid qualifiers to a generic + function does not cause an error to be signalled immediately; + a warning is signalled, and the error is generated only on + calling the generic function. + * changed .fasl file version number, in part to add type codes for + new array subtypes UNSIGNED-BYTE 7, 15, 29, and 31 mandated by + obscure ANSI requirements + +changes in sbcl-0.8.4 relative to sbcl-0.8.3: + * incompatible change: The --disable-debugger command line + option now clobbers the debugger at a more fundamental + level, by redefining #'INVOKE-DEBUGGER instead of by + rebinding *DEBUGGER-HOOK*. The main difference is that BREAK + is specified by ANSI to ignore *DEBUGGER-HOOK* and + INVOKE-DEBUGGER regardless. Under the old system, BREAK would + enter the debugger REPL and then suffer recursive errors + because *DEBUG-IO* is also messed up in --disable-debugger mode; + while under the new system, BREAK in --disable-debugger mode + terminates the system just as an unhandled error would. + * fixed compiler performance when processing loops with a step >1; + * bug fix: DOCUMENTATION now retrieves generic function + documentation. Also, DOCUMENTATION and (SETF DOCUMENTATION) + support has been systematized, and now supports the methods + specified by ANSI, along with a default method and a method for + slot documentation. (reported by Nathan Froyd) + * bug fix: effective methods associated with a generic function are + no longer cached over a change of that generic function's method + combination. (reported by Andreas Fuchs) + * bug fix: RUN-PROGRAM now does not fail if some element in $PATH + names a non-existent directory. (thanks to Andreas Fuchs) + * bug fix: ROUND and TRUNCATE could, under certain circumstances on + the PPC platform, lead to stack corruption; this has been fixed. + (reported by Rainer Joswig) + * bug fix: ASH on an (UNSIGNED-BYTE 32) with a shift of -32 or lower + no longer ever returns 1 instead of 0. (thanks to Lars Brinkhoff) + * fixed bug 285: TRUNCATE on bignum arguments, and indeed bignum + arithmetic in general, is now much more reliable on the PPC + platform. + * bug fix: LOGCOUNT on (UNSIGNED-BYTE 64) objects on the Alpha + platform now returns the right answer. + * optimization: restored some effective method precomputation in + CLOS (turned off by an ANSI fix in sbcl-0.8.3); the amount of + precomputation is now tunable. + * optimization: compiler-internal data structure use has been + reviewed, and changes have been made that should improve the + performance of the compiler by about 20%. + * optimization: performance of FILL (and :INITIAL-ELEMENT) on + simple-base-strings and simple-bit-vectors is improved. + * optimization: the optimization of 32-bit logical and arithmetic + functions introduced in version 0.8.3 on the x86 has been + implemented on the mips, ppc and sparc platforms; an + implementation of the same facility, but for 64-bit arithmetic, + has been added for the alpha. + * microoptimization: the compiler is better able to make use of the + x86 LEA instruction for multiplication by constants. + * bug fix: in some situations compiler did not report usage of + generic arithmetic in (SPEED 3) policy. + * bug 145b fix: compiler used wrong type specifier while converting + MEMBER-types to numeric. + * bug fix: COMPILE-FILE must bind *READTABLE*. (reported by Doug + McNaught) + * bug fix: (SETF AREF) on byte-sized-element arrays with constant + index argument now works properly on the Alpha platform. + * bug fix: floating point exception treatment on the Alpha platform + is improved. + * bug fix: FILE-POSITION works much better on string input and + output streams. (thanks to Nikodemus Siivola) + * bug fix: many threading/garbage collection symptoms sorted. + SB-THREAD:INTERRUPT-THREAD now safe to call on a thread that + might be pseudo-atomic. + * internal change: Stopping for GC is now done with signals not + ptrace. GC is now done in whichever thread wanted it, instead of + in the parent. + * bug fix: GC hooks (missing since 0.8) reinstated, so finalizers + work again. + * bug fix: result form in DO is not contained in the implicit + TAGBODY. + * incompatible change: ICR structure is changed; the value part of + CONTINUATION is now called LVAR; corresponding functions are + renamed (e.g. SB-C::CONTINUATION-TYPE has become SB-C::LVAR-TYPE). + * added type deriver for ISQRT (thanks to Robert E. Brown). + * bug fix: better support for loading from the command line when an + initialization file sets (READTABLE-CASE *READTABLE*). (thanks + to Adam Warner) + * fixed some bugs revealed by Paul Dietz' test suite: + ** the RETURN clause in LOOP is now equivalent to DO (RETURN ...). + ** ROUND and FROUND now give the right answer when given very + small float arguments. + ** (FLOAT X) for X of type DOUBLE-FLOAT now returns X in all + circumstances. + ** optimizer for (EXPT X 0) did not work for X not of type FLOAT. + ** (GCD 0 ) returned . + ** LCM should return a non-negative integer. + ** PARSE-INTEGER returned the index of a terminator instead of the + upper bounding index of a substring in case :JUNK-ALLOWED NIL. + ** PARSE-INTEGER returned an incorrect index being applied to a + displaced string. + ** LCM with two arguments of 0 returns 0 rather than signalling + DIVISION-BY-ZERO. + ** unsigned addition of a 32-bit constant with the high bit set no + longer causes an internal compiler error on the x86. + ** LOGBITP accepts a non-negative bignum as its INDEX argument. + ** compiler incorrectly derived types of DPB and DEPOSIT-FIELD + with negative last argument. + ** byte specifiers with zero size and position no longer cause + an error during type derivation. + ** bignum multiplication on the Alpha platform now returns the + right answer. + * porting: The system now builds on SuSE AMD64, although it still + generates a 32-bit binary. + * .fasl file incompatibility: The fasl file version number has + been incremented (because of the changes to internal compiler + data structures referred to above). + +changes in sbcl-0.8.5 relative to sbcl-0.8.4: + * New code in contrib/sb-introspect (still probably not entirely + stable yet) provides some support for smart Lisp development + environments like SLIME. + * The conditions signalled for errors occurring when loading .fasl + files have been systematized (inheriting from SB-EXT:INVALID-FASL) + in a way which should help ASDF recover gracefully. + * The REQUIRE/PROVIDE behavior of *MODULE-PROVIDER-FUNCTIONS* + stuff has been cleaned up. If you code contrib/ stuff, this might + affect you, and you can look at contrib/README, contrib/STANDARDS, + and/or the 0.8.4.27 diff to check. + * In full calls the compiler now does not generate checks for declared + argument types for all arguments. + * various threading fixes + ** and some experimental patches which didn't make it into + the main tree for this release, but which are shipped in + contrib/experimental-thread.patch as a possible fix for some + failures (deadlock, spinning...) in GC-intensive multithreaded + applications. + * fixed PPC build problem (source code incompatibility of different + library versions): added offsetof() hackery which attempts to divine + where glibc maintainers put uc_mcontext today + * fixed bug 282: compiler does not trust type assertions while passing + arguments to a full call. + * fixed bug 261: compiler allows NIL or "no value" to be accepted for + &OPTIONAL VALUES type parameter. + * fix bug 214: algorithm for noting rejected templates is now more + similar to that of template seletion. (also reported by rydis on + #lisp) + * fixed bug 141b: printing backquoted information readably and prettily + inserts a space where necessary. + * bug fix: obviously wrong type specifiers such as (FIXNUM 1) or + (CHARACTER 10) are now reported as errors, rather than propagated + as unknown types. (reported by piso on #lisp) + * bug fix: the :IF-EXISTS argument to OPEN now behaves correctly + with values NIL and :ERROR. (thanks to Milan Zamazal) + * fixed bug 191c: CLOS now does proper keyword argument checking as + described in CLHS 7.6.5 and 7.6.5.1. + * bug fix: LOOP forms using NIL as a for-as-arithmetic counter no + longer raise an error; further, using a list as a for-as-arithmetic + counter now raises a meaningful error. + * fixed bug 213a: even fairly unreasonable CONS type specifiers are + now understood by sequence creation functions such as MAKE-SEQUENCE + and COERCE. + * fixed bug 46k: READ-BYTE now signals an error when asked to read from + a STRING-INPUT-STREAM. + * compiler enhancement: SIGNUM is now better able to derive the type + of its result. + * type declarations inside WITH-SLOTS are checked. (reported by + salex on #lisp) + * fixed some bugs revealed by Paul Dietz' test suite: + ** incorrect optimization of TRUNCATE for a positive first + argument and negative second. + ** compiler failure in let-convertion during flushing dead code. + ** compiler failure while deriving type of TRUNCATE on an + interval, containing 0. + ** ASH of a negative bignum by a negative bignum count now returns + -1, not 0. + ** intersection of CONS types now canonicalizes properly, fixing + inconsistencies in SUBTYPEP. + +changes in sbcl-0.8.6 relative to sbcl-0.8.5: + * fixed a bootstrapping bug: the build process no longer assumes + that the various BOOLE-related constants have the same value in + host and target lisps. (noted by Paul Dietz' test suite on an + SBCL binary built from CLISP) + * The system can now be dynamically linked on the MIPS platform, + which enables dynamic loading of foreign code from Lisp. (thanks + to Ralf Baechle for discussions on the MIPS ABI) + * The system now records debugging information for its own source + files in a filesystem-position-independent manner, relative to + the "SYS" logical host. + * fixed a compiler bug: MV-LET convertion did not check references + to the "max args" entry point. (reported by Brian Downing) + * tweaked disassembly notes to be less confident about proclaiming + some instruction as an LRA. (thanks to Brian Downing) + * contrib update: SB-ACLREPL is now threadsafe; multiple listeners + now each have their own history, command character, and other + characteristics. (thanks to David Lichteblau) + * fixed some bugs revealed by Paul Dietz' test suite: + ** compiler failure in compiling LOGAND expressions including a + constant 0 + ** Implementation of ASH-MOD32 on X86 and PPC did not work for the + shift greater than 32. + ** FLUSH-DEST did not mark blocks for type check regeneration. + ** HANDLER-CASE failed to accept declarations in handler clauses + in some circumstances. + +changes in sbcl-0.8.7 relative to sbcl-0.8.6: + * When built with the :SB-FUTEX feature, threaded builds now take + advantage of the "fast userspace mutex" facility in Linux kernel 2.6 + for faster/more reliable mutex and condition variable support. + * Incompatible change (but one you probably shouldn't have been using + anyway): the interface and code for arbitrating between multiple + threads in the same user session has been redesigned. + * bug fix: GET-SETF-EXPANSION no longer throws an internal type + error when called without an explicit environment argument. + (thanks to Nikodemus Siivola) + * bug fix: buffered :DIRECTION :IO streams are less likely to become + confused about their position. (thanks to Adam Warner and Gerd + Moellmann) + * bug fix: Pretty printing backquoted forms with unquotations in the + argument list position of various code constructs such as LAMBDA + now works correctly. (reported by Paul Dietz) + * bug fix: Pretty printing unquotations no longer loses all + stream position information. + * optimization: performance of string output streams is now less + poor for multiple small sequence writes. + * optimization: performance of CSUBTYPEP in the presence of complex + expressions involving CONS and NOT many times has been improved. + (reported by Paul Dietz) + * ASDF-INSTALL bug fix: now parses *PROXY* properly. (thanks to + Sean Ross) + * SB-SIMPLE-STREAMS enhancement: simple-streams can now be used as + streams for the REPL, for the debugger, and so on. (thanks to + David Licteblau) + * DEFINE-CODITION is more efficient. (thanks to Brian Mastenbrook) + * fixed some bugs revealed by Paul Dietz' test suite: + ** the value of the :REHASH-THRESHOLD argument to MAKE-HASH-TABLE + is ignored if it is too small, rather than propagating through + to cause DIVIDE-BY-ZERO or FLOATING-POINT-OVERFLOW errors. + ** extremely complex negations of CONS types were not being + sufficiently canonicalized, leading to inconsistencies in + SUBTYPEP. + ** VALUES tranformer lost derived type. + +changes in sbcl-0.8.8 relative to sbcl-0.8.7: + * minor incompatible change: parsing of namestrings on a physical + (Unix) host has changed; numbers after the final #\. in a + namestring are no longer interpreted as a version field. This is + intented to be largely invisible to the user, except that the + meaning of the namestring "*.*.*" has changed: it now refers to a + pathname with :TYPE :WILD :NAME #. This namestring + should usually be replaced by + (make-pathname :name :wild :type :wild :version :wild) + with the added benefit that this is more likely to be portable. + As a consequence of this change, the :IF-EXISTS :NEW-VERSION + option to OPEN now signals an error if the file being opened + exists; this may have an impact on existing code. + * bug fix: DECODE-UNIVERSAL-TIME now accepts timezone arguments with + second-resolution: integer multiples of 1/3600 between -24 and 24. + (thanks to Vincent Arkesteijn) + * bug fix: functions =, /=, <, <=, >, >= did not check the argument + type when called with 1 argument; PEEK-CHAR checked type of + PEEK-TYPE only after having read first character from a + stream. (reported by Peter Graves) + * bug fix: the garbage collector now has much better locality + behaviour, and in particular no longer treats all memory as being + exhausted when many small objects point to each other in a deeply + recursive manner. + * bug fix: arrays specialized on (UNSIGNED-BYTE 15) are now + recognized as being TYPEP their class. + * optimization: implemented multiplication as a modular + (UNSIGNED-BYTE 32) operation on the x86 backend. + * optimization: SEARCH on simple-base-strings can now be open-coded. + (see also contrib/compiler-extras.lisp for inspiration for + teaching the compiler about the Boyer-Moore algorithm). + * value, returned by MAX (and MIN) called with several EQUALP, but + not EQL, arguments now does not depend on compiler settings. + * fixed some bugs revealed by Paul Dietz' test suite: + ** in stack analysis liveness information is propagated from + non-local entry points. + ** pathwise CAST removing failed when the CAST node did not start + a block. + ** INPUT-STREAM-P, OUTPUT-STREAM-P, STREAM-ELEMENT-TYPE and + OPEN-STREAM-P signal a TYPE-ERROR if their argument is not a + stream. + ** LOAD-LOGICAL-PATHNAME-TRANSLATIONS returns NIL if the logical + host is already defined. + ** RENAME-FILE works on streams instead of signalling an internal + type error. + ** PEEK-CHAR uses the current readtable when determining whether + or not a character is whitespace. + ** MERGE-PATHNAMES handles the case when the pathname does not + specify a name while the default-pathname specifies a version. + ** Pathnames now stand a better chance of respecting print/read + consistency. + ** Attempting to use standardized file system operators with a + pathname with invalid :DIRECTORY components signals a + FILE-ERROR. + ** OPEN :DIRECTION :IO no longer fails to work on non-existent + files. + ** DIRECTORY on logical pathnames is more correct. + ** CLEAR-INPUT, CLEAR-OUTPUT, FINISH-OUTPUT and FORCE-OUTPUT + signal a TYPE-ERROR if their argument is not a stream. + ** READ-BYTE and WRITE-BYTE signal a TYPE-ERROR if their stream + designator argument does not designate a stream. planned incompatible changes in 0.8.x: * (not done yet, but planned:) When the profiling interface settles