GMP is a great multi-precision integer library, but its LGPL license is problematic for users of GHC (it prohibits static linking of GHC-compiled programs, for example).
One possible alternative would be to use the bignum library from OpenSSL, which is available under a BSD-style license.
Edited
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
In the HEAD, integer is now a separate package, by default provided by libraries/integer-gmp. If you make a variant in libraries/integer-foo and change libraries/Makefile to refer to integer-foo instead of integer-gmp then it will use your variant instead. You need to export the same functions with the same types.
The current package is just the old GMP implementation, and still uses primitives from the RTS. If anyone is interested in workong on this, it would be very interesting to:
Write an Integer performance suite
Compare the current implementation to a direct GMP binding, i.e. not using RTS primitives
http://darcs.haskell.org/libraries/integer-ultra-simple/ is a very simple (and inefficient) pure Haskell implementation. It validates, except print003 and print006 give different output (probably OK, due to different Integer representations) and simplrun004(optc) needs more stack space.
This is not a reasonable replacement for Integer, although it's close to something that might be.
http://darcs.haskell.org/libraries/integer-simple/ is a much more efficient implementation than ultra-simple. It validates on 32bit and 64bit machines, although simplrun004(optc) may fail by running out of stack space. This is probably because the Integer operations and/or representation are lazy, but this is fixable.
I was hopeful that we could go with a really simple Haskell impl for Integer, with serious Integer users using other types provided by packages wrapping C libraries instead; this would avoid all the pain of sometimes having to build GMP in-tree, it being LGPL, colliding with other uses of GMP, etc.
However, the attached base.html (comparing nofib runs with GMP and integer-simple) makes me think that that is infeasible, at least not without a lot of integer-simple tuning. e.g.
An interim approach that could be done is creating a binary compatible, minimal, drop in replacement for GMP. People who statically link could just implement enough functions to get their program working without linker errors... eventually we'd have all of them done. I attached some starting code as the file jmp.c (Credit to Joe Crayne for this code)
The way I envision this approach is that the initial emphasis would be on just having something which works, getting it to be more efficient would come later.
Note that this approach would mean that perhaps we can borrow test-suite code from libgmp and that almost no changes would be necessary to GHC.