[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

important perl5.005 issues (was Re: perl version depends)



Raphael Hertzog <rhertzog@hrnet.fr> writes:
> Le Thu, Oct 08, 1998 at 08:54:46PM -0400, Michael Alan Dorman écrivait:
> > Threaded perl and non-threaded perl are binary-incompatible at the
> > extension level, meaning most compiled extensions must be
> > distinguishable.
> I think you're wrong. perl5.005 and perl5.005-thread are binary-compatible.
> But in order to support threads, they had to break the 
> binary-compatibility beetween perl5.004 and perl5.005. That's it.

I think you should read the docs or follow the last couple of years of
the perl5 development mailing list, as I have, before you suggest you
know better than I.  From doc/perldelta.pod:

-----8<-----
=head2 Binary Compatibility

This version is NOT binary compatible with older versions.  All extensions
will need to be recompiled.  Further binaries built with threads enabled
are incompatible with binaries built without.  This should largely be
transparent to the user, as all binary incompatible configurations have
their own unique architecture name, and extension binaries get installed at
unique locations.  This allows coexistence of several configurations in
the same directory hierarchy.  See F<INSTALL>.
----->8-----

> > So, yes, I think Debian does have to honor this, and to make our perl
> > gratuitously different (which is to say, having it look in
> > /usr/lib/perl5) would be inviting calamity some time down the road.
> Which in fact doesn't mean we cannot add /usr/lib/perl5 at the end
> of @INC because architecture-dependant packages will be found 
> before.

Possibly.  But, also from doc/perldelta.pod:

-----8<-----
=head2 Perl Source Compatibility

When none of the experimental features are enabled, there should be
very few user-visible Perl source compatibility issues.

If threads are enabled, then some caveats apply. C<@_> and C<$_> become
lexical variables.  The effect of this should be largely transparent to
the user, but there are some boundary conditions under which user will
need to be aware of the issues.  For example, C<local(@_)> results in
a "Can't localize lexical variable @_ ..." message.  This may be enabled
in a future version.

Some new keywords have been introduced.  These are generally expected to
have very little impact on compatibility.  See L<New C<INIT> keyword>,
L<New C<lock> keyword>, and L<New C<qr//> operator>.

Certain barewords are now reserved.  Use of these will provoke a warning
if you have asked for them with the C<-w> switch.
See L<C<our> is now a reserved word>.
----->8-----

So, there is no guarantee that existing perl modules may not trigger
new warnings or other issues when run under the new perl.

So, IMNSHO, the smarter thing to do would be to not add /usr/lib/perl5
to @INC.

Mike.


Reply to: