[GHC] #8281: The impossible happened: primRepToFFIType
GHC
ghc-devs at haskell.org
Thu May 18 07:46:39 UTC 2017
#8281: The impossible happened: primRepToFFIType
-------------------------------------+-------------------------------------
Reporter: tibbe | Owner: (none)
Type: bug | Status: new
Priority: high | Milestone: 8.4.1
Component: Compiler | Version: 7.6.2
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Compile-time | Unknown/Multiple
crash | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
I see that the docmentation on `foreign import unsafe` is thin in the
extreme. The [http://downloads.haskell.org/~ghc/master/users-guide/ffi-
chap.html user manual section] does not mention `unsafe`; while the
[https://www.haskell.org/onlinereport/haskell2010/haskellch8.html#x15-1490008
relevant section of the Haskell 2010 report] has only a single cryptic
sentence about "call backs into the Haskell system". It would be good to
document it better, perhaps in the user manual.
A good example is this thread: can you pass an unpinned bytearry to a
foreign call? I don't think we have a shred of documentation about this.
At one point we thought of unsafe foreign calls as a "fat machine
instruction". GHC's obligations are simpler because GC cannot be invoked
by the call, or thread-switching. Nor, I think, should it block (because
then GC might happen while it was blocked). So it could be used for
things like `cosine` that might be implemented out of line, but morally
are like a machine instruction.
I think Simon's `unsafenogc` gets closer to the "fat machine instruction"
idea. It really must be used only for short-running calls.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8281#comment:21>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list