This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta entries
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to 67aeb7895 except for:
5 b3dbdd48ca2da90bce7f16d545cca54c3dc58f35 (Leon Timmermans)
6 816005240f1a3b9989c940e630e829048597537c (Craig Berry)
7 44caa20c7d9248fd77483468d77c9b5835e7066e (Craig Berry)
8 4581ada393ba58f2b8f438c7b9c336d6c79ec94c (Craig Berry)
9 3b28d668e9efe9433c3099521167a6723cbddc26 (Craig Berry)
10 82e24582a585cdcc94ac54b3e77a325e7aa89846 (Jan Dubois)
11 and any bugs that Karl Williamson has fixed.
12
13 =head1 NAME
14
15 [ this is a template for a new perldelta file. Any text flagged as
16 XXX needs to be processed before release. ]
17
18 perldelta - what is new for perl v5.13.11
19
20 =head1 DESCRIPTION
21
22 This document describes differences between the 5.13.10 release and
23 the 5.13.11 release.
24
25 If you are upgrading from an earlier release such as 5.13.9, first read
26 L<perl5139delta>, which describes differences between 5.13.9 and
27 5.13.10.
28
29 =head1 Notice
30
31 XXX Any important notices here
32
33 =head1 Core Enhancements
34
35 XXX New core language features go here. Summarise user-visible core language
36 enhancements. Particularly prominent performance optimisations could go
37 here, but most should go in the L</Performance Enhancements> section.
38
39 [ List each enhancement as a =head2 entry ]
40
41 =head1 Security
42
43 XXX Any security-related notices go here.  In particular, any security
44 vulnerabilities closed should be noted here rather than in the
45 L</Selected Bug Fixes> section.
46
47 [ List each security issue as a =head2 entry ]
48
49 =head2 User-defined regular expression properties
50
51 Perl no longer allows a tainted regular expression to invoke a user-defined
52 property via C<\p{...}> syntax. It simply dies instead [perl #82616].
53
54 =head1 Incompatible Changes
55
56 XXX For a release on a stable branch, this section aspires to be:
57
58     There are no changes intentionally incompatible with 5.XXX.XXX. If any
59     exist, they are bugs and reports are welcome.
60
61 [ List each incompatible change as a =head2 entry ]
62
63 =head2 Passing references to warn()
64
65 An earlier Perl 5.13.x release changed C<warn($ref)> to leave the reference
66 unchanged, allowing C<$SIG{__WARN__}> handlers to access the original
67 reference. But this stopped warnings that were references from having the
68 file and line number appended even when there was no C<$SIG{__WARN__}>
69 handler in place.
70
71 Now C<warn> checks for the presence of such a handler and, if there is
72 none, proceeds to stringify the reference and append the file and line
73 number. This allows simple uses of C<warn> for debugging to continue to
74 work as they did before.
75
76 =head1 Deprecations
77
78 XXX Any deprecated features, syntax, modules etc. should be listed here.
79 In particular, deprecated modules should be listed here even if they are
80 listed as an updated module in the L</Modules and Pragmata> section.
81
82 [ List each deprecation as a =head2 entry ]
83
84 =head1 Performance Enhancements
85
86 XXX Changes which enhance performance without changing behaviour go here. There
87 may well be none in a stable release.
88
89 [ List each enhancement as a =item entry ]
90
91 =over 4
92
93 =item *
94
95 XXX
96
97 =back
98
99 =head1 Modules and Pragmata
100
101 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
102 go here.  If Module::CoreList is updated, generate an initial draft of the
103 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
104 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
105 below.  A paragraph summary for important changes should then be added by hand.
106 In an ideal world, dual-life modules would have a F<Changes> file that could be
107 cribbed.
108
109 [ Within each section, list entries as a =item entry ]
110
111 =head2 New Modules and Pragmata
112
113 =over 4
114
115 =item *
116
117 XXX
118
119 =back
120
121 =head2 Updated Modules and Pragmata
122
123 =over 4
124
125 =item *
126
127 C<base> has been upgraded from version 2.15 to 2.16.
128
129 =item *
130
131 C<CPANPLUS> has been upgraded from version 0.9101 to 0.9102
132
133 =item *
134
135 C<CPANPLUS::Dist::Build> has been upgraded from version 0.52 to 0.54
136
137 =item *
138
139 C<Cwd> has been downgraded from version 3.37 to 3.36.
140
141 An optimisation that recent core changes have rendered unnecessary has been
142 reverted.
143
144 =item *
145
146 C<Devel::DProf> has been upgraded from version 20110225.01 to 20110228.00.
147
148 =item *
149
150 C<Digest::SHA> has been upgraded from version 5.50 to 5.61
151
152 New SHA-512/224 and SHA-512/256 transforms ref. NIST Draft FIPS 180-4 (February 2011)
153
154 =item *
155
156 C<ExtUtils::Command> has been upgraded from version 1.16 to 1.17.
157
158 =item *
159
160 C<File::Copy> has been downgraded from version 2.22 to 2.21.
161
162 An optimisation that recent core changes have rendered unnecessary has been
163 reverted.
164
165 =item *
166
167 C<IO> has been upgraded from version 1.25_03 to 1.25_04.
168
169 =item *
170
171 C<JSON::PP> has been upgraded from version 2.27103 to 2.27105
172
173 =item *
174
175 C<Locale::Codes> has been upgraded from version 3.15 to 3.16
176
177 =item *
178
179 C<Math::BigInt> has been upgraded from version 1.992 to 1.994
180
181 =item *
182
183 C<Math::BigInt::FastCalc> has been upgraded from version 0.24_02 to 0.28
184
185 =item *
186
187 C<Module::Build> has been upgraded from version 0.37_05 to 0.3800
188
189 =item
190
191 C<Module::CoreList> has been upgraded from version 2.45 to 2.46.
192
193 =item *
194
195 C<parent> has been upgraded from version 0.224 to 0.225
196
197 =item *
198
199 C<Storable> has been upgraded from version 2.26 to 2.27.
200
201 =item *
202
203 C<Test::Harness> has been upgraded from version 3.22 to 3.23
204
205 =item *
206
207 C<Test::Simple> has been upgraded from version 0.97_01 to 0.98
208
209 =item *
210
211 C<Tie::Hash::NamedCapture> has been upgraded from version 0.07 to 0.08.
212
213 Some of the Perl code has been converted to XS for efficency's sake.
214
215 =item *
216
217 C<Tie::RefHash> has been upgraded from version 1.38 to 1.39.
218
219 =item *
220
221 C<Unicode::Collate> has been upgraded from version 0.72 to 0.73
222
223 DUCET has been updated for Unicode 6.0.0 as Collate/allkeys.txt and
224 the default UCA_Version is 22.
225
226 =item *
227
228 C<Unicode::UCD> has been upgraded from version 0.31 to 0.32.
229 This includes a number of bug fixes:
230
231 =over 4
232
233 =item charinfo()
234
235 =over 4
236
237 =item *
238
239 It is now updated to Unicode Version 6 with Corrigendum #8, except,
240 as with Perl 5.14, the code point at U+1F514 has no name.
241
242 =item *
243
244 The Hangul syllable code points have the correct names, and their
245 decompositions are always output without requiring L<Lingua::KO::Hangul::Util>
246 to be installed.
247
248 =item *
249
250 The CJK (Chinese-Japanese-Korean) code points U+2A700 - U+2B734
251 and U+2B740 - 2B81D are now properly handled.
252
253 =item *
254
255 The numeric values are now output for those CJK code points that have them.
256
257 =item *
258
259 The names that are output for code points with multiple aliases are now the
260 corrected ones.
261
262 =back
263
264 =item charscript()
265
266 This now correctly returns "Unknown" instead of C<undef> for the script
267 of a code point that hasn't been assigned another one.
268
269 =item charblock()
270
271 This now correctly returns "No_Block" instead of C<undef> for the block
272 of a code point that hasn't been assigned to another one.
273
274 =back
275
276 =back
277
278 =head2 Removed Modules and Pragmata
279
280 =over 4
281
282 =item *
283
284 XXX
285
286 =back
287
288 =head1 Documentation
289
290 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
291 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
292
293 =head2 New Documentation
294
295 XXX Changes which create B<new> files in F<pod/> go here.
296
297 =head3 L<XXX>
298
299 XXX Description of the purpose of the new file here
300
301 =head2 Changes to Existing Documentation
302
303 XXX Changes which significantly change existing files in F<pod/> go here.
304 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
305 section.
306
307 =head3 L<XXX>
308
309 =over 4
310
311 =item *
312
313 XXX Description of the change here
314
315 =back
316
317 =head1 Diagnostics
318
319 The following additions or changes have been made to diagnostic output,
320 including warnings and fatal error messages.  For the complete list of
321 diagnostic messages, see L<perldiag>.
322
323 XXX New or changed warnings emitted by the core's C<C> code go here. Also
324 include any changes in L<perldiag> that reconcile it to the C<C> code.
325
326 [ Within each section, list entries as a =item entry ]
327
328 =head2 New Diagnostics
329
330 XXX Newly added diagnostic messages go here
331
332 =over 4
333
334 =item *
335
336 Regexp modifier "/%c" may not appear twice
337
338 (F syntax) The regular expression pattern had one of the mutually exclusive
339 modifiers repeated.  Remove all but one of the occurrences.
340
341 =item *
342
343 Regexp modifiers "/%c" and "/%c" are mutually exclusive
344
345 (F syntax) The regular expression pattern had more than one of the mutually
346 exclusive modifiers.  Retain only the modifier that is supposed to be there.
347
348 =item *
349
350 Insecure user-defined property %s
351
352 (F) Perl detected tainted data when trying to compile a regular
353 expression that contains a call to a user-defined character property
354 function, i.e. C<\p{IsFoo}> or C<\p{InFoo}>.
355 See L<perlunicode/User-Defined Character Properties> and L<perlsec>.
356
357 =back
358
359 =head2 Changes to Existing Diagnostics
360
361 XXX Changes (i.e. rewording) of diagnostic messages go here
362
363 =over 4
364
365 =item *
366
367 XXX
368
369 =back
370
371 =head1 Utility Changes
372
373 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
374 here. Most of these are built within the directories F<utils> and F<x2p>.
375
376 [ List utility changes as a =head3 entry for each utility and =item
377 entries for each change
378 Use L<XXX> with program names to get proper documentation linking. ]
379
380 =head3 L<XXX>
381
382 =over 4
383
384 =item *
385
386 XXX
387
388 =back
389
390 =head1 Configuration and Compilation
391
392 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
393 go here.  Any other changes to the Perl build process should be listed here.
394 However, any platform-specific changes should be listed in the
395 L</Platform Support> section, instead.
396
397 [ List changes as a =item entry ].
398
399 =over 4
400
401 =item *
402
403 XXX
404
405 =back
406
407 =head1 Testing
408
409 XXX Any significant changes to the testing of a freshly built perl should be
410 listed here.  Changes which create B<new> files in F<t/> go here as do any
411 large changes to the testing harness (e.g. when parallel testing was added).
412 Changes to existing files in F<t/> aren't worth summarising, although the bugs
413 that they represent may be covered elsewhere.
414
415 Some of the tests have been refactored. In some cases they were moved to
416 new files:
417
418 =over 4
419
420 =item *
421
422 The tests for C<split /\s/> and Unicode have been moved from
423 F<t/op/split.t> to F<t/op/split_unicode.t>.
424
425 =item *
426
427 F<t/re/re.t> has been moved to F<ext/re/t/re_funcs_u.t>.
428
429 =item *
430
431 The tests for [perl #72922] have been moved from F<t/re/qr.t> to
432 F<t/re/qr-72922.t>.
433
434 =back
435
436 =head1 Platform Support
437
438 XXX Any changes to platform support should be listed in the sections below.
439
440 [ Within the sections, list each platform as a =item entry with specific
441 changes as paragraphs below it. ]
442
443 =head2 New Platforms
444
445 XXX List any platforms that this version of perl compiles on, that previous
446 versions did not. These will either be enabled by new files in the F<hints/>
447 directories, or new subdirectories and F<README> files at the top level of the
448 source tree.
449
450 =over 4
451
452 =item XXX-some-platform
453
454 XXX
455
456 =back
457
458 =head2 Discontinued Platforms
459
460 XXX List any platforms that this version of perl no longer compiles on.
461
462 =over 4
463
464 =item XXX-some-platform
465
466 XXX
467
468 =back
469
470 =head2 Platform-Specific Notes
471
472 XXX List any changes for specific platforms. This could include configuration
473 and compilation changes or changes in portability/compatibility.  However,
474 changes within modules for platforms should generally be listed in the
475 L</Modules and Pragmata> section.
476
477 =over 4
478
479 =item XXX-some-platform
480
481 XXX
482
483 =back
484
485 =head1 Internal Changes
486
487 XXX Changes which affect the interface available to C<XS> code go here.
488 Other significant internal changes for future core maintainers should
489 be noted as well.
490
491 [ List each test improvement as a =item entry ]
492
493 =over 4
494
495 =item *
496
497 XXX
498
499 =back
500
501 =head1 Selected Bug Fixes
502
503 XXX Important bug fixes in the core language are summarised here.
504 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
505 L</Modules and Pragmata>.
506
507 =over 4
508
509 =item *
510
511 A fix for a bug in C<length(undef)> in 5.13.4 introduced a regression that
512 meant C<print length undef> did not warn when warnings were enabled. It now
513 correctly warns [perl #85508].
514
515 =item *
516
517 The C<(?|...)> regular expression construct no longer crashes if the final
518 branch has more sets of capturing parentheses than any other branch. This
519 was fixed in Perl 5.10.1 for the case of a single branch, but that fix did
520 not take multiple branches into account [perl #84746].
521
522 =item *
523
524 Accessing an element of a package array with a hard-coded number (as
525 opposed to an arbitrary expression) would crash if the array did not exist.
526 Usually the array would be autovivified during compilation, but typeglob
527 manipulation could remove it, as in these two cases which used to crash:
528
529   *d = *a;  print $d[0];
530   undef *d; print $d[0];
531
532 =item *
533
534 C<#line> directives in string evals were not properly updating the arrays
535 of lines of code (C<< @{"_<..."} >>) that the debugger (or any debugging or
536 profiling module) uses. In threaded builds, they were not being updated at
537 all. In non-threaded builds, the line number was ignored, so any change to
538 the existing line number would cause the lines to be misnumbered
539 [perl #79442].
540
541 =item *
542
543 C<$AUTOLOAD> used to remain tainted forever if it ever became tainted. Now
544 it is correctly untainted if an autoloaded method is called and the method
545 name was not tainted.
546
547 =item *
548
549 A bug has been fixed in the implementation of C<{...}> quantifiers in
550 regular expressions that prevented the code block in
551 C</((\w+)(?{ print $2 })){2}/> from seeing the C<$2> sometimes
552 [perl #84294].
553
554 =back
555
556 =head1 Known Problems
557
558 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
559 tests that had to be C<TODO>ed for the release would be noted here, unless
560 they were specific to a particular platform (see below).
561
562 This is a list of some significant unfixed bugs, which are regressions
563 from either 5.XXX.XXX or 5.XXX.XXX.
564
565 [ List each fix as a =item entry ]
566
567 =over 4
568
569 =item *
570
571 XXX
572
573 =back
574
575 =head1 Obituary
576
577 XXX If any significant core contributor has died, we've added a short obituary
578 here.
579
580 =head1 Acknowledgements
581
582 XXX The list of people to thank goes here.
583
584 =head1 Reporting Bugs
585
586 If you find what you think is a bug, you might check the articles
587 recently posted to the comp.lang.perl.misc newsgroup and the perl
588 bug database at http://rt.perl.org/perlbug/ .  There may also be
589 information at http://www.perl.org/ , the Perl Home Page.
590
591 If you believe you have an unreported bug, please run the L<perlbug>
592 program included with your release.  Be sure to trim your bug down
593 to a tiny but sufficient test case.  Your bug report, along with the
594 output of C<perl -V>, will be sent off to perlbug@perl.org to be
595 analysed by the Perl porting team.
596
597 If the bug you are reporting has security implications, which make it
598 inappropriate to send to a publicly archived mailing list, then please send
599 it to perl5-security-report@perl.org. This points to a closed subscription
600 unarchived mailing list, which includes all the core committers, who be able
601 to help assess the impact of issues, figure out a resolution, and help
602 co-ordinate the release of patches to mitigate or fix the problem across all
603 platforms on which Perl is supported. Please only use this address for
604 security issues in the Perl core, not for modules independently
605 distributed on CPAN.
606
607 =head1 SEE ALSO
608
609 The F<Changes> file for an explanation of how to view exhaustive details
610 on what changed.
611
612 The F<INSTALL> file for how to build Perl.
613
614 The F<README> file for general stuff.
615
616 The F<Artistic> and F<Copying> files for copyright information.
617
618 =cut