To *me*, the fix to pack "D" to cope with quadmath was the most important one as it broke installing modules down the chain. Thanks leont for fixing that!
I absolutely agree that this needed to be fixed - but I still have reservations about the actual fix that was implemented, and I raised those reservations (which were dismissed) in the discussions of that issue.
In perl 5.32 and earlier, if you are running a perl whose nvtype was double, and you try to pack/unpack using the "D" template, here's what you get:
C:\>perl -wle "$d = unpack 'D>', pack 'D>', 2.9; print $d"
Invalid type 'D' in pack at -e line 1.
I regard that as a sane and sensible result.
Now, thanks to that fix, on a perl-5.34.0 whose nvtype is double, we get:
C:\>perl -wle "$ld = unpack 'D>', pack 'D>', 2.9; print $ld"
2.9
with no mention that $ld is not a long double, even though a "long double" has been specifically requested via the "D" template.
I think the view is that no-one is going to make that mistake.
But I still wonder why we would want to allow the use of "D" template on a perl whose nvtype is double, given that the "D" template is entirely useless and pointless in that circumstance.
Anyway ... it's done now, and I shall live it with it.
The "pack" documentation for "D" now, as of perl-5.34.0, looks questionable to me:
D A float of long-double precision in native format.
(Long doubles are available only if your system supports
long double values. Raises an exception otherwise.
Note that there are different long double formats.)
Do you really think that accurately describes the behaviour of the "D" template on a perl-5.34.0 with nvtype of double ?
Cheers, Rob
| [reply] [d/l] [select] |