This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta entries
[perl5.git] / pod / perldelta.pod
index 5d6918f..2eebe60 100644 (file)
@@ -1,20 +1,30 @@
 =encoding utf8
 
+=for comment
+This has been completed up to 67aeb7895 except for:
+b3dbdd48ca2da90bce7f16d545cca54c3dc58f35 (Leon Timmermans)
+816005240f1a3b9989c940e630e829048597537c (Craig Berry)
+44caa20c7d9248fd77483468d77c9b5835e7066e (Craig Berry)
+4581ada393ba58f2b8f438c7b9c336d6c79ec94c (Craig Berry)
+3b28d668e9efe9433c3099521167a6723cbddc26 (Craig Berry)
+82e24582a585cdcc94ac54b3e77a325e7aa89846 (Jan Dubois)
+and any bugs that Karl Williamson has fixed.
+
 =head1 NAME
 
 [ this is a template for a new perldelta file. Any text flagged as
 XXX needs to be processed before release. ]
 
-perldelta - what is new for perl v5.13.10
+perldelta - what is new for perl v5.13.11
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.XXX.XXX release and
-the 5.XXX.XXX release.
+This document describes differences between the 5.13.10 release and
+the 5.13.11 release.
 
-If you are upgrading from an earlier release such as 5.YYY.YYY, first read
-L<perl5YYYdelta>, which describes differences between 5.ZZZ.ZZZ and
-5.YYY.YYY.
+If you are upgrading from an earlier release such as 5.13.9, first read
+L<perl5139delta>, which describes differences between 5.13.9 and
+5.13.10.
 
 =head1 Notice
 
@@ -28,12 +38,6 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ List each enhancement as a =head2 entry ]
 
-=head2 Add C<\p{Titlecase}> as a synonym for C<\p{Title}>
-
-This synyom is added for symmetry with the Unicode property names
-C<\p{Uppercase}> and C<\p{Lowercase}>.
-
-
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -42,6 +46,11 @@ L</Selected Bug Fixes> section.
 
 [ List each security issue as a =head2 entry ]
 
