How about renaming newUnsafeForeignPtr as newForeignPtr to conform to the FFI spec? GHC 6.0 calls the one that takes a Haskell finalizer newConcForeignPtr. (Similarly addForeignPtrFinalizer, though it doesn't work in NHC as yet.)