-
sbcl_1_0_29e834360d · ·
changes in sbcl-1.0.29 relative to 1.0.28: * IMPORTANT: bug database has moved from the BUGS file to Launchpad https://bugs.launchpad.net/sbcl Bugs can be reported directly there, or by sending email to sbcl-bugs@lists.sourceforge.net (no subscription required.) * minor incompatible change: under weak type checking policy integer types are weakened less aggressively. * minor incompatible change: SAVE-LISP-AND-DIE :TOPLEVEL function is now allowed to return, which causes SBCL to quit with exit status 0. Previously if the function returned with a small integer return value, that value was accidentally reused as the exit status. * new feature: SB-EXT:DEFINE-HASH-TABLE-TEST allows defining new arguments to MAKE-HASH-TABLE :TEST, and MAKE-HASH-TABLE has been extended with :HASH-FUNCTION argument. Refer to user manual for details. * new feature: SB-EXT:DEFGLOBAL macro allows defining global non-special variables. * new feature: SB-EXT:GET-TIME-OF-DAY provides access to seconds and microseconds since the Unix epoch on all platforms. * new feature: SB-EXT:ALWAYS-BOUND proclamation inhibits MAKUNBOUND, and allows the compiler to safely elide boundedness checks for special variables. * new feature: SB-EXT:GLOBAL proclamation inhibits SPECIAL proclamations for the symbol, prohibits both lexical and dynamic binding. This is mainly an efficiency measure for threaded platforms, but also valueable in expressing intent. * new feature: UNC pathnames are now understood by the system on Windows. * optimization: the compiler uses a specialized version of FILL when the element type is know in more cases, making eg. (UNSIGNED-BYTE 8) case almost 90% faster. * optimization: accesses to potentially non-simple arrays where element type is known are 50% faster. * optimization: compiler now generates faster array typechecking code. * optimization: ARRAY-DIMENSION is now faster for multidimensional and non-simple arrays. * optimization: multidimensional array accesses in the absence of type information regarding array rank are approximately 10% faster due to open coding of ARRAY-RANK. * optimization: result of (FILL (MAKE-ARRAY ...) ...) and (REPLACE (MAKE-ARRAY ...) ...) can be stack allocated if the result of MAKE-ARRAY form can be. * optimization: result of call to VECTOR can now be stack allocated. * optimization: MAKE-ARRAY with :INITIAL-CONTENTS is now vastly faster as long as the resulting array is one-dimensional and has a known element type. In particular, :INITIAL-CONTENTS (LIST ...) where the length of the list matches the known length of the vector does not allocate the list as an intermediate step. Ditto for VECTOR and simple backquoted forms. * optimization: MAKE-ARRAY can now stack allocate in the presence of :INITIAL-CONTENTS and :INITIAL-ELEMENT as long as the result has a known element type, and is known to be simple and one dimensional. * improvement: SBCL now emits a compiler note where stack allocation was requested but could not be provided (not in all cases, unfortunately) * improvement: better MACHINE-VERSION responses. (thanks to Josh Elsasser) * improvement: pretty-printing loop has been implemented properly. (thanks to Tobias Rittweiler) * documentation: CLOS slot typechecing policy has been documented. * bug fix: FILE-AUTHOR no longer signals an error on Windows. * bug fix: SB-SPROF could be foiled by foreign code not have a frame pointer, leading to memory faults. (thanks to Bart Botta) * bug fix: better floating point exception handling on x86/OpenBSD. (thanks to Josh Elsasser) * bug fix: exit status from QUIT when called under --script was lost (reported by Hubert Kauker) * bug fix: MAKE-ARRAY for non-zero :INITIAL-ELEMENT always used the same implementation of FILL to initialize the array, even if a more efficient one was available (reported by Stas Boukarev, thanks to Paul Khuong) * bug fix: potential miscompilation of array stack allocation on x86 and x86-64. (reported by Time Tossavainen) * bug fix: some forms of AND, OR, and COND resulted in expansions that could result in their subforms being treated as top level forms. (reported by James Knight) * bug fix: On x86/x86-64 alien functions declared to return integers shorter than a machine register could leave garbage in the high bits of the result register (bug 316325). * bug fix: disable address space randomization Linux/x86-64 as well, not just x86-64. (reported by Ken Olum) * bug fix: Attempting to DEREF an (ALIEN (* T)) would produce a WARNING and generate incorrect code. * bug fix: #201; type inference for CONS and ARRAY types could derive wrong results in the presence of eg. RPLACA or ADJUST-ARRAY. * bug fix: special variables with a proclaimed specific subtype of FUNCTION could not be assigned to or bound with PROGV. (reported by Lorenz Mösenlechner) * bug fix: the value of CL:- in the inspector was the previous expression evaluated rather than the expression being evaluated. * bug fix: constants can no longer be locally declared special. * bug fix: signals delivered to threads started from foreign land (read: directly by pthread_create, not by MAKE-THREAD) are redirected to a Lisp thread by blocking all signals and resignalling. * bug fix: SHARED-INITIALIZE initialized unbound :ALLOCATION :CLASS slots from :INITFORM, if any.
-
sbcl.1.0.282b8c64a5 · ·
-
sbcl_1_0_282b8c64a5 · ·
changes in sbcl-1.0.28 relative to 1.0.27: * a number of bugs in cross-compilation have been fixed, with the ultimate result that building under (at least) clisp should be much more reliable. * minor incompatible changes: echo-streams now propagate unread-char to the underlying input stream, and no longer permit unreading more than one character. * improvement: on x86/x86-64 Lisp call frames now have the same layout as C frames, allowing for instance more reliable backtraces. * improvement: the debugger REPL can now reference lexical variables by name directly for code compiled with (DEBUG 3). * improvement: errors from malformed declarations now have better source paths associated with them. (thanks to Tobias Rittweiler) * optimization: faster local calls on x86/x86-64 * bug fix: some error messages for out-of-bound array indexes confused the index and the bound. (thanks to Stas Boukarev) * bug fix: pretty printing malformed DEFPACKAGE forms (thanks to Sidney Markowitz) * bug fix: running regressions tests in shells without OSTYPE set now works. (reported by Harald Hanche-Olsen) * bug fix: more robust static space exhaustion signalling from MAKE-STATIC-VECTOR (thanks to Daniel Lowe) * bug fix: (SETF DOCUMENTATION) for anonymous function now throws the docstring away instead of storing it under names such as (LAMBDA (X)). (reported by Leslie Polzer) * bug fix: timers could go off in the wrong order, be delayed indefinitely (thanks to Ole Arndt for the patch) * bug fix: RESTART-FRAME and RETURN-FROM-FRAME stack corruption * bug fix: the discriminating function for PRINT-OBJECT no longer preserves potentially-invalid effective methods in its cache. * bug fix: SB-INTROSPECT:FIND-DEFINITION-SOURCE now works with funcallable instances as well (thanks to Paul Khuong) * bug fix: using RUN-PROGRAM does not interfere with SB-POSIX:WAIT, SB-POSIX:WAITPID and their C equivalents. * bug fix: RUN-PROGRAM does not crash on Darwin when stressed.
-
sbcl.1.0.272227ef81 · ·
-
sbcl_1_0_272227ef81 · ·
changes in sbcl-1.0.27 relative to 1.0.26: * new port: support added for x86-64 OpenBSD. (thanks to Josh Elsasser) * new port: support added for x86-64 Solaris. (thanks to Alex Viskovatoff) * improvement: the system either recovers from stack exhaustion or dies properly as opposed to leaving the user uncertain of whether the handler trampled on some random memory next to the stack or having to rely on --lose-on-corruption (which is still a good idea to use in production because stack exhaustion can happen in signal handlers which will likely lead to hangs.) * bug fix: fix gc related interrupt handling bug on ppc (regression from 1.0.25.37, reported by Harald Hanche-Olsen) * bug fix: work around signal delivery bug in darwin (regression from 1.0.25.44, reported by Sidney Markowitz) * bug fix: fix ERROR leaking memory (reported by David Thompson)
-
sbcl.1.0.26fdb3f294 · ·
-
sbcl_1_0_26fdb3f294 · ·
changes in sbcl-1.0.26 relative to 1.0.25: * incompatible change: an interruption (be it a function passed to INTERRUPT-THREAD or a timer function) runs in an environment where interrupts can be enabled. The interruption can use WITH-INTERRUPTS or WITHOUT-INTERRUPTS as it sees fit. Use WITHOUT-INTERRUPTS to avoid nesting of interruptions and potentially running out of stack. Keep in mind that in the absence of WITHOUT-INTERRUPTS some potentially blocking operation such as acquiring a lock can enable interrupts. * incompatible change: GC-OFF and GC-ON are removed, as they were always unsafe. Use WITHOUT-GCING instead. * new feature: runtime option --disable-ldb * new feature: runtime option --lose-on-corruption to die at the slightest hint of possibly non-recoverable errors: running out of memory, stack, alien stack, binding stack, encountering a memory fault, etc. In the absence of --lose-on-corruption a warning is printed to stderr. * enhancement: detect binding stack exhaustion * enhancement: detect alien stack exhaustion on x86/x86-64 * improvement: generally more stable and reliable interrupt handling * improvement: there is a per thread interruption queue, interruptions are executed in order of arrival * improvement: a repeating timer reschedules itself when the it has finished, but expiration times are spaced equally. If an expiration time is in the past it will trigger after a short grace period that may give a chance to other things to run. * optimization: slightly faster gc on multithreaded builds * optimization: faster WITHOUT-GCING * bug fix: when JOIN-THREAD signals an error, do it when not holding important locks so that the debugger/handler doesn't produce recursive errors or deadlock. * bug fix: real-time signals are not used anymore, so no more hanging when the system wide real-time signal queue gets full. * bug fix: INTERRUPT-THREAD on a dying thread could produce memory fault. * bug fix: finalizers, gc hooks never run in a WITHOUT-INTERRUPTS * bug fix: fix random memory faults related to interrupts on alpha * bug fix: fix random memory faults related to interrupts on sparc * bug fix: fix deadlocks related to starting threads * bug fix: fix deadlines on locks on futex platforms * bug fix: restore errno in signal handlers * bug fix: fix deadlocks related to hash tables * bug fix: fix deadlocks in pcl
-
-
sbcl.1.0.25b888c3f6 · ·
-
sbcl_1_0_25b888c3f6 · ·
changes in sbcl-1.0.25 relative to 1.0.24: * incompatible change: SB-INTROSPECT:FUNCTION-ARGLIST is deprecated, to be removed later. Please use SB-INTROSPECT:FUNCTION-LAMBDA-LIST instead. * new feature: SB-INTROSPECT:DEFTYPE-LAMBDA-LIST allows retrieval of DEFTYPE lambda lists. (thanks to Tobias Rittweiler) * enhancement: MUTEX-VALUE is to be superseded by MUTEX-OWNER that has a better name and does not return values so stale on multiprocessor systems. Also, HOLDING-MUTEX-P was added for about the only sane usage of MUTEX-OWNER. * improvement: unithread builds keep track of MUTEX-VALUE. * improvement: reading from a TWO-WAY-STREAM does not touch the output stream anymore making it thread safe to have a concurrent reader and a writer, for instance, in a pipe. * improvement: GET-SETF-EXPANDER avoids adding bindings for constant arguments, making compiler-macros for SETF-functions able to inspect their constant arguments. * improvement: COMPILE-FILE reports times with millisecond accuracy (thanks to Luis Oliveira) * optimization: CHAR-CODE type derivation has been improved, making TYPEP elimination on subtypes of CHARACTER work better. (reported by Tobias Rittweiler, patch by Paul Khuong) * bug fix: setting alien structure fields of type struct by value now computes the right offset for the memory copy. * bug fix: compilation problem involving inlined calls to aliens with result type VOID. (reported by Ken Olum) * bug fix: #235a; sequential inline expasion in different policies no longer reuses the functional from the previous expansion site. * bug fix: DEFTYPE no longer breaks on bodies consisting of a single unquoted symbol. Regression from 1.0.22.8. (reported by Ariel Badichi) * bug fix: named ENUMs in multiply-referenced alien record types no longer cause an implied type redefinition. Regression from 1.0.21.29. * bug fix: sign-extension of small signed return values now works with C code compiled with gcc 4.3 or newer. (reported by Liam Healy) * improvements to the Windows port: ** SB-BSD-SOCKETS now works from saved cores as well. (reported by Stephen Westfold, thanks to Rudi Schlatte)
-
sbcl.1.0.2456c7428e · ·
-
sbcl_1_0_2456c7428e · ·
changes in sbcl-1.0.24 relative to 1.0.23: * new feature: ARRAY-STORAGE-VECTOR provides access to the underlying data vector of a multidimensional SIMPLE-ARRAY. * new feature: the system now signals a continuable error if standard readtable modification is attempted. (thanks to Tobias Rittweiler) * new feature: DIRECTORY has been extended with a non-standard keyword argument :RESOLVE-SYMLINKS. (thanks to TC-Rucho) * enhancement: SB-BSD-SOCKETS:MAKE-SOCKET-STREAM keyword argument handling has been robustified and documented better. (thanks to Robert Goldman) * optimization: faster generic arithmetic dispatch on x86 and x86-64. * optimization: FORMAT ~D and ~F are now approximately 5% faster. * tradeoff: constant FORMAT control strings are now compiled unless SPACE > SPEED (previously only when SPEED > SPACE.) * bug fix: Red Hat Enterprise 3 mmap randomization workaround. (thanks to Thomas Burdick) * bug fix: DEFCLASS and ENSURE-CLASS-USING-CLASS are now expected to be thread safe. * bug fix: lexical type declarations are now correctly reported by SB-CLTL2. (reported by Larry D'Anna) * bug fix: STRING-TO-OCTETS did not handle :START properly when using UTF-8 as external format. (thanks to Luis Oliveira) * bug fix: errors from invalid fill-pointer values to (SETF FILL-POINTER) are signalled correctly. (thanks to Stas Boukarev) * bug fix: SET-MACRO-CHARACTER accepts NIL as the readtable designator. (thanks to Tobias Rittweiler) * bug fix: SET-DISPATCH-MACRO-CHARACTER accepts NIL as the readtable designator, and returns T instead of the function. (thanks to Tobias Rittweiler) * bug fix: direct superclasses of STANDARD-CLASS and FUNCALLABLE-STANDARD-CLASS now default to STANDARD-OBJECT and FUNCALLABLE-STANDARD-OBJECT as required by AMOP. * bug fix: compiling a call to SLOT-VALUE with a constant slot-name when no class with the named slot yet exists no longer causes a compile-time style-warning. * bug fix: :ALLOCATION :CLASS slots are type-checked properly in safe code. (reported by Didier Verna) * bug fix: #430; nested structure constructors can stack allocate. * bug fix: on some 64-bit platforms dynamic space size was truncated to #xffff0000 bytes. (reported by Benjamin Lambert) * bug fix: setting *READ-SUPPRESS* to T no longer renders the default REPL unusable. (reported by Daniel Herring) * bug fix: return values of READ-SEQUENCE did not take :START into account on file streams, regressions since 1.0.12.22. (reported by Thomas Russ, patch by Paul Khuong) * bug fix: using SET or (SETF SYMBOL-VALUE) to change the value of a method specializer used to confuse permuation vector optimization. * bug fix: system inserted bogus implicit type declarations for local special variables in DEFMETHOD bodies. * bug fix: #354; duplicated frames in backtraces due to non-tail-call-optimized XEPs to functions with return type NIL have been elimited. * bug fix: #357; MAKE-INSTANCE/SHARED-INITIALIZE now initializes structure object slots according to DEFSTRUCT initforms, and DEFSTRUCT forms :INCLUDEind structure classes defined using DEFCLASS :METACLASS STRUCTURE-CLASS now inherit their initforms. (reported by Bruno Haible and Stephen Wilson) * bug fix: #395; fill-pointer output streams used now support element-type BASE-CHAR as well. * bug fix: compiler error when attempting to derive return value of ARRAY-ELEMENT-TYPE when the array type was a union of intersection types. * bug fix: address-spaces overlapped on OpenBSD. (thanks to Josh Elsasser) * bug fix: Mac OS X binaries should now be portable between Leopard and Tiger.
-
sbcl.1.0.2371590fff · ·
-
sbcl_1_0_2371590fff · ·
changes in sbcl-1.0.23 relative to 1.0.22: * enhancement: when disassembling method functions, disassembly for the associated fast function is also produced. * enhancement: system stores DEFTYPE lambda-lists, so DESCRIBE can report them. * optimization: printing with *PRINT-PRETTY* true is now more efficient as long as the object being printed doesn't require special handling by the pretty printer. * bug fix: slot symbol-macros from WITH-SLOTS inside DEFMETHOD bodies now interact correctly with type declarations. * partial bug fix: PCL detects infinite recursion during wrapper validation. (thanks to Attila Lendvai) * bug fix: #426; nested function calls are inlined properly. Previously if FOO was an inline function, in calls of the form (FOO (FOO ...)) the outer call was not inlined. * bug fix: long long arguments passed in registers to alien functions on PowerPC Linux and NetBSD are now handled correctly when preceded by SYSTEM-AREA-POINTERs. (reported by Josh Elsasser)
-
sbcl.1.0.228ece9940 · ·
-
sbcl_1_0_228ece9940 · ·
changes in sbcl-1.0.22 relative to 1.0.21: * minor incompatible change: LOAD-SHARED-OBJECT no longer by default looks for the shared object in the current directory, but passes the native namestring of the designated pathname to the operation system's shared object loading function as-it. * minor incompatible change: --disable-debugger toplevel option now takes effect before processing of initialization files and --eval or --load options. * new feature: new commandline argument: --script, which supports shebang lines. See documentation for details. (based on work by Kevin Reid) * new feature: SAVE-LISP-AND-DIE can save current values of --dynamic-space-size and --control-stack-size in the executable core, causing it to skip normal runtime option processing. See documentation for details. (thanks to Zach Beane) * enhancement: inoccous calls to EVAL or generic functions dispatching on subclasses of eg. STREAM no longer cause compiler notes to appear. * enhancement: the system no longer resignals errors from --load and --eval toplevel arguments as SIMPLE-ERRORS, which caused restarts associated with the original error to be lost. (thanks to Ariel Badichi) * enhancement: :DONT-SAVE keyword argument has been added to LOAD-SHARED-OBJECT for controlling interaction with SAVE-LISP-AND-DIE, and UNLOAD-SHARED-OBJECT can be used to undo the effects of an earlier LOAD-SHARED-OBJECT call. * bug fix: ADJUST-ARRAY on multidimensional arrays used bogusly give them a fill pointer unless :DISPLACED-TO or :INITIAL-CONTENTS were provided. (reported by Cedric St-Jean) * bug fix: circularity handling in the reader did not treat raw structure slots correctly. (reported by Cedric St-Jean) * bug fix: SERVE-EVENT occasionally signaled an error about bogus file descriptors when there were none. * bug fix: DEFINE-COMPILER-MACRO support of destructuring lambda-lists was broken. (reporteed by Willem Broekema) * bug fix: SB-EXT:NATIVE-NAMESTRING on Windows did not work on pathnames without a directory. * bug fix: COMPILE-FILE did not warn about undefined variable references at toplevel, and LOAD of the resulting fasl did not signal an error. * bug fix: functions with non-required arguments used to end up with (SB-C::&OPTIONAL-DISPATCH ...) as their name. * bug fix: redefining a function with non-required arguments didn't update the system's knowledge about its call signature properly. * bug fix: fixed #431; incompatible alien record type redefinitions are detected and handled. (reported by Neil Haven) * bug fix: using RESTRICT-COMPILER-POLICY with DEBUG 3 could cause PROGV miscompilation. (reported by Matthias Benkard, patch by Juho Snellman) * bug fix: on x86 and x86-64 backtraces were sometimes truncated after alien stack frames. * bug fix: strings passed to mk{s,d}temp lacked null termination
-
sbcl.1.0.21112ae055 · ·
-
sbcl_1_0_21112ae055 · ·
changes in sbcl-1.0.21 relative to 1.0.20: * new feature: the compiler is able to track the effective type of a generic function across method addition and removal. * new feature: SB-EXT:ATOMIC-INCF allows atomic incrementation of appropriately typed structure slots without locking. * new feature: SB-EXT:CALL-WITH-TIMING provides access to timing information like those gathered by TIME using a programming-friendly interface. * new feature: TIME reports time taken even if the form performs a non-local transfer of control. * enhancement: reduced conservativism on GENCGC platforms: on average 45% less pages pinned (measured from SBCL self build). * bug fix: SB-EXT:COMPARE-AND-SWAP on SYMBOL-VALUE can no longer mutate constant symbols or violate declaimed type of the symbol. * bug fix: SB-THREAD:SIGNAL-SEMAPHORE could fail to wakeup threads sleeping on the semaphore in heavily contested semaphores. * bug fix: semaphores and condition variables were not interrupt safe. * bug fix: SB-THREAD:CONDITION-WAIT doesn't allow waits on mutexes owned by other threads anymore. * bug fix: FIND on lists called KEY outside the specified subsequence. (reported by budden) * bug fix: LOG doesn't use single-float intermediate results when given mixed integer and double-float arguments, leading to better precision. (reported by Bob Felts) * bug fix: LOG with base zero returned values of inconsistent type.
-
sbcl.1.0.2033358586 · ·
-
sbcl_1_0_2033358586 · ·
changes in sbcl-1.0.20 relative to 1.0.19: * minor incompatible change: OPTIMIZE qualities SB-C::STACK-ALLOCATE-DYNAMIC-EXTENT, SB-C::STACK-ALLOCATE-VECTOR, and SB-C::STACK-ALLOCATE-VALUE-CELLS no longer exist. See documentation and SB-EXT:*STACK-ALLOCATE-DYNAMIC-EXTENT* for details. * documentation: some slot access efficiency guidelines have been added to the user manual. * optimization: ASSOC-IF, ASSOC-IF-NOT, MEMBER-IF, MEMBER-IF-NOT, RASSOC, RASSOC-IF, and RASSOC-IF-NOT are now equally efficient as ASSOC and MEMEBER. * optimization: calls to ASSOC, MEMBER, and RASSOC can be transformed to more efficient EQ-comparison versions more often. * optimization: enhanced derivation of DOLIST iteration variable type for constant lists. * optimization: constant folding of simple (LIST ...) forms as DOLIST arguments. * optimization: runtime lookup of function definitions can be elided in more cases, eg: (let ((x 'foo)) (funcall foo)). * optimization: compiler is able to derive the return type of (AREF (THE STRING X) Y) as being CHARACTER. * optimization: CLRHASH on empty hash-tables no longer does pointless work. (thanks to Alec Berryman) * optimization: REPLACE deftransforms don't punt when :START1 or :START2 is given * bug fix: compiling DESTRUCTURING-BIND on constant list arguments no longer emits a code deletion note. (reported by Andrew Gasparovic) * bug fix: bogus odd-number-of-keywords STYLE-WARNINGs from calls to functions with an odd number of &OPTIONAL arguments, a &REST argument, and one or more &KEY arguments at the call site. * bug fix: STYLE-WARNINGs for functions with both &OPTIONAL and &KEY arguments appeared at call sites as well. * bug fix: fixed #425; CLOSE drops input buffers from streams, so READ-LINE &co can no longer read from them afterwards. (reported by Damien Cassou) * bug fix: fixed #427: unused local aliens no longer cause compiler breakage. (reported by Stelian Ionescu, Andy Hefner and Stanislaw Halik) * bug fix: non-local exit from a WITH-ALIEN form no longer causes alien-stack leakage. (reported by Andy Hefner) * bug fix: PROGV signals an error when an attempt to violate declared type of a variable or bind a constant is made. * bug fix: SET signals an error when an attempt to violate declared type of a variable is made. * bug fix: restart computation during the execution of a restart test function no longer causes infinite recursion. (reported by Michael Weber) * bug fix: calling SB-COVER:REPORT with a non-directory pathname now signals an error. (thanks to Pierre Mai) * bug fix: EXPORT left symbol unexported in conflict situations. (thanks to Michael Weber) * bug fix: correctly handle name conflicts involving CL:NIL. (thanks to Michael Weber) * bug fix: RESOLVE-CONFLICT restart for name conflicts handles conflicts arising from USEing package with conflicting symbols correctly. (thanks to Michael Weber)