He provided build fixes, in particular to tame the SunOS toolchain,
and has fixed many (stream-related and other) bugs besides.
+Juho Snellman:
+ He provided several performance enhancements, including a better hash
+ function on strings, and removal of unneccessary bounds checks.
+
Brian Spilsbury:
He wrote Unicode-capable versions of SBCL's character, string, and
stream types and operations on them.
* optimization: the hash algorithm for strings has changed to one
that is less vulnerable to spurious collisions. (thanks to Juho
Snellman)
+ * optimization: VECTOR-POP, VECTOR-PUSH-EXTEND and REPLACE do less
+ needless bounds checking. (thanks to Juho Snellman)
* optimization: implemented multiplication as a modular
(UNSIGNED-BYTE 32) operation on the PPC backend.
* fixed some bugs revealed by Paul Dietz' test suite:
(declare (fixnum fill-pointer))
(when (= fill-pointer (%array-available-elements vector))
(adjust-array vector (+ fill-pointer extension)))
- (setf (aref vector fill-pointer) new-element)
+ ;; disable bounds checking
+ (locally (declare (optimize (safety 0)))
+ (setf (aref vector fill-pointer) new-element))
(setf (%array-fill-pointer vector) (1+ fill-pointer))
fill-pointer))
(declare (fixnum fill-pointer))
(if (zerop fill-pointer)
(error "There is nothing left to pop.")
- (aref array
- (setf (%array-fill-pointer array)
- (1- fill-pointer))))))
+ ;; disable bounds checking (and any fixnum test)
+ (locally (declare (optimize (safety 0)))
+ (aref array
+ (setf (%array-fill-pointer array)
+ (1- fill-pointer)))))))
+
\f
;;;; ADJUST-ARRAY
(1- source-index)))
((= target-index (the fixnum (1- target-start))) target-sequence)
(declare (fixnum target-index source-index))
+ ;; disable bounds checking
+ (declare (optimize (safety 0)))
(setf (aref target-sequence target-index)
(aref source-sequence source-index))))
(do ((target-index target-start (1+ target-index))
(= source-index (the fixnum source-end)))
target-sequence)
(declare (fixnum target-index source-index))
+ ;; disable bounds checking
+ (declare (optimize (safety 0)))
(setf (aref target-sequence target-index)
(aref source-sequence source-index)))))
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.8.29"
+"0.8.8.30"