On 18 August 2015 at 10:52, Patrice Dumas <[email protected]> wrote: > Hello, > > First thing, I think that there should be no versionning for XSUB shared > object, as they are dlopened, not real libraries. The corresponding > libtool option should -avoid-version. > > To avoid incompatible perl XSUB (binary) interfaces, there is a check > that the version used in XSParagraph.pm when calling bootstrap is the > same as what was used when compiling the xsub code, (either with > -DVERSION or -DXS_VERSION or both?). Currently $VERSION is used, which > corresponds to the number in XSParagrah/configure.ac. I wonder if it > wouldn't be better to have a number for this check that would only > change when the (binary) interface changes, a bit like what is used for > versioning libraries using sonames (libtool -version-info or -release), > maybe like a serial number. For example a variable named > XSParagraph_INTERFACE_VERSION, would be set in configure.ac and used in > Makefile.am (and in Makefile.PL for the standalone module if building > a standalone module is still possible) for -DXS_VERSION (and -DVERSION?) > and independently set in XSParagraph.pm for the bootstrap XSUB > initialization version check. This manual setting would make sure that > XSParagraph.pm is updated when incompatible changes in the interface are > done. > > Another possibility would be to disable checking, with xsubpp option > -noversioncheck.
The "6.0dev" has come back for me a few times as well. I don't see why any versioning at all is needed. The modules are installed along with texi2any so out-of-date modules shouldn't get used. xsubpp -noversioncheck seems like a good idea. Another idea is to use a different variable from $VERSION when calling the XSUB bootstrap function, so it doesn't get updated: this would keep version checking as a safety check, which could be useful occasionally. Then again, someone might want to use an out-of-date module deliberately, so why stop them.
