This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Users don't normally care about the blead releases
[perl5.git] / pod / perl5120delta.pod
index 3fbfc82..62bd974 100644 (file)
@@ -29,7 +29,7 @@ for C<our $VERSION = ...> and similar constructs. E.g.
 
 There are several advantages to this:
 
-=over 
+=over
 
 =item *
 
@@ -117,7 +117,7 @@ Extension modules can now cleanly hook into the Perl parser to define
 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
@@ -199,9 +199,9 @@ See the documentation for C<ExtUtils::MakeMaker> or C<Module::Build> for
 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
 
@@ -241,13 +241,17 @@ the C<pos> and C<len> arguments.
 
 =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
@@ -280,6 +284,15 @@ version's C<site_perl> and C<vendor_perl>.  Modules installed into
 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 treates 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
@@ -481,6 +494,11 @@ EOF type.
 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.
+
 =back
 
 
@@ -584,6 +602,10 @@ installation of a single package provides the given functionality, to
 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>
@@ -624,7 +646,14 @@ F<finddepth.pl>, F<importenv.pl>, F<hostname.pl>, F<getopts.pl>,
 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
@@ -1620,7 +1649,7 @@ and proper citations added, thanks to a patch from Tom Christiansen.
 =item *
 
 The internal structure of the dual-life modules traditionally found in
-the F<lib/> and F<ext/> directories 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/>.
 
@@ -1651,10 +1680,6 @@ C<SVt_RV> no longer exists. RVs are now stored in IVs.
 
 =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.
@@ -2059,7 +2084,7 @@ because it's beyond the limit of representation.
 
 This uses a new warnings category: "imprecision".
 
-=item * 
+=item *
 
 C<lc>, C<uc>, C<lcfirst>, and C<ucfirst> warn when passed undef.
 
@@ -2298,7 +2323,7 @@ to gcc's search path.
 =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 *
 
@@ -3009,6 +3034,14 @@ from either 5.10.x or 5.8.x.
 
 =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
@@ -3112,6 +3145,16 @@ versions of Perl that helped make Perl 5.12.0 better. For a more complete
 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.
@@ -3150,4 +3193,8 @@ The F<README> file for general stuff.
 
 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