On Jan 14, 2004, at 11:16 AM, Guay Jean-Sébastien wrote:


Which I interpreted as "without being forced to reinstall all my modules
which are not part of the standard Perl distribution". So you confirm that
that isn't possible, and that any modules that contain XS code and which
were not part of the 5.8 RPM will have to be recompiled or otherwise
reinstalled from a 5.8-compatible source (CPAN, RPMs, etc.)?


I am also asking for my personal benefit, as that's one question I never
quite understood the subtleties of...

All that you really need to understand is that XS is perl's way of generalizing a perl interface into code that was originally written in "c" code - or "c" like code.

cf:
        perldoc perlxstut
        perldoc perlxs

This way one can write the Bar.XS file, that
will get 'converted' into a Bar.c file that
will get ginned up into a Bar.so file ( on most
unix boxes, consult your dll life style manglement )
and some other voodoo that will get loaded into
the machine architecture specific section of the
@INC directories so that your "pure perl" side
of the Foo::Bar will do all the "pure perl" voodoo
right up to the

bootstrap Foo::Bar $VERSION;

line - cf perldoc DynaLoader

the Funk of course is all the bits and bobs
that change in the "includes" at

        #include "EXTERN.h"
        #include "perl.h"
        #include "XSUB.h"

and the parts about how the binary executable perl understands
what to do with the bootstrap statement....

Other than that, there is really not a lot that you
need to know or understand about the underlying
binary incompatibility between 5.6 and 5.8.X at
the XS level...

ciao
drieux

---


-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>




Reply via email to