=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
[ 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
[ 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:
[ 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
=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
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
=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
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
=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
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