On Mon, 27 Aug 2007, Suresh Govindachar wrote: > > So ActiveState is "exporting" Perl_sv_2iv_flags and > Perl_newXS_flags in a way that is different from the > way they export other symbols.
Nope, this is all incorrect. I've now downloaded the vim sources to see what is really going on: The src/if_perl.xs file contains code to redefine all Perl functions it assumes it uses to wrapper names, and then looks up the real functions at runtime. That means that this file is specific to the Perl version used to compile it and will need to be updated for Perl 5.8.9. See for example: # if (PERL_REVISION == 5) && (PERL_VERSION >= 8) # define Perl_sv_2pv_flags dll_Perl_sv_2pv_flags # define Perl_sv_2pv_nolen dll_Perl_sv_2pv_nolen # else # define Perl_sv_2pv dll_Perl_sv_2pv # endif ... #if (PERL_REVISION == 5) && (PERL_VERSION >= 8) static char* (*Perl_sv_2pv_flags)(pTHX_ SV*, STRLEN*, I32); static char* (*Perl_sv_2pv_nolen)(pTHX_ SV*); #else static char* (*Perl_sv_2pv)(pTHX_ SV*, STRLEN*); #endif ... #if (PERL_REVISION == 5) && (PERL_VERSION >= 8) {"Perl_sv_2pv_flags", (PERL_PROC*)&Perl_sv_2pv_flags}, {"Perl_sv_2pv_nolen", (PERL_PROC*)&Perl_sv_2pv_nolen}, #else {"Perl_sv_2pv", (PERL_PROC*)&Perl_sv_2pv}, #endif Similar code will be needed for sv_2iv_flags() and any other new symbol. It is a bit awkward to do this for ActivePerl 822, as it identifies itself as 5.8.8 because 5.8.9 has not been released yet, so we don't know which additional features will still be added. But internally AP822 is probably closer to what will be 5.8.9 than to 5.8.8. Anyways, the problem is that if_perl.xs is coupled pretty tightly to the Perl internals and needs updating whenever the internals change. Cheers, -Jan _______________________________________________ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs