RE: [Haskell-cafe] Re: Are handles garbage-collected?

On 26 October 2004 03:51, oleg@pobox.com wrote:
Simon Marlow wrote:
I've been wondering whether having a more synchronous kind of finalizer would be a good thing.
Hans Boehm in his POPL2003 paper "Destructors, Finalizers, and Synchronization" persuasively argued that finalizers _must_ be asynchronous. That assertion is the title of Section 3.5 of the paper.
I didn't mean fully synchronous, just "more synchronous". For example, the finalization routine could be run directly after garbage collection. Hugs & nhc98 already do this, because they don't support Haskell finalizers. Just a thought, anyway (and I've read that paper, it's great). Cheers, Simon

"Simon Marlow"
I didn't mean fully synchronous, just "more synchronous". For example, the finalization routine could be run directly after garbage collection. Hugs & nhc98 already do this, because they don't support Haskell finalizers.
Actually, nhc98 supports both C and Haskell finalisers, with the same signatures as in ghc: newForeignPtr :: FinalizerPtr a -> Ptr a -> IO (ForeignPtr a) newConcForeignPtr :: IO () -> Ptr a -> IO (ForeignPtr a) C finalisers are run during garbage collection, Haskell finalisers are run immediately afterwards. In fact, you cannot run a Haskell finaliser during GC, because you don't have a valid heap to run it in. Regards, Malcolm
participants (2)
-
Malcolm Wallace
-
Simon Marlow