anchor.diff:  
   (define-constant +bytes-per-iobuf+ 4096)
   
  -;;; FIXME: make this right
  -;;; probably not all SIMPLE-ARRAYs are admissible
  -;;; on all implementations
  -(deftype compatible-lisp-array ()
  -  '(simple-array * (*)))
  -
  -(declaim (inline allocate-iobuf iobuf-length iobuf-start-pointer
  -                 iobuf-end-pointer iobuf-end-space-length
  -                 iobuf-empty-p iobuf-full-p
  -                 iobuf-reset iobuf-copy-data-to-start
  -                 bref (setf bref) iobuf-copy
  -                 iobuf-pop-octet iobuf-push-octet))
  -
   (defun make-iobuf (&optional (size +bytes-per-iobuf+))
     (let ((b (%make-iobuf)))
  -    (setf (iobuf-data b) (foreign-alloc :uint8 :count size)
  +    (setf (iobuf-data b) (make-array size :element-type 'ub8)
             (iobuf-size b) size)
       (values b)))
   
  
positive.code:   (declare (type iobuf iobuf))
    (- (iobuf-end iobuf)
       (iobuf-start iobuf)))
  
  (defun iobuf-start-pointer (iobuf data-pointer)
    (declare (type iobuf iobuf)
             (type cffi:foreign-pointer))
    (inc-pointer data-pointer (iobuf-start iobuf)))
  
  (defun iobuf-end-pointer (iobuf data-pointer)
    (declare (type iobuf iobuf)
             (type cffi:foreign-pointer))
    (inc-pointer data-pointer (iobuf-end iobuf)))
  
  (defun iobuf-empty-p (iobuf)
    (declare (type iobuf iobuf))
  
negative.code:   (declare (type iobuf iobuf))
    (setf (iobuf-start iobuf) 0
          (iobuf-end iobuf)   0))
  
  
  ;;;
  ;;; UNSAFE functions which *DO NOT* check boundaries
  ;;; that must be done by their callers
  ;;;
  
  (defun bref (iobuf index)
    (declare (type iobuf iobuf)
             (type iobuf-index index))
  