On Thu, 2009-12-24 at 18:18 -0500, Antoine Latter wrote:
> Folks,
> 
> I found some of the documentation in GHC.Prim confusing - so I thought
> I'd share. The documentation for the ByteArray# type[1] explains
> that's it's a raw region in memory that also remembers it's size.
> 
> Consequently I expected sizeOfByteArray# to return the same number
> that I passed in to newByteArray#. But it doesn't - It returned
> however much it decided to allocate, which on my platform is always a
> multiple of four bytes.

Yes, this is an artefact of the fact that ghc measures heap stuff in
units of words.

> This is something which could be clarified in the documentation.

It would be jolly useful for making short strings for GHC's ByteArray#
to to use a byte length rather than a word length. It'd mean a little
more bit twiddling in the GC code that looks at ByteArray#s, however
it'd save an extra 2 words in a short string type (or allow us to store
'\0' characters in short strings).

It's been on my TODO list for some time to design a portable low level
ByteArray module that could be implemented by hugs, nhc, ghc, etc. The
aim would be to be similar to ForeignPtr + Storable but using native
heap allocated memory blocks.

In turn this would be the right portable layer on which to build
ByteString, Text and probably IO buffers too.

Duncan

_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to