cc: Sven Verdoolaege -- where are you?

Jan Dubois of ActiveState points out an issue with if_perl.xs:

  Jan Dubois wrote:
  > 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
  >
  > ...
  >
  > 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.

  --Suresh


--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Raspunde prin e-mail lui