perl51311delta


DESCRIPTION
       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.13.9, first read
       perl5139delta, which describes differences between 5.13.9 and 5.13.10.

Security
   User-defined regular expression properties
       Perl no longer allows a tainted regular expression to invoke a user-
       defined property via "\p{...}" syntax. It simply dies instead [perl
       #82616].

Incompatible Changes
   local($_) will strip all magic from $_
       local() on scalar variables will give them a new value, but keep all
       their magic intact.  This has proven to be problematic for the default
       scalar variable $_, where perlsub recommends that any subroutine that
       assigns to $_ should localize it first.  This would throw an exception
       if $_ is aliased to a read-only variable, and could have various
       unintentional side-effects in general.

       Therefore, as an exception to the general rule, local($_) will not only
       assign a new value to $_, but also remove all existing magic from it as
       well.

   Passing references to warn()
       An earlier Perl 5.13.x release changed "warn($ref)" to leave the
       reference unchanged, allowing $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
       $SIG{__WARN__} handler in place.

       Now "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 "warn" for debugging to continue to
       work as they did before.

   fork() emulation will not wait for signalled children
       On Windows parent processes would not terminate until all forked
       childred had terminated first.  However, "kill('KILL', ...)" is
       inherently unstable on pseudo-processes, and "kill('TERM', ...)"  might
       not get delivered if the child if blocked in a system call.

       To avoid the deadlock and still provide a safe mechanism to terminate
       the hosting process, Perl will now no longer wait for children that
       have been sent a SIGTERM signal.  It is up to the parent process to
       waitpid() for these children if child clean-up processing must be
       allowed to finish. However, it is also the responsibility of the parent
       then to avoid the deadlock by making sure the child process can't be
       blocked on I/O either.

       See perlfork for more information about the fork() emulation on
       updated on CPAN to automatically handle this situation.

Performance Enhancements
       o   An earlier optimisation to speed up "my @array = ..." and "my %hash
           = ..." assignments caused a bug and was disabled in Perl 5.12.0.

           Now we have found another way to speed up these assignments [perl
           #82110].

Modules and Pragmata
   Updated Modules and Pragmata
       o   "attributes" has been upgraded from version 0.13 to 0.14.

       o   "base" has been upgraded from version 2.15 to 2.16.

       o   "CPAN" has been upgraded from version 1.94_65 to 1.9600.

       o   "CPANPLUS" has been upgraded from version 0.9101 to 0.9103

       o   "CPANPLUS::Dist::Build" has been upgraded from version 0.52 to 0.54

       o   "Cwd" has been downgraded from version 3.37 to 3.36.

           An optimisation that recent core changes have rendered unnecessary
           has been reverted.

       o   "Devel::DProf" has been upgraded from version 20110225.01 to
           20110228.00.

       o   "Digest::SHA" has been upgraded from version 5.50 to 5.61

           New SHA-512/224 and SHA-512/256 transforms ref. NIST Draft FIPS
           180-4 (February 2011)

       o   "ExtUtils::Command" has been upgraded from version 1.16 to 1.17.

       o   "File::Copy" has been downgraded from version 2.22 to 2.21.

           An optimisation that recent core changes have rendered unnecessary
           has been reverted.

       o   "File::Glob" has been upgraded from version 1.11 to 1.12.

       o   "GDBM_File" has been upgraded from version 1.13 to 1.14.

       o   "Hash::Util" has been upgraded from version 0.10 to 0.11.

       o   "Hash::Util::FieldHash" has been upgraded from version 1.08 to
           1.09.

       o   "HTTP::Tiny" has been upgraded from version 0.010 to 0.011.

       o   "I18N::Langinfo" has been upgraded from version 0.07 to 0.08.


       o   "Module::CoreList" has been upgraded from version 2.45 to 2.46.

       o   "mro" has been upgraded from version 1.06 to 1.07.

       o   "NDBM_File" has been upgraded from version 1.11 to 1.12.

       o   "parent" has been upgraded from version 0.224 to 0.225

       o   "Pod::Simple" has been upgraded from version 3.15 to 3.16

       o   "Storable" has been upgraded from version 2.26 to 2.27.

       o   "Sys::Hostname" has been upgraded from version 1.15 to 1.16.

       o   "Test::Harness" has been upgraded from version 3.22 to 3.23

       o   "Test::Simple" has been upgraded from version 0.97_01 to 0.98

       o   "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.

       o   "Tie::RefHash" has been upgraded from version 1.38 to 1.39.

       o   "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.

       o   "Unicode::UCD" has been upgraded from version 0.31 to 0.32.  This
           includes a number of bug fixes:

           charinfo()
               o   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.

               o   The Hangul syllable code points have the correct names, and
                   their decompositions are always output without requiring
                   Lingua::KO::Hangul::Util to be installed.

               o   The CJK (Chinese-Japanese-Korean) code points U+2A700 -
                   U+2B734 and U+2B740 - 2B81D are now properly handled.

               o   The numeric values are now output for those CJK code points
                   that have them.

               o   The names that are output for code points with multiple
                   aliases are now the corrected ones.

           charscript()

       perlfunc

       o   Clarified the order in which to check $@ and $! after "do FILE".
           (RT #80626)

Diagnostics
       The following additions or changes have been made to diagnostic output,
       including warnings and fatal error messages.  For the complete list of
       diagnostic messages, see perldiag.

   New Diagnostics
       o   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.

       o   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.

       o   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. "\p{IsFoo}" or "\p{InFoo}".  See "User-
           Defined Character Properties" in perlunicode and perlsec.

Testing
       Many of the tests have been refactored to use testing libraries more
       consistently. In some cases test files were created or deleted:

       o   The tests for "split /\s/" and Unicode have been moved from
           t/op/split.t to the new t/op/split_unicode.t.

       o   t/re/re.t has been moved to ext/re/t/re_funcs_u.t.

       o   The tests for [perl #72922] have been moved from t/re/qr.t to the
           new t/re/qr-72922.t.

       o   t/re/reg_unsafe.t has been deleted and its only test moved to
           t/re/pat_advanced.t.

Selected Bug Fixes
       o   A fix for a bug in "length(undef)" in 5.13.4 introduced a
           regression that meant "print length undef" did not warn when
           warnings were enabled. It now correctly warns [perl #85508].

       o   The "(?|...)" 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
           arrays of lines of code ("@{"_<..."}") 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].

       o   $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.

       o   A bug has been fixed in the implementation of "{...}" quantifiers
           in regular expressions that prevented the code block in "/((\w+)(?{
           print $2 })){2}/" from seeing the $2 sometimes [perl #84294].

       o   "sprintf" now dies when passed a tainted scalar for the format. It
           did already die for arbitrary expressions, but not for simple
           scalars [perl #82250].

       o   DESTROY methods of objects implementing ties are no longer able to
           crash by accessing the tied variable through a weak reference [perl
           #86328].

       o   On Windows, calling kill(9, $child) on a pseudo-process created by
           the fork() emulation is inherently unstable.  It can also be
           responsible for overriding the parent process exit code with a
           value of '9' if the parent terminates right after killing the
           child.  This condition will now happen a lot less often than
           before.

           See also "fork() emulation will not wait for signalled children"
           for a better way to terminate child processes that avoids deadlocks
           altogether.

       o   Ensure that the "exists &Errno::EFOO" idiom continues to work as
           documented.

           A change post-5.12 caused the documented idiom not to work if Errno
           was loaded after the "exists" code had been compiled, as the
           compiler implicitly creates typeglobs in the Errno symbol table
           when it builds the optree for the "exists code".

Acknowledgements
       Perl 5.13.11 represents approximately one month of development since
       Perl 5.13.10 and contains approximately 80,000 lines of changes across
       549 files from 31 authors and committers:

       Alastair Douglas, Arvan, Boris Ratner, brian d foy, Chris 'BinGOs'
       Williams, Craig A. Berry, David Golden, David Leadbeater, David
       Mitchell, Father Chrysostomos, Florian Ragwitz, Jan Dubois, Karl
       Williamson, Kevin Ryde, Leon Brocard, Leon Timmermans, Michael Stevens,
       Michael Witten, Moritz Lenz, Nicholas Clark, Paul Johnson, Peter John
       Acklam, Reini Urban, Robin Barker, Steve Hay, Sullivan Beck, Tony Cook,
       Vadim Konovalov, Yves Orton, Zefram and var Arnfjoer` Bjarmason

       If the bug you are reporting has security implications, which make it
       inappropriate to send to a publicly archived mailing list, then please
       send it to perl5-security-report@perl.org. This points to a closed
       subscription unarchived mailing list, which includes all the core
       committers, who be able to help assess the impact of issues, figure out
       a resolution, and help co-ordinate the release of patches to mitigate
       or fix the problem across all platforms on which Perl is supported.
       Please only use this address for security issues in the Perl core, not
       for modules independently distributed on CPAN.

SEE ALSO
       The Changes file for an explanation of how to view exhaustive details
       on what changed.

       The INSTALL file for how to build Perl.

       The README file for general stuff.

       The Artistic and Copying files for copyright information.



perl v5.14.2                      2011-09-26                 PERL51311DELTA(1)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2017 Hurricane Electric. All Rights Reserved.