+=head2 User-defined regular expression properties
+
+Perl no longer allows a tainted regular expression to invoke a user-defined
+property via C<\p{...}> syntax. It simply dies instead [perl #82616].
+
 =head1 Incompatible Changes
 
 XXX For a release on a stable branch, this section aspires to be:
@@ -51,29 +60,18 @@ XXX For a release on a stable branch, this section aspires to be:
 
 [ List each incompatible change as a =head2 entry ]
 
-=head2 Most C<\p{}> properties are now immune from case-insensitive matching
-
-For most Unicode properties, it doesn't make sense to have them match
-differently under C</i> case-insensitive matching than not.  And doing
-so leads to unexpected results and potential security holes.  For
-example
-
- m/\p{ASCII_Hex_Digit}+/i
+=head2 Passing references to warn()
 
-could previously match non-ASCII characters because of the Unicode
-matching rules.  There were a number of bugs in this feature until an
-earlier release in the 5.13 series.  Now this release reverts, and
-removes the feature completely except for the few properties where
-people have come to expect it, namely the ones where casing is an
-integral part of their functionality, such as C<m/\p{Uppercase}/i> and
-C<m/\p{Lowercase}/i>, both of which match the exact same code points,
-namely those matched by C<m/\p{Cased}/i>.  Details are in
-L<perlrecharclass/Unicode Properties>.
+An earlier Perl 5.13.x release changed C<warn($ref)> to leave the reference
+unchanged, allowing C<$SIG{__WARN__}> handlers to access the original
+reference. But this stopped warnings that were references from having the
+file and line number appended even when there was no C<$SIG{__WARN__}>
+handler in place.
 
-User-defined property handlers that need to match differently under
-C</i> must change to read the new boolean parameter passed it which is
-non-zero if case-insensitive matching is in effect; 0 if not.  See
-L<perluniprops/User-Defined Character Properties>.
+Now C<warn> checks for the presence of such a handler and, if there is
+none, proceeds to stringify the reference and append the file and line
+number. This allows simple uses of C<warn> for debugging to continue to
+work as they did before.
 
 =head1 Deprecations
 
@@ -126,51 +124,154 @@ XXX
 
 =item *
 
-C<CGI> has been upgraded from version 3.51 to 3.52
+C<base> has been upgraded from version 2.15 to 2.16.
 
 =item *
 
-C<IPC::Cmd> has been upgraded from version 0.68 to 0.70
+C<CPANPLUS> has been upgraded from version 0.9101 to 0.9102
 
 =item *
 
-C<HTTP::Tiny> has been upgraded from version 0.009 to 0.010
+C<CPANPLUS::Dist::Build> has been upgraded from version 0.52 to 0.54
 
 =item *
 
-C<Module::Build> has been upgraded from version 0.3607 to 0.3622.
+C<Cwd> has been downgraded from version 3.37 to 3.36.
 
-A notable change is the deprecation of several modules.
-Module::Build::Version has been deprecated and Module::Build now relies
-directly upon L<version>.  Module::Build::ModuleInfo has been deprecated in
-favor of a standalone copy of it called L<Module::Metadata>.
-Module::Build::YAML has been deprecated in favor of L<CPAN::Meta::YAML>.
+An optimisation that recent core changes have rendered unnecessary has been
+reverted.
 
 =item *
 
-C<Module::Metadata> has been upgraded from version 1.000003 to 1.000004.
+C<Devel::DProf> has been upgraded from version 20110225.01 to 20110228.00.
 
 =item *
 
-C<Parse::CPAN::Meta> has been upgraded from version 1.40 to 1.4401.
+C<Digest::SHA> has been upgraded from version 5.50 to 5.61
 
-The latest Parse::CPAN::Meta can now read YAML or JSON files using
-L<CPAN::Meta::YAML> and L<JSON::PP>, which are now part of the Perl core.
+New SHA-512/224 and SHA-512/256 transforms ref. NIST Draft FIPS 180-4 (February 2011)
 
 =item *
 
-C<Term::UI> has been upgraded from version 0.24 to 0.26
+C<ExtUtils::Command> has been upgraded from version 1.16 to 1.17.
 
 =item *
 
-C<Unicode::Collate> has been upgraded from version 0.68 to 0.72
+C<File::Copy> has been downgraded from version 2.22 to 2.21.
 
-This also sees the switch from using the pure-perl version of this
-module to the XS version.`
+An optimisation that recent core changes have rendered unnecessary has been
+reverted.
 
 =item *
 
-XXX
+C<IO> has been upgraded from version 1.25_03 to 1.25_04.
+
+=item *
+
+C<JSON::PP> has been upgraded from version 2.27103 to 2.27105
+
+=item *
+
+C<Locale::Codes> has been upgraded from version 3.15 to 3.16
+
+=item *
+
+C<Math::BigInt> has been upgraded from version 1.992 to 1.994
+
+=item *
+
+C<Math::BigInt::FastCalc> has been upgraded from version 0.24_02 to 0.28
+
+=item *
+
+C<Module::Build> has been upgraded from version 0.37_05 to 0.3800
+
+=item
+
+C<Module::CoreList> has been upgraded from version 2.45 to 2.46.
+
+=item *
+
+C<parent> has been upgraded from version 0.224 to 0.225
+
+=item *
+
+C<Storable> has been upgraded from version 2.26 to 2.27.
+
+=item *
+
+C<Test::Harness> has been upgraded from version 3.22 to 3.23
+
+=item *
+
+C<Test::Simple> has been upgraded from version 0.97_01 to 0.98
+
+=item *
+
+C<Tie::Hash::NamedCapture> has been upgraded from version 0.07 to 0.08.
+
+Some of the Perl code has been converted to XS for efficency's sake.
+
+=item *
+
+C<Tie::RefHash> has been upgraded from version 1.38 to 1.39.
+
+=item *
+
+C<Unicode::Collate> has been upgraded from version 0.72 to 0.73
+
+DUCET has been updated for Unicode 6.0.0 as Collate/allkeys.txt and
+the default UCA_Version is 22.
+
+=item *
+
+C<Unicode::UCD> has been upgraded from version 0.31 to 0.32.
+This includes a number of bug fixes:
+
+=over 4
+
+=item charinfo()
+
+=over 4
+
+=item *
+
+It is now updated to Unicode Version 6 with Corrigendum #8, except,
+as with Perl 5.14, the code point at U+1F514 has no name.
+
+=item *
+
+The Hangul syllable code points have the correct names, and their
+decompositions are always output without requiring L<Lingua::KO::Hangul::Util>
+to be installed.
+
+=item *
+
+The CJK (Chinese-Japanese-Korean) code points U+2A700 - U+2B734
+and U+2B740 - 2B81D are now properly handled.
+
+=item *
+
+The numeric values are now output for those CJK code points that have them.
+
+=item *
+
+The names that are output for code points with multiple aliases are now the
+corrected ones.
+
+=back
+
+=item charscript()
+
+This now correctly returns "Unknown" instead of C<undef> for the script
+of a code point that hasn't been assigned another one.
+
+=item charblock()
+
+This now correctly returns "No_Block" instead of C<undef> for the block
+of a code point that hasn't been assigned to another one.
+
+=back
 
 =back
 
@@ -203,24 +304,13 @@ 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<perlhack> and perlrepository
+=head3 L<XXX>
 
 =over 4
 
 =item *
 
-The L<perlhack> and perlrepository documents have been heavily edited and
-split up into several new documents.
-
-The L<perlhack> document is now much shorter, and focuses on the Perl 5
-development process and submitting patches to Perl. The technical content has
-been moved to several new documents, L<perlsource>, L<perlinterp>,
-L<perlhacktut>, and L<perlhacktips>. This technical content has only been
-lightly edited.
-
-The perlrepository document has been renamed to L<perlgit>. This new document
-is just a how-to on using git with the Perl source code. Any other content
-that used to be in perlrepository has been moved to perlhack.
+XXX Description of the change here
 
 =back
 
@@ -243,7 +333,26 @@ XXX Newly added diagnostic messages go here
 
 =item *
 
-XXX
+Regexp modifier "/%c" may not appear twice
+
+(F syntax) The regular expression pattern had one of the mutually exclusive
+modifiers repeated.  Remove all but one of the occurrences.
+
+=item *
+
+Regexp modifiers "/%c" and "/%c" are mutually exclusive
+
+(F syntax) The regular expression pattern had more than one of the mutually
+exclusive modifiers.  Retain only the modifier that is supposed to be there.
+
+=item *
+
+Insecure user-defined property %s
+
+(F) Perl detected tainted data when trying to compile a regular
+expression that contains a call to a user-defined character property
+function, i.e. C<\p{IsFoo}> or C<\p{InFoo}>.
+See L<perlunicode/User-Defined Character Properties> and L<perlsec>.
 
 =back
 
@@ -303,13 +412,24 @@ large changes to the testing harness (e.g. when parallel testing was added).
 Changes to existing files in F<t/> aren't worth summarising, although the bugs
 that they represent may be covered elsewhere.
 
-[ List each test improvement as a =item entry ]
+Some of the tests have been refactored. In some cases they were moved to
+new files:
 
 =over 4
 
 =item *
 
-XXX
+The tests for C<split /\s/> and Unicode have been moved from
+F<t/op/split.t> to F<t/op/split_unicode.t>.
+
+=item *
+
+F<t/re/re.t> has been moved to F<ext/re/t/re_funcs_u.t>.
+
+=item *
+
+The tests for [perl #72922] have been moved from F<t/re/qr.t> to
+F<t/re/qr-72922.t>.
 
 =back
 
@@ -356,16 +476,9 @@ L</Modules and Pragmata> section.
 
 =over 4
 
-=item Windows
-
-=over 4
-
-=item *
-
-The C<test-prep> build target now depends on F<pod/perltoc.pod> to allow the
-F<t/porting/buildtoc.t> test to run successfully.
+=item XXX-some-platform
 
-=back
+XXX
 
 =back
 
@@ -391,14 +504,52 @@ XXX Important bug fixes in the core language are summarised here.
 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
 L</Modules and Pragmata>.
 
-[ List each fix as a =item entry ]
-
 =over 4
 
 =item *
 
-A Unicode C<\p{}> property match in a regular rexpression pattern will
-now force Unicode rules for the rest of the regular expression
+A fix for a bug in C<length(undef)> in 5.13.4 introduced a regression that
+meant C<print length undef> did not warn when warnings were enabled. It now
+correctly warns [perl #85508].
+
+=item *
+
+The C<(?|...)> regular expression construct no longer crashes if the final
+branch has more sets of capturing parentheses than any other branch. This
+was fixed in Perl 5.10.1 for the case of a single branch, but that fix did
+not take multiple branches into account [perl #84746].
+
+=item *
+
+Accessing an element of a package array with a hard-coded number (as
+opposed to an arbitrary expression) would crash if the array did not exist.
+Usually the array would be autovivified during compilation, but typeglob
+manipulation could remove it, as in these two cases which used to crash:
+
+  *d = *a;  print $d[0];
+  undef *d; print $d[0];
+
+=item *
+
+C<#line> directives in string evals were not properly updating the arrays
+of lines of code (C<< @{"_<..."} >>) that the debugger (or any debugging or
+profiling module) uses. In threaded builds, they were not being updated at
+all. In non-threaded builds, the line number was ignored, so any change to
+the existing line number would cause the lines to be misnumbered
+[perl #79442].
+
+=item *
+
+C<$AUTOLOAD> used to remain tainted forever if it ever became tainted. Now
+it is correctly untainted if an autoloaded method is called and the method
+name was not tainted.
+
+=item *
+
+A bug has been fixed in the implementation of C<{...}> quantifiers in
+regular expressions that prevented the code block in
+C</((\w+)(?{ print $2 })){2}/> from seeing the C<$2> sometimes
+[perl #84294].
 
 =back