Steel Bank Common Lisp Changelog

What's new in Steel Bank Common Lisp 1.2.6

Dec 9, 2014
  • enhancement: SERVE-EVENTS uses the poll() system call in lieu of select() if the OS has the former. Previously poll() was used only if waiting on exactly one file descriptor.
  • enhancement: efficiency of access to untagged structure slots is improved on x86-64, and the order of slots in memory is exactly as specified by defstruct, simplifying use of structures as arguments to foreign calls.
  • bug fix: SB-DEBUG:ARG now works in all TRACE options which evaluate forms. (lp#1357826)
  • bug fix: GC memory corruption during internal memory handling.
  • bug fix: duplicate effective-slot-definition objects as compared by EQ on name could be present in CLASS-SLOTS of a class whose metaclass was structure-class or condition-class. (lp#1049423)
  • bug fix: HANDLER-BIND with empty bindings works again; regression in 1.2.5. (lp#1388707)
  • bug fix: ATOMIC-INCF works on structure slots in interpreted code. (lp#1381867)
  • bug fix: MAKE-ARRAY properly handles character types like (eql #\a) and (member #\a #\c). (lp#1392068)
  • bug fix: READ sometimes accidentally preserved a whitespace character after a token when it should not have. (lp#327790)

New in Steel Bank Common Lisp 1.1.13 (Oct 31, 2013)

  • optimization: better distribution of SXHASH over small conses of related values. (#309443)
  • other improvements to SXHASH:
  • use the whole of the positive-fixnum range for SXHASH of fixnums
  • enhancement: The error message when calling an undefined alien function includes the name of the function on x86-64.
  • enhancement: sb-ext:run-program now supports :environment on Windows.
  • enhancement: ASDF is no longer required to load contribs at runtime. (#1132254)
  • enhancement: when called with a symbol, FIND-RESTART no longer calls COMPUTE-RESTARTS, making it faster and cons less (#769615)
  • enhancement: FIND-RESTART and COMPUTE-RESTARTS handle huge restart clusters better in some cases
  • enhancement: SOME/ANY/other quantification higher-order functions no longer cons. (#1070635)
  • bug fix: forward references to classes in fasls can now be loaded. (#746132)
  • bug fix: don't warn on a interpreted->compiled function redefinition from the same location. (patch by Douglas Katzman, #1042405)
  • bug fix: Create vectors of proper internal length when reading literal vectors from FASLs. (Reported by Jan Moringen)
  • bug fix: COMPILE can now succefully compile setf functions. (Reported by Douglas Katzman)
  • bug fix: run-program performs more correct escaping of arguments on Windows. (#1239242)
  • bug fix: function-lambda-expression on generic functions returns the actual name.
  • bug fix: (the [type] [constant]) now warns when [constant] matches [type] except for the number of values. (Reported by Nathan Trapuzzano on sbcl-help)
  • bug fix: signal errors in required cases of slot-definition initialization protocol. (#309072)
  • bug fix: run-sbcl.sh works better in the presence of symlinks on OS X. (thanks to Stelian Ionescu, #1242643)
  • bug fix: when given a restart object, FIND-RESTART checks whether the restart is active and, when a condition is supplied, whether the restart is associated to a different condition (#774410)

New in Steel Bank Common Lisp 1.1.12 (Oct 10, 2013)

  • enhancement: Add sb-bsd-sockets:socket-shutdown, for calling shutdown(3). (thanks to Jan Moringen, #1207483)
  • enhancement: document extensible sequences. (thanks to Jan Moringen, #994528)
  • optimization: EQUAL and EQUALP transforms are smarter. (thanks to Elias Martenson, #1220084)
  • optimization: CHAR-EQUAL is faster for constant and base-char arguments.
  • bug fix: probe-file now can access symlinks to pipes and sockets in /proc/pid/fd on Linux. (reported by Eric Schulte)
  • bug fix: SBCL can now be built on Solaris x86-64.
  • bug fix: Floating point exceptions do not persist on Solaris anymore.
  • bug fix: (setf . a) is pprinted correctly (reported by Douglas Katzman).
  • bug fix: handle compiler-error in LOAD when it's not run from inside EVAL. (#1219601)
  • bug fix: SB-GMP:MPZ-POW no longer segfaults given a non-bignum base. (thanks to Stephan Frank)
  • bug fix: space allocation of result bignums in SB-GMP is more accurate. (thanks to Stephan Frank, #1206191)
  • bug fix: sb-safepoint can now reliably handle signal interruptions of foreign code. (#1133018)
  • bug fix: the compiler-macro for MAKE-INSTANCE when emitting "fallback" constructors no longer fails to merge actual and default initargs (thanks to Jan Moringen, #1179858)
  • bug fix: the compiler-macro for MAKE-INSTANCE when emitting "fallback" constructors handles non-KEYWORD initialization arguments more correctly.
  • bug fix: loading the SB-SIMPLE-STREAMS contributed module no longer clobbers FILE-NAMESTRING. (thanks to Anton Kovalenko, #884603)
  • bug fix: class definitions with CPLs inconsistent with their metaclasses are less likely to destroy the object system's integrity. (#309076)
  • bug fix: restart clause parsing in RESTART-CASE is more in line with the standard. (#1203585, thanks to Jan Moringen)
  • bug fix: silence a note from RESTART-CASE under high-SPEED optimization settings. (#1023721)
  • bug fix: getting the order of arguments to SB-MOP:SET-FUNCALLABLE-INSTANCE-FUNCTION wrong produces a sensible error rather than a failed AVER. (reported by Paul Nathan)
  • bug fix: Parsing of &optional/&key/&rest arguments now never overwrites arguments during copying on x86 and x86-64; it may still happen on other platforms when there are more fixed arguments than stack slots. (reported by Jan Moringen)

New in Steel Bank Common Lisp 1.0.52 (Oct 9, 2011)

  • enhancement: ASDF has been updated to version 2.017.
  • enhancement: the --core command line option now accepts binaries with an embedded core.
  • enhancement: when built with :sb-core-compression, core files (regular or executable) can be compressed with zlib. Use the :COMPRESSION argument to SAVE-LISP-AND-DIE to specify a compression level.
  • enhancement: --[no-]merge-core-pages determines whether the runtime hints the operating system that identical core pages between SBCL processes should share the same physical memory. Default is to only enable this for compressed cores.
  • optimization: SLEEP no longer conses.
  • optimization: *PRINT-PRETTY* no longer slows down printing of strings or bit-vectors when using the standard pretty-print dispatch table.
  • bug fix: non-function FTYPE declarations no longer cause a compiler-error. (#738464)
  • bug fix: compiler-errors causes by MEMBER types in conjunction with with AREF, CHAR, etc. (#826971)
  • bug fix: compiler-errors causes by integer arguments with composed of multiple ranges to ARRAY-IN-BOUNDS-P. (#826970)
  • bug fix: ,@ and ,. now signal a read-time error for certain non-list expressions. (#770184)
  • bug fix: complex single float literals are correctly aligned when used as arguments of arithmetic operators.
  • bug fix: on 32-bit platforms, rounding of double floats larger than a fixnum is correct. (reported by Peter Keller)
  • bug fix: stray FD-HANDLERs are no longer left lying around after unwinds from RUN-PROGRAM. (#840190, reported by Dominic Pearson; fix from Max Mikhanosha)
  • bug fix: redefining classes such that slots with custom allocation are added or removed works again.

New in Steel Bank Common Lisp 1.0.50 (Jul 12, 2011)

  • enhancement: errors from FD handlers now provide a restart to remove the offending handler.
  • enhancement: SB-INTROSPECT:FIND-DEFINITION-SOURCE now works on structure copiers as well.
  • enhancement: location of user or system initialization file can now easily be customized for saved cores. See: SB-EXT:*USERINIT-PATHNAME-FUNCTION* and SB-EXT:*SYSINIT-PATHNAME-FUNCTION*.
  • enhancement: SB-EXT:MAKE-THREAD accepts an argument list designator for the thunk, as a keyword argument, :arguments.
  • enhancement: constraint propagation is simplified (and sped up) when COMPILATION-SPEED > SPEED.
  • enhancement: SB-ALIEN exports alien type specifiers SIZE-T and OFF-T.
  • enhancement: debugger understands &MORE arguments better.
  • optimization: extracting bits of a single-float on x86-64 has been optimized. (#555201)
  • optimization: MAP and MAP-INTO are more efficient for non-simple vectors, when (> SPEED SPACE).
  • optimization: local call trampolines (x86 and x86-64) are emitted inline.
  • optimization: implicit value cells for dynamic-extent closed-over bindings on x86 and x86-64 can hold unboxed values as well.
  • meta-optimization: improved compilation speed, especially for large functions. (#792363 and #394206)
  • bug fix: bound derivation for floating point operations is now more careful about rounding possibly closing open bounds. (#793771)
  • bug fix: SB-POSIX:SYSCALL-ERROR's argument is now optional. (accidental backwards incompatible change in 1.0.48.27)
  • bug fix: occasional debugger errors in when a type-error occured in a function with dynamic-extent &rest list.
  • bug fix: &optional and &key supplied-p arguments in DEFSTRUCT boa-construtors can be used to initialized structure slots.
  • bug fix: FMAKUNBOUND removes the MACRO-FUNCTION, should one exist. (#795705, regression)
  • bug fix: DIRECTORY works better on logical pathnames.
  • bug fix: RUN-PROGRAM no longer fails spuriously when argument strings are of the order of ARRAY-TOTAL-SIZE-LIMIT. (#787237)
  • bug fix: the compiler no longer constant-folds NaNs in MAKE-{SINGLE,DOUBLE}-FLOAT. (#486812)
  • bug fix: FORMAT now handles floating point rounding correct, eg. (format nil "~,1F" 0.01) => "0.0" instead of "0.01" as previously. (#308961)
  • bug fix: style warning during lambda-list introspection of generic functions with both optional and key argments.
  • bug fix: regalloc doesn't barf on unused TNs due to type-directed constant folding. (#729765)
  • bug fix: Fixed an off-by-one in MAP-ALLOCATED-OBJECTS that might have caused infinite loops.

New in Steel Bank Common Lisp 1.0.49 (Jun 6, 2011)

  • Lots of enhancements and fixes were made.
  • One minor incompatible change was made pertaining to interrupt handling in hash table code.

New in Steel Bank Common Lisp 1.0.46 (Feb 21, 2011)

  • enhancement: largefile support on Solaris.
  • enhancement: SB-PROFILE:REPORT now supports :LIMIT and :PRINT-NO-CALL-LIST arguments (#710017)
  • enhancement: SB-PCL:+SLOT-UNBOUND+ is exported, making it possible to distinguish unbound instance slots when using STANDARD-INSTANCE-ACCESS &co. (#718039)
  • optimization: ERROR and CERROR are approximately 5 times faster.
  • optimization: optimized constructors are used for MAKE-INSTANCE of classes with applicable non-standard (SETF SLOT-VALUE-USING-CLASS), SLOT-BOUNDP-USING-CLASS, and INITIALIZE-INSTANCE :AROUND methods, speeding up instance creation in those cases.
  • optimization: arithmetic operations with multiple constant arguments in now have them reduced at compile-time. (#676414)
  • optimization: determining current character position on string-streams for pretty-printing was overly slow.
  • bug fix: local tail calls to DYNAMIC-EXTENT functions can no longer cause lifetime analysis to overwrite closed-over variables (#681092).
  • bug fix: encoding errors from some multibyte external formats such as EUC-JP were not handled correctly (#713063).
  • bug fix: printing waitqueue objects without setting *PRINT-CIRCLE* to T is now safe (#673630).
  • bug fix: Solaris/x86-64 wasn't getting built with lutex support by mistake. (#667297).
  • bug fix: CONSTANTLY generated functions had bogus lambda-lists. (#713626)
  • bug fix: RUN-PROGRAM :PTY option was racy on OpenBSD. (#669485)
  • bug fix: UNINTERN takes a symbol, not a symbol designator -- could previously unintern the wrong symbol with the same name. (#693796)
  • bug fix: COPY-PPRINT-DISPATCH always has access to a pristine table, making it possible to restore the initial table if it has been messed up. (#678409)

New in Steel Bank Common Lisp 1.0.43 (Sep 30, 2010)

  • incompatible change: FD-STREAMS no longer participate in the serve-event event-loop by default. (#316072)
  • In addition to streams created by explicit calls to MAKE-FD-STREAM this affects streams from CL:OPEN.
  • Streams from SOCKET-MAKE-STREAM still participate in serve-event by default, but this is liable to change: applications needing serve-event for socket streams should explicitly request it using :SERVE-EVENTS T in the call.
  • enhancement: SB-EXT:WORD type is provided for use with SB-EXT:ATOMIC-INCF &co.
  • enhancement: CLOS effective method functions and defclass slot typechecking function now have debug names for use in backtraces and profiles.
  • enhancement: ASDF has been updated to version 2.004. (#605260, thanks to Faré Rideau)
  • enhancement: symbols are printed using fully qualified names in several error and warning messages which are often associated with package conflicts or mixups (#622789, thanks to Attila Lendvai)
  • bug fix: SB-BSD-SOCKETS:SOCKET-CONNECT was not thread safe. (#505497, thanks to Andrew Golding)
  • bug fix: reading /proc files on Linux works. (#425199)
  • bug fix: DOTIMES accepted literal non-integer reals. (#619393, thanks to Roman Marynchak)
  • bug fix: WRITE-TO-STRING compiler macro binding special variable names, breaking code that tried to write the value of a printer control variable. (#581564, thanks to Stas Boukarev)
  • bug fix: WRITE compiler macro did not handle output stream designators correctly. (#598374, thanks to Stas Boukarev)
  • bug fix: better availability of names of foreign functions in backtraces on Linux. (#626962, thanks to Stas Boukarev)
  • bug fix: scripting and build for Solaris and FreeBSD. (#615497, #627581, thanks to Josh Elsasser and Jim Wise)
  • bug fix: build fixes for OpenBSD -current and 4.8 (#615489, #615492, thanks to Josh Elsasser)
  • bug fix: using aliases for builtin classes as defmethod specializers without adding DEFTYPEs for them works. (#618387)
  • bug fix: timetravel by getrusage() no longer causes type-errors during GC. (#544421)
  • bug fix: legally dynamic-extent lists and vectors used as initialization arguments to MAKE-ARRAY can be stack allocated. (#586105)
  • bug fix: inline-expansion creating references to dead lambda-variables (#454681, thanks to Alexey Dejneka)
  • bug fix: better error message for bogus numerical arguments to RANDOM. (#598986, thanks to Stas Boukarev)
  • bug fix: the compiler occasionally inlined references from incompatible environments occurs. (#308951)
  • bug fix: the compiler threw an error when trying to compile a local function (labels or flet) known to take a specialized complex argument. (not in launchpad, reported by sykopomp in #lispgames)
  • bug fix: package-locks failed to protect against compile-time effects of DEFUN when the symbol previously had a macro definition. (#576637)
  • bug fix: spurious ignore warnings even given (DECLARE IGNORE) in methods when parameter bindings mutated. (reported by Faré Rideau; lp #611361)
  • bug fix: workaround for compiler hang in ORDER-UVL-SETS (#308914)
  • bug fix: evaluation in debugger REPL works using the global context when in frames that do not have sufficient debug information.
  • bug fix: exceeding FD_SETSIZE limit now results in an sensible error (#316068)
  • bug fix: (SETF DOCUMENTATION) of a macro works properly. (#643958, thanks to Stas Boukarev)
  • bug fix: interrupt taking longer than the requested period caused SLEEP to hang on Darwin. (#640516, thanks to Joe Lebroco for the analysis)

New in Steel Bank Common Lisp 1.0.42 (Aug 30, 2010)

  • build changes
  • Cross-compilation host is now specified to make.sh using command-line argument --xc-host=< command > instead of a positional argument. (thanks to Daniel Herring)
  • Install location can be specified to make.sh using command-line argument --prefix= < path >. (#550889s, thanks to Daniel Herring)
  • optimization: The default implementation of COMPUTE-DISCRIMINATING-FUNCTION does much less wasted work.
  • enhancement: Explicit memory barrier operations are now available for use by multithreaded code. See documentation for details.
  • enhancement: Experimental support for threading on Linux/PPC.
  • bug fix: RENAME-PACKAGE returns the package. (Thanks to Eric Marsden)
  • bug fix: EXPT signals an error if first argument is a zero and second argument is a floating point zero. (#571581, thanks to Roman Marynchak)
  • bug fix: DEFTYPE signals an error for non-list lambda-lists. (#576594, thanks to Roman Marynchak)
  • bug fix: make ASDF-INSTALL compatible with the now-included ASDF2. (#612998, reported by Phil Hargett; patch from Jim Wise)

New in Steel Bank Common Lisp 1.0.41 (Jul 30, 2010)

  • This version adds two optimizations and one fix.

New in Steel Bank Common Lisp 1.0.40 (Jul 1, 2010)

  • Fixed four bugs

New in Steel Bank Common Lisp 1.0.35 (Feb 5, 2010)

  • optimization: ROUND with a single single-float or double-float argument is properly inlined when possible.
  • optimization: Slightly better code is generated for integerfloat conversions and for single-floatdouble-float conversions on x86-64.
  • optimization: SB-ROTATE-BYTE:ROTATE-BYTE now generates more efficient code for 32-bit and 64-bit rotations on x86-64.
  • bug fix: The install script changes the ownership of directories as well as files for contrib modules using asdf. (thanks to Eugene Ossintsev; launchpad bug #508485)
  • bug fix: TRUNCATE with a single single-float or double-float argument is properly inlined when possible. (launchpad bug #489388)
  • bug fix: Passing a rotation count of zero to SB-ROTATE-BYTE:ROTATE-BYTE no longer causes a compiler error on x86 and ppc.
  • bug fix: GET-MACRO-CHARACTER bogusly computed its second return value always relative to *READTABLE* rather than the passed argument.

New in Steel Bank Common Lisp 1.0.33 (Dec 3, 2009)

  • new port: support added for x86-64 NetBSD. (thanks to Aymeric Vincent)
  • improvement: support O_LARGEFILE access to files larger than 2GB on x86-64/linux. (thanks to Daniel Janus; launchpad bug #453080)
  • new feature: SB-INTROSPECT:WHO-SPECIALIZES-DIRECTLY to get a list of definitions for methods specializing on the passed class itself.
  • new feature: SB-INTROSPECT:WHO-SPECIALIZES-GENERALLY to get a list of definitions for methods specializing on the passed class itself, or on subclasses of it.
  • new build flag: :sb-xref-for-internals; SBCL will collect xref information about itself during the build (e.g. for M-? in Slime), if this flag is enabled in customize-target-features.lisp. This will increase the core size by about 5-6mb, though, so it's mostly interesting to SBCL developers.
  • new feature: various GENCGC tuning parameters have been experimentally documented and exported from SB-EXT. See documentation for details.
  • fixes and improvements related to Unicode and external formats:
  • the Unicode character database has been upgraded to the Unicode 5.2 standard, giving names and properties to a number of new characters, and providing a few extra characters with case transformations.
  • improvement: restarts for providing replacement input/output on coding errors for fd-stream external formats.
  • improvement: where : is a keyword corresponding to an external format the system supports, it is now possible to specify (: :replacement ) as an external format which will automatically substitute on encoding or decoding errors for streams and for STRING-TO-OCTETS and its inverse. (launchpad bug #317072)
  • improvement: the file streams underlying the standard streams (such as *STANDARD-INPUT*, *TERMINAL-IO*) are opened with an external format which uses the replacement mechanism to handle encoding errors, preventing various infinite error chains and unrecoverable I/O confusion.
  • minor incompatible change: the utf-8 external format now correctly refuses to encode Lisp characters in the surrogate range (char-codes between #xd800 and #xdfff).
  • fix a typo preventing conversion of strings into octet vectors in the latin-2 encoding. (reported by Attila Lendvai; launchpad bug #471689)
  • fix a bug in the octet multibyte handling of decoding errors and the USE-VALUE restart. (launchpad bug #314939)
  • fix the bug underlying the expected failure in the FORCE-END-OF-FILE restart on fd-stream decoding errors.
  • fix a bug in the ATTEMPT-RESYNC fd-stream decoding restart when the error is near the end of file.
  • fix a double-error case in unibyte octet conversions, when the first use of USE-VALUE is ignored.
  • fix bugs in handling of undefined code points in unibyte encodings.
  • fix LISTEN (and consequent hangs in READ-CHAR-NO-HANG) on bivalent streams after an UNREAD-CHAR.
  • enhancement: SB-INTROSPECT:ALLOCATION-INFORMATION also reports if the object is allocated in a boxed region of dynamic space.
  • enhancement: SB-POSIX:FORK now signals an error if an attempt to fork with multiple Lisp threads running is made, instead of going ahead with unpredictable consequences. (reported by Leslie Polzer)
  • bug fix: uses of slot accessors on specialized method parameters within the bodies of SLOT-VALUE-USING-CLASS methods no longer triggers a type error while finalizing the class. This fix may cause classes with slot accessors to be finalized later than previously. (reported by Lars Rune Nøstdal; launchpad bug #473699)
  • bug fix: restore buildability on the MIPS platform. (regression from 1.0.30.38, reported by Samium Gromoff)
  • bug fix: inspecting closures is less likely to fail with a type error.
  • bug fix: no timer starvation when setting the system clock back. (launchpad bug #460283)
  • bug fix: WITH-STANDARD-IO-SYNTAX now binds *PRINT-PPRINT-DISPATCH* to the standard pprint dispatch table as specified by CLHS.
  • bug fix: give CLISP a hint about a type declaration to enable it to build the cross-compiler without warnings. (thanks to Josh Elasser; launchpad bug #396597)
  • bug fix: correctly dump literal objects in defaulting forms of arglists. (reported by Attila Lendvai; launchpad bug #310132)
  • bug fix: distinguish in type specifiers between arrays that might be complex and arrays that are definitely complex. (launchpad bug #309129)
  • bug fix: SUBTYPEP knows that the SYMBOL type is not SUBTYPEP the KEYWORD type. (reported by Levente Mészáros; launchpad bug #485972)
  • bug fix: setting the value of a symbol-macro within a method in the presence of type declarations works properly again. (reported by Iban Hatchondo; launchpad bug #485019)

New in Steel Bank Common Lisp 1.0.31 (Aug 31, 2009)

  • A large number of fixes, improvements, and optimizations were made.
  • As a new feature, the experimental :EMIT-CFASL parameter to COMPILE-FILE can be used to output toplevel compile-time effects into a separate .CFASL file.

New in Steel Bank Common Lisp 1.0.29 (Jun 4, 2009)

  • 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 [email protected] (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.

New in Steel Bank Common Lisp 1.0.27 (Apr 3, 2009)

  • 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)

New in Steel Bank Common Lisp 1.0.26 (Mar 10, 2009)

  • Bugfixes, enhancements, and optimizations.
  • Some incompatible changes were introduced in this release.

New in Steel Bank Common Lisp 1.0.23 (Dec 1, 2008)

  • 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)

New in Steel Bank Common Lisp 1.0.22 (Oct 31, 2008)

  • SAVE-LISP-AND-DIE can now save current values of --dynamic-space-size and --control-stack-size in the executable core, causing it to skip normal runtime option processing.
  • This allows saved executables to fully customize their own commandline processing.
  • A new commandline argument --script has been added, which supports shebang lines.