Why I want Haskell finalizers
alastair at reid-consulting-uk.ltd.uk
Wed Oct 16 12:36:35 EDT 2002
> If you have Haskell talking to some
> other language with a garbage collector, be it Java or SML, then at
> a given point of the program you can in general expect to have
> Haskell holding stable pointers to objects referenced from their
> world by the other language, and vice-versa. The most obvious way
> of garbage-collecting these is for each language to reference the
> foreign objects using its own version of ForeignPtr's, which then
> instruct the other's RTS that the corresponding stable pointer is no
> longer required.
So what you want is for the Java GC to call hs_freeStablePtr on all the
Haskell objects that just died?
That requires that the Haskell runtime system export a C function
hs_freeStablePtr which fiddles around with the relevant GC data
structure for stable pointers. No problem at all. Hugs has exported
this function for some years now (though under a slightly different
Similarily, you want Haskell's GC to call a function in the Java
Native Interface (JNI) to release any Java objects that Haskell may
have. I imagine that is straightforward.
More information about the FFI