There are several advantages to this:
-=over
+=over
=item *
new kinds of keyword-headed expression and compound statement. The
syntax following the keyword is defined entirely by the extension. This
allow a completely non-Perl sublanguage to be parsed inline, with the
-correct ops cleanly generated.
+correct ops cleanly generated.
See L<perlapi/PL_keyword_plugin> for the mechanism. The Perl core
source distribution also includes a new module
more on how to specify C<configure_requires> when creating a distribution
for CPAN.
-=head2 C<each> is now more flexible
+=head2 C<each>, C<keys>, C<values> are now more flexible
-The C<each> function can now operate on arrays.
+The C<each>, C<keys>, C<values> function can now operate on arrays.
=head2 C<when> as a statement modifier
=head2 Deprecations warn by default
-Perl now defaults to issuing a warning if a deprecated language feature
-is used.
+Over the years, Perl's developers have deprecated a number of language
+features for a variety of reasons. Perl now defaults to issuing a
+warning if a deprecated language feature is used. Many of the deprecations
+Perl now warns you about have been deprecated for many years. You can
+find a list of what was deprecated in a given release of Perl in the
+C<perl5xxdelta.pod> file for that release.
To disable this feature in a given lexical scope, you should use C<no
warnings 'deprecated';> For information about which language features
are deprecated and explanations of various deprecation warnings, please
-see L<perldiag.pod>. See L</Deprecations> below for the list of features
+see L<perldiag>. See L</Deprecations> below for the list of features
and modules Perl's developers have deprecated as part of this release.
=head2 Version number formats
C<site_perl> and C<vendor_perl> will now be loaded in preference to
those installed in C<ARCHLIB> and C<PRIVLIB>.
+
+=head2 REGEXPs are now first class
+
+Internally, Perl now treats compiled regular expressions (such as
+those created with C<qr//>) as first class entities. Perl modules which
+serialize, deserialize or otherwise have deep interaction with Perl's
+internal data structures need to be updated for this change. Most
+affected CPAN modules have already been updated as of this writing.
+
=head2 Switch statement changes
The C<given>/C<when> switch statement handles complex statements better
To better match all other flow control statements, C<foreach> may no
longer be used as an attribute.
+=item *
+
+Perl's command-line switch "-P", which was deprecated in version 5.10.0, has
+now been removed. The CPAN module C<< Filter::cpp >> can be used as an
+alternative.
+
=back
core versions of these modules warnings will issue a deprecation warning.
If you ship a packaged version of Perl, either alone or as part of a
-larger system, then you should carefully consider the reprecussions of
+larger system, then you should carefully consider the repercussions of
core module deprecations. You may want to consider shipping your default
build of Perl with packages for some or all deprecated modules which
install into C<vendor> or C<site> perl library directories. This will
a later release where the system administrator needs to know to install
multiple packages to get that same functionality.
+You can silence these deprecation warnings by installing the modules
+in question from CPAN. To install the latest version of all of them,
+just install C<Task::Deprecations::5_12>.
+
=over
=item L<Class::ISA>
F<getopt.pl>, F<getcwd.pl>, F<flush.pl>, F<fastcwd.pl>, F<exceptions.pl>,
F<ctime.pl>, F<complete.pl>, F<cacheout.pl>, F<bigrat.pl>, F<bigint.pl>,
F<bigfloat.pl>, F<assert.pl>, F<abbrev.pl>, F<dotsh.pl>, and
-F<timelocal.pl> are all now deprecated. Using them will incur a warning.
+F<timelocal.pl> are all now deprecated. Earlier, Perl's developers
+intended to remove these libraries from Perl's core for the 5.14.0 release.
+
+During final testing before the release of 5.12.0, several developers
+discovered current production code using these ancient libraries, some
+inside the Perl core itself. Accordingly, the pumpking granted them
+a stay of execution. They will begin to warn about their deprecation
+in the 5.14.0 release and will be removed in the 5.16.0 release.
=back
=item *
The internal structure of the dual-life modules traditionally found in
-the F<lib/> and F<ext/> directories y in the perl source has changed
+the F<lib/> and F<ext/> directories in the perl source has changed
significantly. Where possible, dual-lifed modules have been extracted
from F<lib/> and F<ext/>.
Perl's developers have fixed several problems with the recognition of
C<\N{...}> constructs. As part of this, perl will store any scalar
or regex containing C<\N{I<name>}> or C<\N{U+I<wide hex char>}> in its
-definition in UTF-8 format. (This was true previously for all occurences
+definition in UTF-8 format. (This was true previously for all occurrences
of C<\N{I<name>}> that did not use a custom translator, but now it's
always true.)
=item *
-REGEXPs are now first class.
-
-=item *
-
C<Perl_vcroak()> now accepts a null first argument. In addition, a full
audit was made of the "not NULL" compiler annotations, and those for
several other internal functions were corrected.
This uses a new warnings category: "imprecision".
-=item *
+=item *
C<lc>, C<uc>, C<lcfirst>, and C<ucfirst> warn when passed undef.
=item *
F<h2xs> no longer incorrectly treats enum values like macros.
-It also now handles C++ style comments (C<//>) properly in enums.
+It also now handles C++ style comments (C<//>) properly in enums.
=item *
=item *
+Some CPANPLUS tests may fail if there is a functioning file
+F<../../cpanp-run-perl> outside your build directory. The failure
+shouldn't imply there's a problem with the actual functional
+software. The bug is already fixed in [RT #74188] and is scheduled for
+inclusion in perl-v5.12.1.
+
+=item *
+
C<List::Util::first> misbehaves in the presence of a lexical C<$_>
(typically introduced by C<my $_> or implicitly by C<given>). The variable
which gets set for each iteration is the package variable C<$_>, not the
list of all of Perl's historical contributors, please see the C<AUTHORS>
file in the Perl 5.12.0 distribution.
+Our "retired" pumpkings Nicholas Clark and Rafael Garcia-Suarez
+deserve special thanks for their brilliant and substantive ongoing
+contributions. Nicholas personally authored over 30% of the patches
+since 5.10.0. Rafael comes in second in patch authorship with 11%,
+but is first by a long shot in committing patches authored by others,
+pushing 44% of the commits since 5.10.0 in this category, often after
+providing considerable coaching to the patch authors. These statistics
+in no way comprise all of their contributions, but express in shorthand
+that we couldn't have done it without them.
+
Many of the changes included in this version originated in the CPAN
modules included in Perl's core. We're grateful to the entire CPAN
community for helping Perl to flourish.
The F<Artistic> and F<Copying> files for copyright information.
+L<http://dev.perl.org/perl5/errata.html> for a list of issues
+found after this release, as well as a list of CPAN modules known
+to be incompatible with this release.
+
=cut