On IRC, you (JohnMeacham) (what -- there is someone else who reads this list?) said something about region inference and foreign import "wrapper". It just occured to me earlier today that you probably can't do much of that at all. You can basically do as much as you can do for a StablePtr. I remind you that the C functions made by a wrapper stub can be passed to C code and held there indefinately, just like a StablePtr, and can only be deallocated when the Haskell program calls freeHaskellFunPtr on them. We also talked about how a nice way to implement these wrapper stubs, by generating tiny thunks that would redirect calls to an evaluation routine after adding the closure to be called as an additional argument. (Actually, I suppose the evaluation routine would need a wrapper, like a foreign export does...). What I'm not sure about is how to refer to the address of the (wrapper around the) evaluation routine in the code for the "wrapper stub" (the function that is actually declared by the 'foreign import "wrapper"' declaration).