Re: Perl 5.13.3+ MAY BREAK COMPILED DRIVERS - Please test DBI 1.613_71!

Tim Bunce <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Message-ID <[email protected]>
On Sun, Sep 05, 2010 at 05:17:45PM -0700, Darren Duncan wrote:
> Okay, I'm not sure I understand the problem here.
> 
> I thought that the point of PERL_POLLUTE was to provide things that
> were removed from the Perl core so that code which depends on the
> old removed APIs would continue to work with newer Perls that
> removed them if said code enables PERL_POLLUTE.

PL_sv_undef, for example, used to be called just sv_undef many years ago.

When it was decided to to add the PL_ prefix the PERL_POLLUTE #define
was added as a way for old code to keep working without changes.
It does #define sv_undef PL_sv_undef etc etc.

Perl 5.13.4+ removes that mechanism and those #defines so code still
using the non-prefixed names will break.

> DBD::SQLite *does* define PERL_POLLUTE, but if I take it out, then
> it still builds fine otherwise as-is on Perl 5.13.4 with DBI
> 1.613_71.  So DBD::SQLite already appears to use the newer PL_
> versions, so hence what is PERL_POLLUTE for?

Looks like DBD::SQLite doesn't need it. That's good.

> I found that under Perl 5.12.1, just removing PERL_POLLUTE caused
> build failures, which cited old versions without the PL_, but then I
> found that these old versions weren't in the DBD::SQLite source at
> all, but rather were being added by ppport.h.  So then when I also
> removed ppport.h (and PERL_POLLUTE), then DBD::SQLite built with
> Perl 5.12.1 and DBI 1.613_71.

Okay. If your ppport.h isn't recent that may suggest a bug in ppport.h.

> So, in light of this, should I actually be changing anything in
> DBD::SQLite?  Or should it be retaining both the PERL_POLLUTE and
> ppport.h?

You can remove PERL_POLLUTE. ppport.h has other uses and should be kept.
(Though ppport.h can tell you that for itself when you run in on the code.)

> You seemed to be saying that including PERL_POLLUTE means broken on
> Perl 5.13.4 but that doesn't seem to be the case.

No, including PERL_POLLUTE simply becomes ineffective on 5.13.4+.

So _if_ your driver _needed_ PERL_POLLUTE then it'll fail on 5.13.4+.

Tim.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.