This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for e9d373c4
[perl5.git] / pod / perldelta.pod
index 68d916c..f0d4886 100644 (file)
@@ -30,9 +30,8 @@ here, but most should go in the L</Performance Enhancements> section.
 =head2 Unicode 6.3 now supported
 
 Perl now supports and is shipped with Unicode 6.3 (though Perl may be
-recompiled with any previous Unicode release as well).  A detailed
-list of Unicode 6.3 changes is at
-L<http://www.unicode.org/versions/Unicode6.3.0/>.
+recompiled with any previous Unicode release as well).  A detailed list of
+Unicode 6.3 changes is at L<http://www.unicode.org/versions/Unicode6.3.0/>.
 
 =head2 Experimental Postfix Dereferencing
 
@@ -60,6 +59,14 @@ they are suppressed.
 For more information, consult L<the Postfix Dereference Syntax section of
 perlref|perlref/Postfix Dereference Syntax>.
 
+=head2 C<sub>s now take a C<prototype> attribute
+
+When declaring or defining a C<sub>, the prototype can now be specified inside
+of a C<prototype> attribute instead of in parens following the name.
+
+For example, C<sub foo($$){}> could be rewritten as
+C<sub foo : prototype($$){}>.
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -80,8 +87,8 @@ XXX For a release on a stable branch, this section aspires to be:
 
 =head2 Functions C<PerlIO_vsprintf> and C<PerlIO_sprintf> have been removed
 
-These two functions, undocumented, unused in CPAN, and problematic have
-been removed.
+These two functions, undocumented, unused in CPAN, and problematic have been
+removed.
 
 =head1 Deprecations
 
@@ -125,10 +132,9 @@ There may well be none in a stable release.
 
 =item *
 
-Perl has an optimizer for regular expression patterns.  It analyzes the
-pattern to find things such as the minimum length a string has to be to
-match, etc.  It now better handles code points that are above the Latin1
-range.
+Perl has an optimizer for regular expression patterns.  It analyzes the pattern
+to find things such as the minimum length a string has to be to match, etc.  It
+now better handles code points that are above the Latin1 range.
 
 =back
 
@@ -160,6 +166,12 @@ XXX
 
 =item *
 
+L<attributes> has been upgraded from version 0.21 to 0.22.
+
+Support has been added for the C<prototype> attribute.
+
+=item *
+
 L<autodie> has been upgraded from version 2.21 to 2.22.
 
 No changes have been made to the installed code other than the version bump to
@@ -201,7 +213,7 @@ Some POD formatting errors in the documentation have been corrected.
 
 =item *
 
-L<ExtUtils::MakeMaker> has been upgraded from version 6.76 to 6.79_01.
+L<ExtUtils::MakeMaker> has been upgraded from version 6.76 to 6.80.
 
 Numerous updates and bug fixes are incorporated.  See the F<Changes> file for
 full details.
@@ -250,7 +262,7 @@ keep in sync with the latest CPAN release.
 
 =item *
 
-L<List::Util> has been upgraded from version 1.32 to 1.33.
+L<List::Util> has been upgraded from version 1.32 to 1.34.
 
 The list reduction functions C<any>, C<all>, C<none> and C<notall> have been
 added.
@@ -299,7 +311,7 @@ enabled and C<use parent> instead of @ISA.
 
 =item *
 
-L<threads> has been upgraded from verion 1.87 to 1.89.
+L<threads> has been upgraded from version 1.87 to 1.89.
 
 The documentation of C<alarm> and C<_handle> has been updated.
 
@@ -348,13 +360,35 @@ XXX Changes which significantly change existing files in F<pod/> go here.
 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
 section.
 
-=head3 L<XXX>
+=head3 L<perlref>
+
+=over 4
+
+=item *
+
+Documentation of the new postfix dereference syntax has been added.
+
+=back
+
+=head3 L<perlreguts>
 
 =over 4
 
 =item *
 
-XXX Description of the change here
+The documentation has been updated in the light of recent changes to
+F<regcomp.c>.
+
+=back
+
+=head3 L<perlvar>
+
+=over 4
+
+=item *
+
+Three L<English> variable names which have long been documented but do not
+actually exist have been removed from the documentation.
 
 =back
 
@@ -388,7 +422,36 @@ XXX L<message|perldiag/"message">
 
 =item *
 
-XXX L<message|perldiag/"message">
+L<Attribute prototype(%s) discards earlier prototype attribute in same sub|perldiag/"Attribute prototype(%s) discards earlier prototype attribute in same sub">
+
+(W misc) A sub was declared as sub foo : prototype(A) : prototype(B) {}, for
+example.  Since each sub can only have one prototype, the earlier
+declaration(s) are discarded while the last one is applied.
+
+=item *
+
+L<Postfix dereference is experimental|perldiag/"Postfix dereference is experimental">
+
+(S experimental::postderef) This warning is emitted if you use the experimental
+postfix dereference syntax.  Simply suppress the warning if you want to use the
+feature, but know that in doing so you are taking the risk of using an
+experimental feature which may change or be removed in a future Perl version:
+
+    no warnings "experimental::postderef";
+    use feature "postderef", "postderef_qq";
+    $ref->$*;
+    $aref->@*;
+    $aref->@[@indices];
+    ... etc ...
+
+=item *
+
+L<Prototype '%s' overridden by attribute 'prototype(%s)' in %s|perldiag/"Prototype '%s' overridden by attribute 'prototype(%s)' in %s">
+
+(W prototype) A prototype was declared in both the parentheses after the sub
+name and via the prototype attribute.  The prototype in parentheses is useless,
+since it will be replaced by the prototype from the attribute before it's ever
+used.
 
 =back
 
@@ -454,7 +517,8 @@ that they represent may be covered elsewhere.
 
 =item *
 
-XXX
+The new postfix dereference syntax is tested by a new test script,
+F<t/op/postfixderef.t>.
 
 =back
 
@@ -534,7 +598,25 @@ files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
 
 =item *
 
-XXX
+C<last> no longer returns values that the same statement has accumulated so
+far, fixing amongst other things the long-standing bug that C<push @a, last>
+would try to return the @a, copying it like a scalar in the process and
+resulting in the error, "Bizarre copy of ARRAY in last."  [perl #3112]
+
+=item *
+
+An optimization in Perl 5.18 made incorrect assumptions causing a bad
+interaction with the L<Devel::CallParser> CPAN module.  This was partially
+fixed in Perl 5.19.4, but the fix was not sufficient and another fault has now
+been corrected.
+
+=item *
+
+In some cases, closing file handled opened to pipe to or from a process, which
+had been duplicated into a standard handle, would call perl's internal waitpid
+wrapper with a pid of zero.  With the fix for [perl #85228] this zero pid was
+passed to waitpid(), possibly blocking the process.  This wait for process
+zero no longer occurs.  [perl #119893]
 
 =back