Coercing a `ByteArray#` into a `MutableByteArray#`

Sam Derbyshire sam.derbyshire at gmail.com
Mon Jul 24 18:37:28 UTC 2023


Indeed, this is what the `primitive` package provides to thaw a
`ByteArray#` without copying:

https://hackage.haskell.org/package/primitive-0.8.0.0/docs/src/Data.Primitive.ByteArray.html#unsafeThawByteArray

On Mon, 24 Jul 2023, 20:17 chessai, <chessai1996 at gmail.com> wrote:

> Hi Adithya,
>
> The representations are the same. You can do this. I do this somewhat
> often. Just avoid mutating in places where it could result in funky stuffs.
> This is usually pretty easy to spot.
>
> Cheers,
> chessai
>
> On Mon, Jul 24, 2023, 12:59 Adithya Kumar <adi.obilisetty at gmail.com>
> wrote:
>
>> Hello all,
>>
>> I have a use-case where I want to convert `ByteArray#` to
>> `MutableByteArray#`
>> without the copy overhead.
>>
>> Is the underlying memory structure of `ByteArray#` and
>> `MutableByteArray#` the
>> same?
>>
>> If I can guarantee that I won't mutate my `MutableByteArray#`, can I use
>> `unsafeCoerce#` on `ByteArray#` and treat it as `MutableByteArray#`?
>>
>> Best,
>> Adithya
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20230724/707426d9/attachment.html>


More information about the ghc-devs mailing list