Subject: Re: bug#10519: guile and (mini-)gmp

From: [email-masked] (Ludovic Courtès)
Date: Sat, 11 Aug 2012 21:46:10 +0200

Hi,

[email-masked] (Niels Möller) skribis:

> [email-masked] (Ludovic Courtès) writes:
>
>> Yes, thanks.  I just tried it, and here’s the status:
>>
>>   - numbers.c uses ‘GMP_NUMB_BITS’, which is lacking;
>
> If that's really needed, it can be substituted with something like
>   
>   #ifndef GMP_NUMB_BITS
>   #include <limits.h>
>   #define GMP_NUMB_BITS (CHAR_BIT*sizeof(mp_limb_t))
>   #endif

OK.

[...]

>>   - random.c uses ‘mpz_realloc2’, also lacking.
>
> That call could be conditional on HAVE_LIBGMP, I think.

Right.

>> Currently including <libguile.h> pulls <gmp.h>.  When mini-GMP is used
>> instead, then <libguile/mini-gmp.h> would be pulled instead,
>> transparently.
>
> Might work. You'd need to document that a guile application which wants
> to work with mini-gmp should never include gmp.h directly.

Yes.

>>> Users may also need some way of figuring out if they need to link with
>>> -lgmp or not.
>>
>> libguile-2.0.la and guile-2.0.pc would provide that info.
>
> And on ELF-systems, you should record the dependency (or lack thereof)
> directly in libguile.so.

Of course.

>> I’m slightly concerned about mini-gmp, though.  It’s almost 5000 lines,
>> mostly copied from GMP AIUI, but with no way to synchronize.  How do you
>> consider the maintenance cost of this?
>
> My view is that you should copy mini-gmp from some gmp release or from
> the main gmp repo. When you have a version which works for you, you
> shouldn't need to modify it or update it very often (maybe once for each
> gmp release or so).

For me/us, the best workflow would be to have a Gnulib module.  That
way, whenever GMP developers fix a bug in mini-gmp, we automatically get
the fix when running “gnulib-tool --update”.

> And if you need to make any modifications, you ought to bug-report the
> corresponding problem. Hopefully, problems can be fixed in the gmp repo,
> so that guile can simply upgrade to the latest version from the gmp
> repo, rather than maintaining your own changes.

Sure.

What about the maintenance overhead for GMP developers?  I mean, of
those 5000 lines, most are copied from GMP, right?  So, bugs found in
GMP may have to be fixed in mini-GMP too, for instance.

Thanks,
Ludo’.