Each of these is explained in further detail below.
-B<NOTE>: starting from the release 5.6.0 Perl will use a version
+B<NOTE>: starting from the release 5.6.0, Perl will use a version
scheme where even-numbered subreleases (like 5.6) are stable
maintenance releases and odd-numbered subreleases (like 5.7) are
unstable development releases. Development releases should not be
=head1 WARNING: This version requires an extra step to build old extensions.
5.005_53 and later releases do not export unadorned
-global symbols anymore. This means you may need to build older
-extensions that have not been updated for the new naming convention
+global symbols anymore. This means you may need to build rather old
+extensions that have not been updated for the current naming convention
with:
perl Makefile.PL POLLUTE=1
pod/perldelta.pod contains more details about this.
-=head1 WARNING: This version may not be binary compatible with Perl 5.005.
+=head1 WARNING: This version is not binary compatible with releases of
+Perl prior to 5.8.0.
-Using the default Configure options for building perl should get you
-a perl that will be binary compatible with the 5.005 release.
-
-However, if you run Configure with any custom options, such as
--Dusethreads, -Dusemultiplicity, -Dusemymalloc, -Ubincompat5005 etc.,
-the resulting perl will not be binary compatible. Under these
-circumstances, if you have dynamically loaded extensions that were
-built under perl 5.005, you will need to rebuild and reinstall all
-those extensions to use them with 5.6.
+If you have built extensions (ie modules that include C code)
+using an earlier version of Perl, you will need to rebuild and reinstall
+those extensions.
Pure perl modules without XS or C code should continue to work fine
without reinstallation. See the discussions below on
=head2 Selecting File IO mechanisms
-Executive summary: in Perl 5.8 you should use the default "PerlIO"
+Executive summary: in Perl 5.8, you should use the default "PerlIO"
as the IO mechanism unless you have a good reason not to.
In more detail: previous versions of perl used the standard IO
mechanisms as defined in stdio.h. Versions 5.003_02 and later of perl
-introuced alternate IO mechanisms via a "PerlIO" abstraction, but up
-until and including Perl 5.6 stdio mechanism was still the default and
-the only supported mechanism.
+introduced alternate IO mechanisms via a "PerlIO" abstraction, but up
+until and including Perl 5.6, the stdio mechanism was still the default
+and the only supported mechanism.
-Starting from Perl 5.8 the default mechanism is to use the PerlIO
+Starting from Perl 5.8, the default mechanism is to use the PerlIO
abstraction, because it allows better control of I/O mechanisms,
instead of having to work with (often, work around) vendors' I/O
implementations.
-This PerlIO abstraction can be disabled (but again, unless you know
-what you are doing, should not) either on the Configure command line
-with
+This PerlIO abstraction can be (but again, unless you know what you
+are doing, should not be) disabled either on the Configure command
+line with
sh Configure -Uuseperlio
=item -DPERL_POLLUTE_MALLOC
-NOTE: This flag is enabled automatically on some platforms if you
-asked for binary compatibility with version 5.005, or if you just
-run Configure to accept all the defaults on those platforms. You
-can refuse the automatic binary compatibility flags wholesale by
-running:
-
- sh Configure -Ubincompat5005
-
-or by answering 'n' at the appropriate prompt.
+NOTE: This flag is enabled automatically on some platforms if you just
+run Configure to accept all the defaults on those platforms.
Perl's malloc family of functions are called Perl_malloc(),
Perl_realloc(), Perl_calloc() and Perl_mfree(). When this flag is