demerphq wrote:
>>>   $VERSION = "1.12_01";
>>>   $XS_VERSION = $VERSION; # only needed if you have XS code
>>>   $VERSION = eval $VERSION;
> 
> im not convinced this actually does anything. ISTR i had to roll my
> own "parse out the $XS_VERSION code" thingee for DDS.

I;m very onfident that the recommended recipe DTRT.  XS_VERSION_BOOTCHECK used
to do a simplistic strcmp (ARG) prior to version objects being added to the
core.  The issue was always if you didn't explicitly specify an XS_VERSION in
your Perl code, then EU::MM and M::B would be forced to guess, and that could be
disastrous.  Whatever literal string exists in the XS file itself, would be
compared with whatever string representation that EU::MM/M::B would concoct.
Even a trailing zero in the XS file would fail if the $VERSION assignment in the
Perl module wasn't quoted.

In 5.10.0 and forward, XS_VERSION_BOOTCHECK upgrades the requested XS_VERSION
scalar to a version object and compares that against the XS_VERSION in the XS
code (or falls back to the modules $VERSION if that doesn't exist).

John

Reply via email to