Re: expose strlen from Foreign.C.String
Zemyla <[email protected]>
| Newsgroups | gmane.comp.lang.haskell.libraries |
|---|---|
| Message-ID | <CAK7nUjgP=u3i3rwiP6ANkSY-MsSeqduNCtHobw+jqFZa3UnqKA@mail.gmail.com> |
That doesn't sound right. I don't think it allocates any data on the heap which could cause reallocation and move an unpinned ByteArray#, which is the only way I can think it would be unsafe. On Thu, Jan 21, 2021, 17:50 Andrew Martin <[email protected]> wrote: > Both the unboxed variant and the wrapper are only sound on primitive > string literals. You cannot use them on anything that was allocated at > runtime, only on stuff baked into the rodata section. This is a pretty > onerous restriction. What use case did you have in mind? > > Sent from my iPhone > > > On Jan 20, 2021, at 11:02 PM, Viktor Dukhovni <[email protected]> > wrote: > > > > > >> > >>> On Jan 21, 2021, at 1:39 AM, chessai <[email protected]> wrote: > >>> On Wed, Jan 20, 2021, 17:01 Viktor Dukhovni <[email protected]> > wrote: > >>>> On Wed, Jan 20, 2021 at 09:54:30AM -0800, chessai wrote: > >>>> > >>>> I've wanted the following before: > >>>> > >>>> foreign import ccall unsafe "strlen" > >>>> cstringLength# :: Addr# -> Int# > >>>> > >>>> cstringLength :: CString -> Int > >>>> cstringLength (Ptr s) = I# (cstringLength# s) > >>>> > >>>> A natural place for this seems to be Foreign.C.String. > >>> > >>> Why a new FFI call, rather than `cstringLength#` from ghc-prim: > GHC.CString > >>> (as of GHC 9.0.1): > >> > >> I forgot about that addition. In that case we would just need the > lifted wrapper > > > > No worries, sure the lifted wrapper makes sense, and Foreign.C.String > does > > look like a reasonable place in which to define, and from which to > export it. > > > > -- > > Viktor. > > > > _______________________________________________ > > Libraries mailing list > > [email protected] > > http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries > _______________________________________________ > Libraries mailing list > [email protected] > http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries > _______________________________________________ Libraries mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries