This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta - Document remaining changes/module upgrades and fill in RT links
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
6 to be processed before release. ]
7
8 perldelta - what is new for perl v5.21.10
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.21.9 release and the 5.21.10
13 release.
14
15 If you are upgrading from an earlier release such as 5.21.8, first read
16 L<perl5219delta>, which describes differences between 5.21.8 and 5.21.9.
17
18 =head1 Notice
19
20 XXX Any important notices here
21
22 =head1 Core Enhancements
23
24 XXX New core language features go here.  Summarize user-visible core language
25 enhancements.  Particularly prominent performance optimisations could go
26 here, but most should go in the L</Performance Enhancements> section.
27
28 [ List each enhancement as a =head2 entry ]
29
30 =head1 Security
31
32 XXX Any security-related notices go here.  In particular, any security
33 vulnerabilities closed should be noted here rather than in the
34 L</Selected Bug Fixes> section.
35
36 [ List each security issue as a =head2 entry ]
37
38 =head1 Incompatible Changes
39
40 XXX For a release on a stable branch, this section aspires to be:
41
42     There are no changes intentionally incompatible with 5.XXX.XXX
43     If any exist, they are bugs, and we request that you submit a
44     report.  See L</Reporting Bugs> below.
45
46 [ List each incompatible change as a =head2 entry ]
47
48 =head2 C<(?[...])> operators now follow standard Perl precedence
49
50 This experimental feature allows set operations in regular expression
51 patterns.  Prior to this, the intersection operator had the same
52 precedence as the other binary operators.  Now it has higher precedence.
53 This could lead to different outcomes than existing code expects (though
54 the documentation has always noted that this change might happen,
55 recommending fully parenthesizing the expressions).  See
56 L<perlrecharclass/Extended Bracketed Character Classes>.
57
58 =head1 Deprecations
59
60 XXX Any deprecated features, syntax, modules etc. should be listed here.
61
62 =head2 Module removals
63
64 XXX Remove this section if inapplicable.
65
66 The following modules will be removed from the core distribution in a
67 future release, and will at that time need to be installed from CPAN.
68 Distributions on CPAN which require these modules will need to list them as
69 prerequisites.
70
71 The core versions of these modules will now issue C<"deprecated">-category
72 warnings to alert you to this fact.  To silence these deprecation warnings,
73 install the modules in question from CPAN.
74
75 Note that these are (with rare exceptions) fine modules that you are encouraged
76 to continue to use.  Their disinclusion from core primarily hinges on their
77 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
78 not usually on concerns over their design.
79
80 =over
81
82 =item XXX
83
84 XXX Note that deprecated modules should be listed here even if they are listed
85 as an updated module in the L</Modules and Pragmata> section.
86
87 =back
88
89 [ List each other deprecation as a =head2 entry ]
90
91 =head1 Performance Enhancements
92
93 XXX Changes which enhance performance without changing behaviour go here.
94 There may well be none in a stable release.
95
96 [ List each enhancement as a =item entry ]
97
98 =over 4
99
100 =item *
101
102 The functions
103 C<utf8::native_to_unicode()> and
104 C<utf8::unicode_to_native()> (see L<utf8>)
105 are now optimized out on ASCII platforms.
106 There is now not even a minimal performance hit in writing code portable
107 between ASCII and EBCDIC platforms.
108
109 =back
110
111 =head1 Modules and Pragmata
112
113 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
114 go here.  If Module::CoreList is updated, generate an initial draft of the
115 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
116 for important changes should then be added by hand.  In an ideal world,
117 dual-life modules would have a F<Changes> file that could be cribbed.
118
119 [ Within each section, list entries as a =item entry ]
120
121 =head2 New Modules and Pragmata
122
123 =over 4
124
125 =item *
126
127 XXX
128
129 =back
130
131 =head2 Updated Modules and Pragmata
132
133 =over 4
134
135 =item *
136
137 L<B> has been upgraded from version 1.56 to 1.57.
138
139 =item *
140
141 L<B::Deparse> has been upgraded from version 1.33 to 1.34.
142
143 Deparse C<$#_> as that instead of as C<$#{_}>.
144 L<[perl #123947]|https://rt.perl.org/Ticket/Display.html?id=123947>
145
146 =item *
147
148 L<Carp> has been upgraded from version 1.35 to 1.36.
149
150 =item *
151
152 L<CPAN> has been upgraded from version 2.05 to 2.10.
153
154 =over 4
155
156 =item *
157
158 Add support for C<Cwd::getdcwd()> and introduce workaround for a misbehaviour
159 seen on Strawberry Perl 5.20.1.
160
161 =item *
162
163 Fix C<chdir()> after building dependencies bug.
164
165 =item *
166
167 Introduce experimental support for plugins/hooks.
168
169 =item *
170
171 Integrate the App::Cpan sources.
172
173 =item *
174
175 Do not check recursion on optional dependencies.
176
177 =item *
178
179 Sanity check META.yml to contain a hash.
180 L<[cpan #95271]|https://rt.cpan.org/Ticket/Display.html?id=95271>
181
182 =back
183
184 =item *
185
186 L<CPAN::Meta> has been upgraded from version 2.143240 to 2.150001.
187
188 =item *
189
190 L<Data::Dumper> has been upgraded from version 2.157 to 2.158.
191
192 =item *
193
194 L<DB> has been upgraded from version 1.07 to 1.08.
195
196 =item *
197
198 L<Devel::PPPort> has been upgraded from version 3.28 to 3.31.
199
200 =item *
201
202 L<DynaLoader> has been upgraded from version 1.31 to 1.32.
203
204 =item *
205
206 L<Encode> has been upgraded from version 2.70 to 2.72.
207
208 =item *
209
210 L<encoding> has been upgraded from version 2.13 to 2.14.
211
212 =item *
213
214 L<Getopt::Long> has been upgraded from version 2.43 to 2.45.
215
216 =item *
217
218 L<locale> has been upgraded from version 1.05 to 1.06.
219
220 =item *
221
222 L<Locale::Codes> has been upgraded from version 3.33 to 3.34.
223
224 =item *
225
226 L<Module::CoreList> has been upgraded from version 5.20150220 to 5.20150320.
227
228 =item *
229
230 L<parent> has been upgraded from version 0.228 to 0.232.
231
232 No changes to installed files other than the version bump.
233
234 =item *
235
236 The PathTools modules have been upgraded from version 3.54 to 3.55.
237
238 =item *
239
240 L<Pod::Functions> has been upgraded from version 1.08 to 1.09.
241
242 =item *
243
244 L<POSIX> has been upgraded from version 1.51 to 1.52.
245
246 =item *
247
248 L<re> has been upgraded from version 0.31 to 0.32.
249
250 =item *
251
252 L<sigtrap> has been upgraded from version 1.07 to 1.08.
253
254 =item *
255
256 L<Term::Complete> has been upgraded from version 1.402 to 1.403.
257
258 =item *
259
260 L<Test::Simple> has been reverted from version 1.301001_098 to 1.001014.
261
262 =item *
263
264 L<Text::Balanced> has been upgraded from version 2.02 to 2.03.
265
266 No changes to installed files other than the version bump.
267
268 =item *
269
270 L<Text::ParseWords> has been upgraded from version 3.29 to 3.30.
271
272 =item *
273
274 L<threads> has been upgraded from version 1.96_001 to 2.01.
275
276 =item *
277
278 L<Unicode::Collate> has been upgraded from version 1.11 to 1.12.
279
280 =item *
281
282 L<utf8> has been upgraded from version 1.14 to 1.15.
283
284 =back
285
286 =head2 Removed Modules and Pragmata
287
288 =over 4
289
290 =item *
291
292 XXX
293
294 =back
295
296 =head1 Documentation
297
298 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
299 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
300
301 =head2 New Documentation
302
303 XXX Changes which create B<new> files in F<pod/> go here.
304
305 =head3 L<XXX>
306
307 XXX Description of the purpose of the new file here
308
309 =head2 Changes to Existing Documentation
310
311 XXX Changes which significantly change existing files in F<pod/> go here.
312 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
313 section.
314
315 =head3 L<perldata>
316
317 =over 4
318
319 =item *
320
321 Documentation has been added regarding the special floating point values C<Inf>
322 and C<NaN>.
323
324 =back
325
326 =head3 L<perlexperiment>
327
328 =over 4
329
330 =item *
331
332 Removed note about C<\s> matching C<VT> now that it is no longer experimental.
333
334 =item *
335
336 Added note that C<use re 'strict'> has been introduced experimentally.
337
338 =back
339
340 =head3 L<perlpolicy>
341
342 =over 4
343
344 =item *
345
346 The documentation of what to expect to see in future maintenance releases has
347 been updated.  Essentially the same types of changes will be included as before
348 but with fewer changes that don't affect the installation or execution of perl.
349
350 =back
351
352 =head1 Diagnostics
353
354 The following additions or changes have been made to diagnostic output,
355 including warnings and fatal error messages.  For the complete list of
356 diagnostic messages, see L<perldiag>.
357
358 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
359 include any changes in L<perldiag> that reconcile it to the C<C> code.
360
361 =head2 New Diagnostics
362
363 XXX Newly added diagnostic messages go under here, separated into New Errors
364 and New Warnings
365
366 =head3 New Errors
367
368 =over 4
369
370 =item *
371
372 L<Invalid quantifier in {,} in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"Invalid quantifier in {,} in regex; marked by <-- HERE in m/%s/">
373
374 (F) The pattern looks like a {min,max} quantifier, but the min or max could not
375 be parsed as a valid number - either it has leading zeroes, or it represents
376 too big a number to cope with.  The S<<-- HERE> shows where in the regular
377 expression the problem was discovered.  See L<perlre>.
378
379 =back
380
381 =head3 New Warnings
382
383 =over 4
384
385 =item *
386
387 XXX L<message|perldiag/"message">
388
389 =back
390
391 =head2 Changes to Existing Diagnostics
392
393 XXX Changes (i.e. rewording) of diagnostic messages go here
394
395 =over 4
396
397 =item *
398
399 XXX Describe change here
400
401 =back
402
403 =head1 Utility Changes
404
405 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
406 Most of these are built within the directory F<utils>.
407
408 [ List utility changes as a =head2 entry for each utility and =item
409 entries for each change
410 Use L<XXX> with program names to get proper documentation linking. ]
411
412 =head2 L<XXX>
413
414 =over 4
415
416 =item *
417
418 XXX
419
420 =back
421
422 =head1 Configuration and Compilation
423
424 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
425 go here.  Any other changes to the Perl build process should be listed here.
426 However, any platform-specific changes should be listed in the
427 L</Platform Support> section, instead.
428
429 [ List changes as a =item entry ].
430
431 =over 4
432
433 =item *
434
435 XXX
436
437 =back
438
439 =head1 Testing
440
441 XXX Any significant changes to the testing of a freshly built perl should be
442 listed here.  Changes which create B<new> files in F<t/> go here as do any
443 large changes to the testing harness (e.g. when parallel testing was added).
444 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
445 that they represent may be covered elsewhere.
446
447 [ List each test improvement as a =item entry ]
448
449 =over 4
450
451 =item *
452
453 Tests for performance issues have been added in the file F<t/perf/taint.t>.
454
455 =back
456
457 =head1 Platform Support
458
459 XXX Any changes to platform support should be listed in the sections below.
460
461 [ Within the sections, list each platform as a =item entry with specific
462 changes as paragraphs below it. ]
463
464 =head2 New Platforms
465
466 XXX List any platforms that this version of perl compiles on, that previous
467 versions did not.  These will either be enabled by new files in the F<hints/>
468 directories, or new subdirectories and F<README> files at the top level of the
469 source tree.
470
471 =over 4
472
473 =item z/OS running EBCDIC Code Page 1047
474
475 Core perl now works on this EBCDIC platform.  Early perls also worked,
476 but, even though support wasn't officially withdrawn, recent perls would
477 not compile and run well.  Perl v5.20 would work, but had many bugs
478 which have now been fixed.  Many CPAN modules that ship with Perl still
479 fail tests, including Pod::Simple.  However the version of Pod::Simple
480 currently on CPAN should work; it was fixed too late to include in
481 Perl v5.22.  Work is under way to fix many of the still-broken CPAN
482 modules, which likely will be installed on CPAN when completed, so that
483 you may not have to wait until v5.24 to get a working version.
484
485 =back
486
487 =head2 Discontinued Platforms
488
489 XXX List any platforms that this version of perl no longer compiles on.
490
491 =over 4
492
493 =item XXX-some-platform
494
495 XXX
496
497 =back
498
499 =head2 Platform-Specific Notes
500
501 XXX List any changes for specific platforms.  This could include configuration
502 and compilation changes or changes in portability/compatibility.  However,
503 changes within modules for platforms should generally be listed in the
504 L</Modules and Pragmata> section.
505
506 =over 4
507
508 =item HP-UX
509
510 The archname now distinguishes use64bitint from use64bitall.
511
512 =back
513
514 =head1 Internal Changes
515
516 XXX Changes which affect the interface available to C<XS> code go here.  Other
517 significant internal changes for future core maintainers should be noted as
518 well.
519
520 [ List each change as a =item entry ]
521
522 =over 4
523
524 =item *
525
526 Macros have been created to allow XS code to better manipulate the POSIX
527 locale category C<LC_NUMERIC>.
528 See L<perlapi/Locale-related functions and macros>.
529
530 =item *
531
532 The previous C<atoi> et al replacement function, C<grok_atou>, has now been
533 superseded by C<grok_atoUV>.  See L<perlclib> for details.
534
535 =back
536
537 =head1 Selected Bug Fixes
538
539 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
540 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
541
542 [ List each fix as a =item entry ]
543
544 =over 4
545
546 =item *
547
548 Repeated global pattern matches in scalar context on large tainted
549 strings were exponentially slow depending on the current match
550 position in the string.
551 L<[perl #123202]|https://rt.perl.org/Ticket/Display.html?id=123202>
552
553 =item *
554
555 Various crashes due to the parser getting confused by syntax errors have
556 been fixed.
557 L<[perl #123801]|https://rt.perl.org/Ticket/Display.html?id=123801>
558 L<[perl #123802]|https://rt.perl.org/Ticket/Display.html?id=123802>
559 L<[perl #123955]|https://rt.perl.org/Ticket/Display.html?id=123955>
560 L<[perl #123995]|https://rt.perl.org/Ticket/Display.html?id=123995>
561
562 =item *
563
564 C<split> in the scope of lexical $_ has been fixed not to fail assertions.
565 L<[perl #123763]|https://rt.perl.org/Ticket/Display.html?id=123763>
566
567 =item *
568
569 C<my $x : attr> syntax inside various list operators no longer fails
570 assertions.
571 L<[perl #123817]|https://rt.perl.org/Ticket/Display.html?id=123817>
572
573 =item *
574
575 An @ sign in quotes followed by a non-ASCII digit (which is not a valid
576 identifier) would cause the parser to crash, instead of simply trying the @
577 as literal.  This has been fixed.
578 L<[perl #123963]|https://rt.perl.org/Ticket/Display.html?id=123963>
579
580 =item *
581
582 C<*bar::=*foo::=*glob_with_hash> has been crashing since 5.14, but no
583 longer does.
584 L<[perl #123847]|https://rt.perl.org/Ticket/Display.html?id=123847>
585
586 =item *
587
588 C<foreach> in scalar context was not pushing an item on to the stack,
589 resulting in bugs.  (C<print 4, scalar do { foreach(@x){} } + 1> would
590 print 5.)  It has been fixed to return C<undef>.
591 L<[perl #124004]|https://rt.perl.org/Ticket/Display.html?id=124004>
592
593 =item *
594
595 A memory leak introduced in Perl 5.21.6 has been fixed.
596 L<[perl #123922]|https://rt.perl.org/Ticket/Display.html?id=123922>
597
598 =item *
599
600 A regression in the behaviour of the C<readline> built-in function, caused by
601 the introduction of the C<< <<>> >> operator, has been fixed.
602 L<[perl #123990]|https://rt.perl.org/Ticket/Display.html?id=123990>
603
604 =item *
605
606 Several cases of data used to store environment variable contents in core C
607 code being potentailly overwritten before being used have been fixed.
608 L<[perl #123748]|https://rt.perl.org/Ticket/Display.html?id=123748>
609
610 =back
611
612 =head1 Known Problems
613
614 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
615 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
616 platform specific bugs also go here.
617
618 [ List each fix as a =item entry ]
619
620 =over 4
621
622 =item *
623
624 A goal is for Perl to be able to be recompiled to work reasonably well
625 on any Unicode version.  In v5.22, though, the earliest such version is
626 Unicode 5.1 (current is 7.0).
627
628 =item *
629
630 EBCDIC platforms
631
632 =over 4
633
634 =item *
635
636 Encode and encoding are mostly broken.
637
638 =item *
639
640 Many cpan modules that are shipped with core show failing tests
641
642 =item *
643
644 C<pack>/C<unpack> with C<"U0"> format may not work properly.
645
646 =back
647
648 =back
649
650 =head1 Errata From Previous Releases
651
652 =over 4
653
654 =item *
655
656 XXX Add anything here that we forgot to add, or were mistaken about, in
657 the perldelta of a previous release.
658
659 =back
660
661 =head1 Obituary
662
663 XXX If any significant core contributor has died, we've added a short obituary
664 here.
665
666 =head1 Acknowledgements
667
668 XXX Generate this with:
669
670   perl Porting/acknowledgements.pl v5.21.9..HEAD
671
672 =head1 Reporting Bugs
673
674 If you find what you think is a bug, you might check the articles recently
675 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
676 https://rt.perl.org/ .  There may also be information at
677 http://www.perl.org/ , the Perl Home Page.
678
679 If you believe you have an unreported bug, please run the L<perlbug> program
680 included with your release.  Be sure to trim your bug down to a tiny but
681 sufficient test case.  Your bug report, along with the output of C<perl -V>,
682 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
683
684 If the bug you are reporting has security implications, which make it
685 inappropriate to send to a publicly archived mailing list, then please send it
686 to perl5-security-report@perl.org.  This points to a closed subscription
687 unarchived mailing list, which includes all the core committers, who will be
688 able to help assess the impact of issues, figure out a resolution, and help
689 co-ordinate the release of patches to mitigate or fix the problem across all
690 platforms on which Perl is supported.  Please only use this address for
691 security issues in the Perl core, not for modules independently distributed on
692 CPAN.
693
694 =head1 SEE ALSO
695
696 The F<Changes> file for an explanation of how to view exhaustive details on
697 what changed.
698
699 The F<INSTALL> file for how to build Perl.
700
701 The F<README> file for general stuff.
702
703 The F<Artistic> and F<Copying> files for copyright information.
704
705 =cut