random-state.net

Nikodemus Siivola

<< next | top | previous >>

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.