On 8/3/06, John Meacham <[EMAIL PROTECTED]> wrote:
On Wed, Aug 02, 2006 at 03:22:57PM -0400, Peter Tanski wrote:
> Esa and I had discussed the possibility of copying the value returned
> from the Bignum lib into the GHC system, which certainly would not be
> very memory efficient, but might be faster. Among other memory
> modifications, it might be a good idea to initialise the Bignum lib
> with the RTS and modify the lib with a memory cache or garbage
> collection system of its own.
I don't understand why this would be useful. Just use the standard FFI
ForeignPtr mechanism and it takes care of garbage collection for you and
doesn't have any issues with concurrency. This would also make the
library fully portable to any haskell implementation with FFI support.
There is atleast one imaginable situation where copying would be
safer: Imagine using a library that changes GMP memory allocation
routines on (user-called) initialisation. Integers allocated before
library init would probably crash the system when their finalisers
were giving free-calls bad addresses.
Then there's minor optimisations - memory being only in
haskell heap it can be compacted, no need to check or run
finalisers. Whetever these give more than we lose...benchmarking
is hard without competiting implementations.
I am not arguing it's a good choice. But it is totally valid choice with
some good points, and it is interesting idea. There's also more a
possible drawback: It requires even more knowledge, or assurances,
from inner workings of the library.
Best regards,
--Esa
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users