the symbol, prohibits both lexical and dynamic binding. This is mainly an
efficiency measure for threaded platforms, but also valueable in
expressing intent.
+ * 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: 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.
+ 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)