manpagez: man pages & more
man perl51311delta(1)
Home | html | info | man
perl51311delta(1)      Perl Programmers Reference Guide      perl51311delta(1)




NAME

       perl51311delta - what is new for perl v5.13.11


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

   Perl source code is read in text mode on Windows
       Perl scripts used to be read in binary mode on Windows for the benefit
       of the ByteLoader module (which is no longer part of core Perl).  This
       had the side effect of breaking various operations on the DATA
       filehandle, including seek()/tell(), and even simply reading from DATA
       after file handles have been flushed by a call to system(), backticks,
       fork() etc.

       The default build options for Windows have been changed to read Perl
       source code on Windows in text mode now.  Hopefully ByteLoader will be
       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   "IO" has been upgraded from version 1.25_03 to 1.25_04.

       o   "JSON::PP" has been upgraded from version 2.27103 to 2.27105

       o   "Locale::Codes" has been upgraded from version 3.15 to 3.16

       o   "Math::BigInt" has been upgraded from version 1.992 to 1.994

       o   "Math::BigInt::FastCalc" has been upgraded from version 0.24_02 to
           0.28

       o   "Module::Build" has been upgraded from version 0.37_05 to 0.3800

       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()
               This now correctly returns "Unknown" instead of "undef" for the
               script of a code point that hasn't been assigned another one.

           charblock()
               This now correctly returns "No_Block" instead of "undef" for
               the block of a code point that hasn't been assigned to another
               one.

       o   "XS::Typemap" has been upgraded from version 0.04 to 0.05.


Documentation

   Changes to Existing Documentation
       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
           [perl #84746].

       o   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];

       o   "#line" directives in string evals were not properly updating the
           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


Reporting Bugs

       If you find what you think is a bug, you might check the articles
       recently posted to the comp.lang.perl.misc newsgroup and the perl bug
       database at http://rt.perl.org/perlbug/ .  There may also be
       information at http://www.perl.org/ , the Perl Home Page.

       If you believe you have an unreported bug, please run the perlbug
       program included with your release.  Be sure to trim your bug down to a
       tiny but sufficient test case.  Your bug report, along with the output
       of "perl -V", will be sent off to perlbug@perl.org to be analysed by
       the Perl porting team.

       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.0                      2011-05-07                 perl51311delta(1)

perl 5.14.0 - Generated Fri May 20 15:51:21 CDT 2011
© manpagez.com 2000-2021
Individual documents may contain additional copyright information.