On 04/04/2012 06:43 AM, bug-Method-Destructor@rt.cpan.org wrote:
Show quoted text> This is forward of transaction #996027 of a ticket #72184
Method::Destructor explicitly declares the DESTROY method with XS() in
the C section of the XS. This is because the import method in the XS
uses the generated name XS_Method__Destructor_DESTROY to refer to it.
Later, it defines DESTROY as an ordinary XSUB.
In recent ExtUtils::ParseXS, XSUBs are, by default, generated as static
functions. Outside the realm of the generated code, XS() couldn't be
redefined for compatibility. XS() thus does not declare an external XSUB.
The major benefit of the static XSUBs is that you save potentially
significant startup time on some platforms on libraries with A LOT of
symbols such as Glib or Gtk2.
There are a couple of ways to deal with this problem. The by far easiest
is to influence how EU::ParseXS generates XSUBs:
#define PERL_EUPXS_ALWAYS_EXPORT
This will make sure that while that's defined, new XSUBs will not be static.
Best regards,
Steffen