SBCL 1.0.4.109 frozen #
hacking, April 22nd 2007
SBCL 1.0.5 is due to be released in a week or so, and the CVS HEAD is now frozen for a testing period of one week.
If you follow SBCL development casually you probably know that this is business as usual — freeze, test, release once per month. However, if you don't follow SBCL development too keenly you may have missed the incredible flurry of improvements we have seen this past month: 109 discrete commits in a month is an all time record for SBCL as far as I can tell.
So, now is a very good time to check out SBCL from the CVS and test your stuff with it. ...and of course report any new bugs or regresssions to sbcl-help.
What's different from 1.0.4? Lots! Here are some of my favorites:
- optimization: REPLACE, SUBSEQ, and COPY-SEQ are now optimized in more cases.
- optimization: the non-inlined generic versions of AREF and (SETF AREF) are significantly faster.
- optimization: new STRING-OUTPUT-STREAM implementation is much faster for large outputs and conses 30% less on average.
In particular the first item of the above list means that SBCL now fully inlines the REPLACE in the following:
(defun blit (target source) (declare (type (simple-array (unsigned-byte 8) (*)) source target)) (replace target source))
By contrast, 1.0.4 leaves in a full call to an internal function that actually does the byte-blitting. The new generated code is both smaller and more efficient — not to mention non-consing.