Sven Panne <Sven.Panne@informatik.uni-muenchen.de> wrote,
I have a small change request regarding foreign export dynamic. Currently the FFI doc says:
topdecl : ... .. | 'foreign' 'export' [callconv] 'dynamic' varid :: prim_type -> IO Addr
GHC additionally allows:
prim_type -> IO Ptr
As usual the FFI "looks through" newtypes. But now that we have FunPtr, the following typing makes much more sense:
'foreign' 'export' [callconv] 'dynamic' varid :: prim_type -> IO (FunPtr prim_type)
where both prim_types have to be the *same*. We should probably allow the old Addr-typing as well for some time to facilitate the transition, but not the Ptr-typing (bleeding edge people will know what to do :-). The corresponding changes to GHC look easy, so I'd like to commit this if there are no objections.
Furthermore, the FFI docs still talk about Addr only, not Ptr/FunPtr. Now that Addr is deprecated, this should be changed, too.
Yes, Addr is dead. So, allowing Addr in f.e.d., or anywhere else for that matter, can only be for reasons of temporary backward compatibility. Cheers, Manuel