A week or so ago there was a thread on -current about removing libgmp.
It was generally agreed that this was a good idea, but (as usual)
somebody has to do the work, and some people wanted FreeBSD to
continue to supply a libmp-compatible interface.
To satisfy both groups, I propose that we import a libmp that is
implemented in terms of the OpenSSL BIGNUM library. Attached below is
a sharball of such an implementation. I couldn't find very good
documentation on the libmp interface, but I've tested this with
most of the software in FreeBSD that uses libmp, and all programs
work as well as they did before.
The library is quite small; all functions except msqrt() have a BIGNUM
equivilent. It requires that the program using it be linked with
Benchmarks, proving that you increased, or at least did not
injure performance with this change?
My wrapper around OpenSSL's BIGNUM library doesn't introduce any
performance penalties beyond one or two more 'call' instructions. If
OpenSSL's BIGNUM library is slower than libgmp (and it probably is),
then someone just needs to fix that. The fact that I decided to write
a wrapper around BIGNUM instead of converting all the programs which
use libmp to use BIGNUM is better from a performance point of view; at
least this way it's easier to change to another BIGNUM implementation
(you'd only have to change this library instead of all those
Besides, as has been discussed before, all the applications this is
used for in FreeBSD are not performance-critical.