diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/pods/perl51311delta.pod')
-rw-r--r-- | Master/tlpkg/tlperl/lib/pods/perl51311delta.pod | 513 |
1 files changed, 513 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/pods/perl51311delta.pod b/Master/tlpkg/tlperl/lib/pods/perl51311delta.pod new file mode 100644 index 00000000000..8d537e9c8d8 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/pods/perl51311delta.pod @@ -0,0 +1,513 @@ +=encoding utf8 + +=head1 NAME + +perl51311delta - what is new for perl v5.13.11 + +=head1 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 +L<perl5139delta>, which describes differences between 5.13.9 and +5.13.10. + +=head1 Security + +=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 + +=head2 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 L<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. + +=head2 Passing references to warn() + +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. + +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. + +=head2 fork() emulation will not wait for signalled children + +On Windows parent processes would not terminate until all forked +childred had terminated first. However, C<kill('KILL', ...)> is +inherently unstable on pseudo-processes, and C<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 L<perlfork> for more information about the fork() emulation on +Windows. + +=head2 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. + +=head1 Performance Enhancements + +=over 4 + +=item * + +An earlier optimisation to speed up C<my @array = ...> and +C<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]. + +=back + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +C<attributes> has been upgraded from version 0.13 to 0.14. + +=item * + +C<base> has been upgraded from version 2.15 to 2.16. + +=item * + +C<CPAN> has been upgraded from version 1.94_65 to 1.9600. + +=item * + +C<CPANPLUS> has been upgraded from version 0.9101 to 0.9103 + +=item * + +C<CPANPLUS::Dist::Build> has been upgraded from version 0.52 to 0.54 + +=item * + +C<Cwd> has been downgraded from version 3.37 to 3.36. + +An optimisation that recent core changes have rendered unnecessary has been +reverted. + +=item * + +C<Devel::DProf> has been upgraded from version 20110225.01 to 20110228.00. + +=item * + +C<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) + +=item * + +C<ExtUtils::Command> has been upgraded from version 1.16 to 1.17. + +=item * + +C<File::Copy> has been downgraded from version 2.22 to 2.21. + +An optimisation that recent core changes have rendered unnecessary has been +reverted. + +=item * + +C<File::Glob> has been upgraded from version 1.11 to 1.12. + +=item * + +C<GDBM_File> has been upgraded from version 1.13 to 1.14. + +=item * + +C<Hash::Util> has been upgraded from version 0.10 to 0.11. + +=item * + +C<Hash::Util::FieldHash> has been upgraded from version 1.08 to 1.09. + +=item * + +C<HTTP::Tiny> has been upgraded from version 0.010 to 0.011. + +=item * + +C<I18N::Langinfo> has been upgraded from version 0.07 to 0.08. + +=item * + +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<mro> has been upgraded from version 1.06 to 1.07. + +=item * + +C<NDBM_File> has been upgraded from version 1.11 to 1.12. + +=item * + +C<parent> has been upgraded from version 0.224 to 0.225 + +=item * + +C<Pod::Simple> has been upgraded from version 3.15 to 3.16 + +=item * + +C<Storable> has been upgraded from version 2.26 to 2.27. + +=item * + +C<Sys::Hostname> has been upgraded from version 1.15 to 1.16. + +=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 + +=item * + +C<XS::Typemap> has been upgraded from version 0.04 to 0.05. + +=back + +=head1 Documentation + +=head2 Changes to Existing Documentation + +=head3 L<perlfunc> + +=over 4 + +=item * + +Clarified the order in which to check C<$@> and C<$!> after C<do FILE>. +(RT #80626) + +=back + +=head1 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 L<perldiag>. + +=head2 New Diagnostics + +=over 4 + +=item * + +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 + +=head1 Testing + +Many of the tests have been refactored to use testing libraries more +consistently. In some cases test files were created or deleted: + +=over 4 + +=item * + +The tests for C<split /\s/> and Unicode have been moved from +F<t/op/split.t> to the new 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 the new +F<t/re/qr-72922.t>. + +=item * + +F<t/re/reg_unsafe.t> has been deleted and its only test moved to +F<t/re/pat_advanced.t>. + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +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]. + +=item * + +C<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]. + +=item * + +DESTROY methods of objects implementing ties are no longer able to crash by +accessing the tied variable through a weak reference [perl #86328]. + +=item * + +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 L</"fork() emulation will not wait for signalled children"> for a +better way to terminate child processes that avoids deadlocks altogether. + +=item * + +Ensure that the C<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 C<exists> code had been compiled, as the compiler implicitly creates +typeglobs in the Errno symbol table when it builds the optree for the C<exists +code>. + +=back + +=head1 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 Arnfjörð +Bjarmason + +=head1 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 L<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 C<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. + +=head1 SEE ALSO + +The F<Changes> file for an explanation of how to view exhaustive details +on what changed. + +The F<INSTALL> file for how to build Perl. + +The F<README> file for general stuff. + +The F<Artistic> and F<Copying> files for copyright information. + +=cut |