Peter,
On Sun, Nov 20, 2016 at 08:51:02AM -0500, Peter John Acklam via RT wrote:
Show quoted text> Queue: Math-Polynomial
> Ticket <URL:
https://rt.cpan.org/Ticket/Display.html?id=114004 >
>
> On Fri Oct 14 15:44:27 2016, mhasch-cpanbugs@cozap.com wrote:
>
> > Now unfortunately Math::BigInt got severely broken and Math::BigRat
> > got its own distro so it is not to be taken for granted that a BigRat
> > version recent enough to cope with the problem is available on a
> > platform where Math::Polynomial is going to be installed.
>
> Math::Big(Int|Float|Rat) have always been broken, but through the
> years they have gradually become less broken.
Thank you for your cooperation in settling this issue. I can
see now that asking you to take back the change to blsft() and
brsft() in Math-BigInt-1.999717, that breaks older versions of
Math::BigRat which in turn breaks any client code attempting
do do rational arithmetic using an unfortunate combination
of these modules, would be a bit much to ask. You certainly
should be able to decide where backwards-compatibility must be
sacrificed in favour of progress.
Our problem here would go away if we were able to force clients
to update Math::BigRat together with Math::BigInt. While the
Perl module infrastructure of today lacks a general solution
to impose restrictions on reverse dependencies, I can see a
special solution for our case. After all, both modules are
under active development by the same author and maintainer.
And here is my suggestion: Include Math::BigRat in the
Math-BigInt distribution for now. You'll be free to continue
parallel development of the "Big Three" big number modules as
before, but with much less danger for downstream code to be
left with a problematic combination of these.
Future incompatible changes, of course, could be made easier to
cope with in a number of ways. For one thing, I'd like methods
to change their name when there is new semantics. That way,
old and new semantics could coexist for a while with some sort
of deprecation music. Once deprecation was over, clients would
fail spectacularly rather than giving wrong results silently.
An important math library, and an arbitrary precision one at
that, should go to great lengths to avoid the latter.
The unification of Math::BigInt, Math::BigFloat, and now
Math::BigRat, into one distribution does not need to be
permanent. It should last long enough for the mainstream to
catch up, and of course as long as substantial changes affecting
all three of them are to be anticipated.
Could you be persuaded to do this? I'd gladly include updated
module recommendations into my distributions then. I consider
it the best way to weed out outdated Math::BigRat versions from
systems where only Math::BigInt is intentionally being upgraded.
-Martin