This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
52a6aecddcb68239cd9f216b35435231600f98f7
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
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.
11
12 =head1 NAME
13
14 [ this is a template for a new perldelta file. Any text flagged as
15 XXX needs to be processed before release. ]
16
17 perldelta - what is new for perl v5.13.11
18
19 =head1 DESCRIPTION
20
21 This document describes differences between the 5.13.10 release and
22 the 5.13.11 release.
23
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
26 5.13.10.
27
28 =head1 Notice
29
30 XXX Any important notices here
31
32 =head1 Core Enhancements
33
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.
37
38 [ List each enhancement as a =head2 entry ]
39
40 =head1 Security
41
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.
45
46 [ List each security issue as a =head2 entry ]
47
48 =head2 User-defined regular expression properties
49
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].
52
53 =head1 Incompatible Changes
54
55 XXX For a release on a stable branch, this section aspires to be:
56
57     There are no changes intentionally incompatible with 5.XXX.XXX. If any
58     exist, they are bugs and reports are welcome.
59
60 [ List each incompatible change as a =head2 entry ]
61
62 =head2 Passing references to warn()
63
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__}>
68 handler in place.
69
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.
74
75 =head2 fork() emulation will not wait for signalled children
76
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.
81
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.
89
90 See L<perlfork> for more information about the fork() emulation on
91 Windows.
92
93 =head2 Perl source code is read in text mode on Windows
94
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.
100
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.
104
105 =head1 Deprecations
106
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.
110
111 [ List each deprecation as a =head2 entry ]
112
113 =head1 Performance Enhancements
114
115 XXX Changes which enhance performance without changing behaviour go here. There
116 may well be none in a stable release.
117
118 [ List each enhancement as a =item entry ]
119
120 =over 4
121
122 =item *
123
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.
126
127 Now we have found another way to speed up these assignments [perl #82110].
128
129 =back
130
131 =head1 Modules and Pragmata
132
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
139 cribbed.
140
141 [ Within each section, list entries as a =item entry ]
142
143 =head2 New Modules and Pragmata
144
145 =over 4
146
147 =item *
148
149 XXX
150
151 =back
152
153 =head2 Updated Modules and Pragmata
154
155 =over 4
156
157 =item *
158
159 C<attributes> has been upgraded from version 0.13 to 0.14.
160
161 =item *
162
163 C<base> has been upgraded from version 2.15 to 2.16.
164
165 =item *
166
167 C<CPAN> has been upgraded from version 1.94_65 to 1.9600.
168
169 =item *
170
171 C<CPANPLUS> has been upgraded from version 0.9101 to 0.9103
172
173 =item *
174
175 C<CPANPLUS::Dist::Build> has been upgraded from version 0.52 to 0.54
176
177 =item *
178
179 C<Cwd> has been downgraded from version 3.37 to 3.36.
180
181 An optimisation that recent core changes have rendered unnecessary has been
182 reverted.
183
184 =item *
185
186 C<Devel::DProf> has been upgraded from version 20110225.01 to 20110228.00.
187
188 =item *
189
190 C<Digest::SHA> has been upgraded from version 5.50 to 5.61
191
192 New SHA-512/224 and SHA-512/256 transforms ref. NIST Draft FIPS 180-4 (February 2011)
193
194 =item *
195
196 C<ExtUtils::Command> has been upgraded from version 1.16 to 1.17.
197
198 =item *
199
200 C<File::Copy> has been downgraded from version 2.22 to 2.21.
201
202 An optimisation that recent core changes have rendered unnecessary has been
203 reverted.
204
205 =item *
206
207 C<File::Glob> has been upgraded from version 1.11 to 1.12.
208
209 =item *
210
211 C<GDBM_File> has been upgraded from version 1.13 to 1.14.
212
213 =item *
214
215 C<Hash::Util> has been upgraded from version 0.10 to 0.11.
216
217 =item *
218
219 C<Hash::Util::FieldHash> has been upgraded from version 1.08 to 1.09.
220
221 =item *
222
223 C<I18N::Langinfo> has been upgraded from version 0.07 to 0.08.
224
225 =item *
226
227 C<IO> has been upgraded from version 1.25_03 to 1.25_04.
228
229 =item *
230
231 C<JSON::PP> has been upgraded from version 2.27103 to 2.27105
232
233 =item *
234
235 C<Locale::Codes> has been upgraded from version 3.15 to 3.16
236
237 =item *
238
239 C<Math::BigInt> has been upgraded from version 1.992 to 1.994
240
241 =item *
242
243 C<Math::BigInt::FastCalc> has been upgraded from version 0.24_02 to 0.28
244
245 =item *
246
247 C<Module::Build> has been upgraded from version 0.37_05 to 0.3800
248
249 =item
250
251 C<Module::CoreList> has been upgraded from version 2.45 to 2.46.
252
253 =item *
254
255 C<mro> has been upgraded from version 1.06 to 1.07.
256
257 =item *
258
259 C<NDBM_File> has been upgraded from version 1.11 to 1.12.
260
261 =item *
262
263 C<parent> has been upgraded from version 0.224 to 0.225
264
265 =item *
266
267 C<Pod::Simple> has been upgraded from version 3.15 to 3.16
268
269 =item *
270
271 C<Storable> has been upgraded from version 2.26 to 2.27.
272
273 =item *
274
275 C<Sys::Hostname> has been upgraded from version 1.15 to 1.16.
276
277 =item *
278
279 C<Test::Harness> has been upgraded from version 3.22 to 3.23
280
281 =item *
282
283 C<Test::Simple> has been upgraded from version 0.97_01 to 0.98
284
285 =item *
286
287 C<Tie::Hash::NamedCapture> has been upgraded from version 0.07 to 0.08.
288
289 Some of the Perl code has been converted to XS for efficency's sake.
290
291 =item *
292
293 C<Tie::RefHash> has been upgraded from version 1.38 to 1.39.
294
295 =item *
296
297 C<Unicode::Collate> has been upgraded from version 0.72 to 0.73
298
299 DUCET has been updated for Unicode 6.0.0 as Collate/allkeys.txt and
300 the default UCA_Version is 22.
301
302 =item *
303
304 C<Unicode::UCD> has been upgraded from version 0.31 to 0.32.
305 This includes a number of bug fixes:
306
307 =over 4
308
309 =item charinfo()
310
311 =over 4
312
313 =item *
314
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.
317
318 =item *
319
320 The Hangul syllable code points have the correct names, and their
321 decompositions are always output without requiring L<Lingua::KO::Hangul::Util>
322 to be installed.
323
324 =item *
325
326 The CJK (Chinese-Japanese-Korean) code points U+2A700 - U+2B734
327 and U+2B740 - 2B81D are now properly handled.
328
329 =item *
330
331 The numeric values are now output for those CJK code points that have them.
332
333 =item *
334
335 The names that are output for code points with multiple aliases are now the
336 corrected ones.
337
338 =back
339
340 =item charscript()
341
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.
344
345 =item charblock()
346
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.
349
350 =back
351
352 =item *
353
354 C<XS::Typemap> has been upgraded from version 0.04 to 0.05.
355
356 =back
357
358 =head2 Removed Modules and Pragmata
359
360 =over 4
361
362 =item *
363
364 XXX
365
366 =back
367
368 =head1 Documentation
369
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>.
372
373 =head2 New Documentation
374
375 XXX Changes which create B<new> files in F<pod/> go here.
376
377 =head3 L<XXX>
378
379 XXX Description of the purpose of the new file here
380
381 =head2 Changes to Existing Documentation
382
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>
385 section.
386
387 =head3 L<XXX>
388
389 =over 4
390
391 =item *
392
393 XXX Description of the change here
394
395 =back
396
397 =head1 Diagnostics
398
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>.
402
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.
405
406 [ Within each section, list entries as a =item entry ]
407
408 =head2 New Diagnostics
409
410 XXX Newly added diagnostic messages go here
411
412 =over 4
413
414 =item *
415
416 Regexp modifier "/%c" may not appear twice
417
418 (F syntax) The regular expression pattern had one of the mutually exclusive
419 modifiers repeated.  Remove all but one of the occurrences.
420
421 =item *
422
423 Regexp modifiers "/%c" and "/%c" are mutually exclusive
424
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.
427
428 =item *
429
430 Insecure user-defined property %s
431
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>.
436
437 =back
438
439 =head2 Changes to Existing Diagnostics
440
441 XXX Changes (i.e. rewording) of diagnostic messages go here
442
443 =over 4
444
445 =item *
446
447 XXX
448
449 =back
450
451 =head1 Utility Changes
452
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>.
455
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. ]
459
460 =head3 L<XXX>
461
462 =over 4
463
464 =item *
465
466 XXX
467
468 =back
469
470 =head1 Configuration and Compilation
471
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.
476
477 [ List changes as a =item entry ].
478
479 =over 4
480
481 =item *
482
483 Compilation on Windows with Visual Studio 2010 is now supported.
484
485 =back
486
487 =head1 Testing
488
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.
494
495 Many of the tests have been refactored to use testing libraries more
496 consistently. In some cases test files were created or deleted:
497
498 =over 4
499
500 =item *
501
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>.
504
505 =item *
506
507 F<t/re/re.t> has been moved to F<ext/re/t/re_funcs_u.t>.
508
509 =item *
510
511 The tests for [perl #72922] have been moved from F<t/re/qr.t> to the new
512 F<t/re/qr-72922.t>.
513
514 =item *
515
516 F<t/re/reg_unsafe.t> has been deleted and its only test moved to
517 F<t/re/pat_advanced.t>.
518
519 =back
520
521 =head1 Platform Support
522
523 XXX Any changes to platform support should be listed in the sections below.
524
525 [ Within the sections, list each platform as a =item entry with specific
526 changes as paragraphs below it. ]
527
528 =head2 New Platforms
529
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
533 source tree.
534
535 =over 4
536
537 =item XXX-some-platform
538
539 XXX
540
541 =back
542
543 =head2 Discontinued Platforms
544
545 XXX List any platforms that this version of perl no longer compiles on.
546
547 =over 4
548
549 =item XXX-some-platform
550
551 XXX
552
553 =back
554
555 =head2 Platform-Specific Notes
556
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.
561
562 =over 4
563
564 =item XXX-some-platform
565
566 XXX
567
568 =back
569
570 =head1 Internal Changes
571
572 XXX Changes which affect the interface available to C<XS> code go here.
573 Other significant internal changes for future core maintainers should
574 be noted as well.
575
576 [ List each test improvement as a =item entry ]
577
578 =over 4
579
580 =item *
581
582 XXX
583
584 =back
585
586 =head1 Selected Bug Fixes
587
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>.
591
592 =over 4
593
594 =item *
595
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].
599
600 =item *
601
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].
606
607 =item *
608
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:
613
614   *d = *a;  print $d[0];
615   undef *d; print $d[0];
616
617 =item *
618
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
624 [perl #79442].
625
626 =item *
627
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.
631
632 =item *
633
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
637 [perl #84294].
638
639 =item *
640
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
643 [perl #82250].
644
645 =item *
646
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].
649
650 =item *
651
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
656 often than before.
657
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.
660
661 =back
662
663 =head1 Known Problems
664
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).
668
669 This is a list of some significant unfixed bugs, which are regressions
670 from either 5.XXX.XXX or 5.XXX.XXX.
671
672 [ List each fix as a =item entry ]
673
674 =over 4
675
676 =item *
677
678 XXX
679
680 =back
681
682 =head1 Obituary
683
684 XXX If any significant core contributor has died, we've added a short obituary
685 here.
686
687 =head1 Acknowledgements
688
689 XXX The list of people to thank goes here.
690
691 =head1 Reporting Bugs
692
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.
697
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.
703
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
712 distributed on CPAN.
713
714 =head1 SEE ALSO
715
716 The F<Changes> file for an explanation of how to view exhaustive details
717 on what changed.
718
719 The F<INSTALL> file for how to build Perl.
720
721 The F<README> file for general stuff.
722
723 The F<Artistic> and F<Copying> files for copyright information.
724
725 =cut