Subject: Shared arrays are incompatible with bytevector accessors
From: Panicz Maciej Godek <[email-masked]>
To: [email-masked]
Date: Fri, 8 Aug 2014 16:48:08 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Creating a shared array based on a bytevector results with an object
whose print representation is identical with a print-representation of
a bytevector:

(define bv #vu8(0 1 2 3))

(define bv/shared
  (make-shared-array bv (lambda(i)(list (+ i 2))) '(0 1)))
bv/shared
====> #vu8(2 3)

However, accessing these "shared bytevectors" using the bytevector api
is impossible:

(bytevector-u8-ref bv/shared 0)
====> error: wrong type argument in position 1 (expecting bytevector): #vu8(2 3)

Since the print-representation is identical, this behaviour is
unexpected. Furthermore, the lack of capability of creating shared
bytevectors limits their usefullness. On the other hand, if the shared
bytevector remains contiguous, there should be no performance
concerns.