FPS, ForeignPtr and GHC 6.6
simonmarhaskell at gmail.com
Fri Apr 21 09:57:47 EDT 2006
Bulat Ziganshin wrote:
> Hello Simon,
> Friday, April 21, 2006, 3:44:17 PM, you wrote:
>>The point is that you can't implement all the operations in FPS using a
>>ByteArray# representation, so that's a bogus comparison.
> that operations can't be implemented with pinned byte arrays? i think
> only mmap support?
Many of the operations in "Low-level constructors"
>>ForeignPtr is the right thing!
> they are slower in 6.4
Performance with 6.4 isn't a priority, since the library is going into
6.6. By all means write a version that works better with 6.4 in the
> data ForeignPtrContents
> = PlainForeignPtr !(IORef [IO ()])
> | MallocPtr (MutableByteArray# RealWorld) !(IORef [IO ()])
> you mean adding 3rd variant here:
> | PlainMallocPtr (MutableByteArray# RealWorld)
> btw, i still wondering - that is the difference between
> MutableByteArray# and ByteArray# ? :)
ByteArray# doesn't have the state parameter, it can be read outside of
the IO/ST monads. The point is to add a little type safety, it doesn't
have any impact on the implementation.
More information about the Libraries