4 This has been completed up to 007f907 except for:
5 b3dbdd48ca2da90bce7f16d545cca54c3dc58f35 (Leon Timmermans)
6 816005240f1a3b9989c940e630e829048597537c (Craig Berry)
7 44caa20c7d9248fd77483468d77c9b5835e7066e (Craig Berry)
8 4581ada393ba58f2b8f438c7b9c336d6c79ec94c (Craig Berry)
9 3b28d668e9efe9433c3099521167a6723cbddc26 (Craig Berry)
10 and any bugs that Karl Williamson has fixed.
14 [ this is a template for a new perldelta file. Any text flagged as
15 XXX needs to be processed before release. ]
17 perldelta - what is new for perl v5.13.11
21 This document describes differences between the 5.13.10 release and
24 If you are upgrading from an earlier release such as 5.13.9, first read
25 L<perl5139delta>, which describes differences between 5.13.9 and
30 XXX Any important notices here
32 =head1 Core Enhancements
34 XXX New core language features go here. Summarise user-visible core language
35 enhancements. Particularly prominent performance optimisations could go
36 here, but most should go in the L</Performance Enhancements> section.
38 [ List each enhancement as a =head2 entry ]
42 XXX Any security-related notices go here. In particular, any security
43 vulnerabilities closed should be noted here rather than in the
44 L</Selected Bug Fixes> section.
46 [ List each security issue as a =head2 entry ]
48 =head2 User-defined regular expression properties
50 Perl no longer allows a tainted regular expression to invoke a user-defined
51 property via C<\p{...}> syntax. It simply dies instead [perl #82616].
53 =head1 Incompatible Changes
55 XXX For a release on a stable branch, this section aspires to be:
57 There are no changes intentionally incompatible with 5.XXX.XXX. If any
58 exist, they are bugs and reports are welcome.
60 [ List each incompatible change as a =head2 entry ]
62 =head2 Passing references to warn()
64 An earlier Perl 5.13.x release changed C<warn($ref)> to leave the reference
65 unchanged, allowing C<$SIG{__WARN__}> handlers to access the original
66 reference. But this stopped warnings that were references from having the
67 file and line number appended even when there was no C<$SIG{__WARN__}>
70 Now C<warn> checks for the presence of such a handler and, if there is
71 none, proceeds to stringify the reference and append the file and line
72 number. This allows simple uses of C<warn> for debugging to continue to
73 work as they did before.
75 =head2 fork() emulation will not wait for signalled children
77 On Windows parent processes would not terminate until all forked
78 childred had terminated first. However, C<kill('KILL', ...)> is
79 inherently unstable on pseudo-processes, and C<kill('TERM', ...)>
80 might not get delivered if the child if blocked in a system call.
82 To avoid the deadlock and still provide a safe mechanism to terminate
83 the hosting process, Perl will now no longer wait for children that
84 have been sent a SIGTERM signal. It is up to the parent process to
85 waitpid() for these children if child clean-up processing must be
86 allowed to finish. However, it is also the responsibility of the
87 parent then to avoid the deadlock by making sure the child process
88 can't be blocked on I/O either.
90 See L<perlfork> for more information about the fork() emulation on
93 =head2 Perl source code is read in text mode on Windows
95 Perl scripts used to be read in binary mode on Windows for the benefit
96 of the ByteLoader module (which is no longer part of core Perl). This
97 had the side effect of breaking various operations on the DATA filehandle,
98 including seek()/tell(), and even simply reading from DATA after file handles
99 have been flushed by a call to system(), backticks, fork() etc.
101 The default build options for Windows have been changed to read Perl source
102 code on Windows in text mode now. Hopefully ByteLoader will be updated on
103 CPAN to automatically handle this situation.
107 XXX Any deprecated features, syntax, modules etc. should be listed here.
108 In particular, deprecated modules should be listed here even if they are
109 listed as an updated module in the L</Modules and Pragmata> section.
111 [ List each deprecation as a =head2 entry ]
113 =head1 Performance Enhancements
115 XXX Changes which enhance performance without changing behaviour go here. There
116 may well be none in a stable release.
118 [ List each enhancement as a =item entry ]
124 An earlier optimisation to speed up C<my @array = ...> and
125 C<my %hash = ...> assignments caused a bug and was disabled in Perl 5.12.0.
127 Now we have found another way to speed up these assignments [perl #82110].
131 =head1 Modules and Pragmata
133 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
134 go here. If Module::CoreList is updated, generate an initial draft of the
135 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
136 entries to STDOUT. Results can be pasted in place of the '=head2' entries
137 below. A paragraph summary for important changes should then be added by hand.
138 In an ideal world, dual-life modules would have a F<Changes> file that could be
141 [ Within each section, list entries as a =item entry ]
143 =head2 New Modules and Pragmata
153 =head2 Updated Modules and Pragmata
159 C<attributes> has been upgraded from version 0.13 to 0.14.
163 C<base> has been upgraded from version 2.15 to 2.16.
167 C<CPAN> has been upgraded from version 1.94_65 to 1.9600.
171 C<CPANPLUS> has been upgraded from version 0.9101 to 0.9103
175 C<CPANPLUS::Dist::Build> has been upgraded from version 0.52 to 0.54
179 C<Cwd> has been downgraded from version 3.37 to 3.36.
181 An optimisation that recent core changes have rendered unnecessary has been
186 C<Devel::DProf> has been upgraded from version 20110225.01 to 20110228.00.
190 C<Digest::SHA> has been upgraded from version 5.50 to 5.61
192 New SHA-512/224 and SHA-512/256 transforms ref. NIST Draft FIPS 180-4 (February 2011)
196 C<ExtUtils::Command> has been upgraded from version 1.16 to 1.17.
200 C<File::Copy> has been downgraded from version 2.22 to 2.21.
202 An optimisation that recent core changes have rendered unnecessary has been
207 C<File::Glob> has been upgraded from version 1.11 to 1.12.
211 C<GDBM_File> has been upgraded from version 1.13 to 1.14.
215 C<Hash::Util> has been upgraded from version 0.10 to 0.11.
219 C<Hash::Util::FieldHash> has been upgraded from version 1.08 to 1.09.
223 C<I18N::Langinfo> has been upgraded from version 0.07 to 0.08.
227 C<IO> has been upgraded from version 1.25_03 to 1.25_04.
231 C<JSON::PP> has been upgraded from version 2.27103 to 2.27105
235 C<Locale::Codes> has been upgraded from version 3.15 to 3.16
239 C<Math::BigInt> has been upgraded from version 1.992 to 1.994
243 C<Math::BigInt::FastCalc> has been upgraded from version 0.24_02 to 0.28
247 C<Module::Build> has been upgraded from version 0.37_05 to 0.3800
251 C<Module::CoreList> has been upgraded from version 2.45 to 2.46.
255 C<mro> has been upgraded from version 1.06 to 1.07.
259 C<NDBM_File> has been upgraded from version 1.11 to 1.12.
263 C<parent> has been upgraded from version 0.224 to 0.225
267 C<Pod::Simple> has been upgraded from version 3.15 to 3.16
271 C<Storable> has been upgraded from version 2.26 to 2.27.
275 C<Sys::Hostname> has been upgraded from version 1.15 to 1.16.
279 C<Test::Harness> has been upgraded from version 3.22 to 3.23
283 C<Test::Simple> has been upgraded from version 0.97_01 to 0.98
287 C<Tie::Hash::NamedCapture> has been upgraded from version 0.07 to 0.08.
289 Some of the Perl code has been converted to XS for efficency's sake.
293 C<Tie::RefHash> has been upgraded from version 1.38 to 1.39.
297 C<Unicode::Collate> has been upgraded from version 0.72 to 0.73
299 DUCET has been updated for Unicode 6.0.0 as Collate/allkeys.txt and
300 the default UCA_Version is 22.
304 C<Unicode::UCD> has been upgraded from version 0.31 to 0.32.
305 This includes a number of bug fixes:
315 It is now updated to Unicode Version 6 with Corrigendum #8, except,
316 as with Perl 5.14, the code point at U+1F514 has no name.
320 The Hangul syllable code points have the correct names, and their
321 decompositions are always output without requiring L<Lingua::KO::Hangul::Util>
326 The CJK (Chinese-Japanese-Korean) code points U+2A700 - U+2B734
327 and U+2B740 - 2B81D are now properly handled.
331 The numeric values are now output for those CJK code points that have them.
335 The names that are output for code points with multiple aliases are now the
342 This now correctly returns "Unknown" instead of C<undef> for the script
343 of a code point that hasn't been assigned another one.
347 This now correctly returns "No_Block" instead of C<undef> for the block
348 of a code point that hasn't been assigned to another one.
354 C<XS::Typemap> has been upgraded from version 0.04 to 0.05.
358 =head2 Removed Modules and Pragmata
370 XXX Changes to files in F<pod/> go here. Consider grouping entries by
371 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
373 =head2 New Documentation
375 XXX Changes which create B<new> files in F<pod/> go here.
379 XXX Description of the purpose of the new file here
381 =head2 Changes to Existing Documentation
383 XXX Changes which significantly change existing files in F<pod/> go here.
384 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
393 XXX Description of the change here
399 The following additions or changes have been made to diagnostic output,
400 including warnings and fatal error messages. For the complete list of
401 diagnostic messages, see L<perldiag>.
403 XXX New or changed warnings emitted by the core's C<C> code go here. Also
404 include any changes in L<perldiag> that reconcile it to the C<C> code.
406 [ Within each section, list entries as a =item entry ]
408 =head2 New Diagnostics
410 XXX Newly added diagnostic messages go here
416 Regexp modifier "/%c" may not appear twice
418 (F syntax) The regular expression pattern had one of the mutually exclusive
419 modifiers repeated. Remove all but one of the occurrences.
423 Regexp modifiers "/%c" and "/%c" are mutually exclusive
425 (F syntax) The regular expression pattern had more than one of the mutually
426 exclusive modifiers. Retain only the modifier that is supposed to be there.
430 Insecure user-defined property %s
432 (F) Perl detected tainted data when trying to compile a regular
433 expression that contains a call to a user-defined character property
434 function, i.e. C<\p{IsFoo}> or C<\p{InFoo}>.
435 See L<perlunicode/User-Defined Character Properties> and L<perlsec>.
439 =head2 Changes to Existing Diagnostics
441 XXX Changes (i.e. rewording) of diagnostic messages go here
451 =head1 Utility Changes
453 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
454 here. Most of these are built within the directories F<utils> and F<x2p>.
456 [ List utility changes as a =head3 entry for each utility and =item
457 entries for each change
458 Use L<XXX> with program names to get proper documentation linking. ]
470 =head1 Configuration and Compilation
472 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
473 go here. Any other changes to the Perl build process should be listed here.
474 However, any platform-specific changes should be listed in the
475 L</Platform Support> section, instead.
477 [ List changes as a =item entry ].
483 Compilation on Windows with Visual Studio 2010 is now supported.
489 XXX Any significant changes to the testing of a freshly built perl should be
490 listed here. Changes which create B<new> files in F<t/> go here as do any
491 large changes to the testing harness (e.g. when parallel testing was added).
492 Changes to existing files in F<t/> aren't worth summarising, although the bugs
493 that they represent may be covered elsewhere.
495 Many of the tests have been refactored to use testing libraries more
496 consistently. In some cases test files were created or deleted:
502 The tests for C<split /\s/> and Unicode have been moved from
503 F<t/op/split.t> to the new F<t/op/split_unicode.t>.
507 F<t/re/re.t> has been moved to F<ext/re/t/re_funcs_u.t>.
511 The tests for [perl #72922] have been moved from F<t/re/qr.t> to the new
516 F<t/re/reg_unsafe.t> has been deleted and its only test moved to
517 F<t/re/pat_advanced.t>.
521 =head1 Platform Support
523 XXX Any changes to platform support should be listed in the sections below.
525 [ Within the sections, list each platform as a =item entry with specific
526 changes as paragraphs below it. ]
530 XXX List any platforms that this version of perl compiles on, that previous
531 versions did not. These will either be enabled by new files in the F<hints/>
532 directories, or new subdirectories and F<README> files at the top level of the
537 =item XXX-some-platform
543 =head2 Discontinued Platforms
545 XXX List any platforms that this version of perl no longer compiles on.
549 =item XXX-some-platform
555 =head2 Platform-Specific Notes
557 XXX List any changes for specific platforms. This could include configuration
558 and compilation changes or changes in portability/compatibility. However,
559 changes within modules for platforms should generally be listed in the
560 L</Modules and Pragmata> section.
564 =item XXX-some-platform
570 =head1 Internal Changes
572 XXX Changes which affect the interface available to C<XS> code go here.
573 Other significant internal changes for future core maintainers should
576 [ List each test improvement as a =item entry ]
586 =head1 Selected Bug Fixes
588 XXX Important bug fixes in the core language are summarised here.
589 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
590 L</Modules and Pragmata>.
596 A fix for a bug in C<length(undef)> in 5.13.4 introduced a regression that
597 meant C<print length undef> did not warn when warnings were enabled. It now
598 correctly warns [perl #85508].
602 The C<(?|...)> regular expression construct no longer crashes if the final
603 branch has more sets of capturing parentheses than any other branch. This
604 was fixed in Perl 5.10.1 for the case of a single branch, but that fix did
605 not take multiple branches into account [perl #84746].
609 Accessing an element of a package array with a hard-coded number (as
610 opposed to an arbitrary expression) would crash if the array did not exist.
611 Usually the array would be autovivified during compilation, but typeglob
612 manipulation could remove it, as in these two cases which used to crash:
614 *d = *a; print $d[0];
615 undef *d; print $d[0];
619 C<#line> directives in string evals were not properly updating the arrays
620 of lines of code (C<< @{"_<..."} >>) that the debugger (or any debugging or
621 profiling module) uses. In threaded builds, they were not being updated at
622 all. In non-threaded builds, the line number was ignored, so any change to
623 the existing line number would cause the lines to be misnumbered
628 C<$AUTOLOAD> used to remain tainted forever if it ever became tainted. Now
629 it is correctly untainted if an autoloaded method is called and the method
630 name was not tainted.
634 A bug has been fixed in the implementation of C<{...}> quantifiers in
635 regular expressions that prevented the code block in
636 C</((\w+)(?{ print $2 })){2}/> from seeing the C<$2> sometimes
641 C<sprintf> now dies when passed a tainted scalar for the format. It did
642 already die for arbitrary expressions, but not for simple scalars
647 DESTROY methods of objects implementing ties are no longer able to crash by
648 accessing the tied variable through a weak reference [perl #86328].
652 On Windows, calling kill(9, $child) on a pseudo-process created by the fork()
653 emulation is inherently unstable. It can also be responsible for overriding
654 the parent process exit code with a value of '9' if the parent terminates
655 right after killing the child. This condition will now happen a lot less
658 See also L</"fork() emulation will not wait for signalled children"> for a
659 better way to terminate child processes that avoids deadlocks altogether.
663 =head1 Known Problems
665 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
666 tests that had to be C<TODO>ed for the release would be noted here, unless
667 they were specific to a particular platform (see below).
669 This is a list of some significant unfixed bugs, which are regressions
670 from either 5.XXX.XXX or 5.XXX.XXX.
672 [ List each fix as a =item entry ]
684 XXX If any significant core contributor has died, we've added a short obituary
687 =head1 Acknowledgements
689 XXX The list of people to thank goes here.
691 =head1 Reporting Bugs
693 If you find what you think is a bug, you might check the articles
694 recently posted to the comp.lang.perl.misc newsgroup and the perl
695 bug database at http://rt.perl.org/perlbug/ . There may also be
696 information at http://www.perl.org/ , the Perl Home Page.
698 If you believe you have an unreported bug, please run the L<perlbug>
699 program included with your release. Be sure to trim your bug down
700 to a tiny but sufficient test case. Your bug report, along with the
701 output of C<perl -V>, will be sent off to perlbug@perl.org to be
702 analysed by the Perl porting team.
704 If the bug you are reporting has security implications, which make it
705 inappropriate to send to a publicly archived mailing list, then please send
706 it to perl5-security-report@perl.org. This points to a closed subscription
707 unarchived mailing list, which includes all the core committers, who be able
708 to help assess the impact of issues, figure out a resolution, and help
709 co-ordinate the release of patches to mitigate or fix the problem across all
710 platforms on which Perl is supported. Please only use this address for
711 security issues in the Perl core, not for modules independently
716 The F<Changes> file for an explanation of how to view exhaustive details
719 The F<INSTALL> file for how to build Perl.
721 The F<README> file for general stuff.
723 The F<Artistic> and F<Copying> files for copyright information.