This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Unicode::Collate has been upgraded from version 1.11 to 1.12
[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<$#{_}>.  [perl #123947]
144
145 =item *
146
147 L<Carp> has been upgraded from version 1.35 to 1.36.
148
149 =item *
150
151 L<CPAN> has been upgraded from version 2.05 to 2.10.
152
153 =over 4
154
155 =item *
156
157 Add support for C<Cwd::getdcwd()> and introduce workaround for a misbehaviour
158 seen on Strawberry Perl 5.20.1.
159
160 =item *
161
162 Fix C<chdir()> after building dependencies bug.
163
164 =item *
165
166 Introduce experimental support for plugins/hooks.
167
168 =item *
169
170 Integrate the App::Cpan sources.
171
172 =item *
173
174 Do not check recursion on optional dependencies.
175
176 =item *
177
178 Sanity check META.yml to contain a hash.
179 L<[cpan #95271]|https://rt.cpan.org/Ticket/Display.html?id=95271>
180
181 =back
182
183 =item *
184
185 L<CPAN::Meta> has been upgraded from version 2.143240 to 2.150001.
186
187 =item *
188
189 L<Data::Dumper> has been upgraded from version 2.157 to 2.158.
190
191 =item *
192
193 L<Devel::PPPort> has been upgraded from version 3.28 to 3.31.
194
195 =item *
196
197 L<DynaLoader> has been upgraded from version 1.31 to 1.32.
198
199 =item *
200
201 L<Encode> has been upgraded from version 2.70 to 2.72.
202
203 =item *
204
205 L<encoding> has been upgraded from version 2.13 to 2.14.
206
207 =item *
208
209 L<Getopt::Long> has been upgraded from version 2.43 to 2.45.
210
211 =item *
212
213 L<locale> has been upgraded from version 1.05 to 1.06.
214
215 =item *
216
217 L<Locale::Codes> has been upgraded from version 3.33 to 3.34.
218
219 =item *
220
221 L<Module::CoreList> has been reverted from version 5.20150220 to 5.20150320.
222
223 =item *
224
225 L<parent> has been upgraded from version 0.228 to 0.232.
226
227 No changes to installed files other than the version bump.
228
229 =item *
230
231 L<Pod::Functions> has been upgraded from version 1.08 to 1.09.
232
233 =item *
234
235 L<POSIX> has been upgraded from version 1.51 to 1.52.
236
237 =item *
238
239 L<re> has been upgraded from version 0.31 to 0.32.
240
241 =item *
242
243 L<Test::Simple> has been reverted from version 1.301001_098 to 1.001014.
244
245 =item *
246
247 L<Text::Balanced> has been upgraded from version 2.02 to 2.03.
248
249 No changes to installed files other than the version bump.
250
251 =item *
252
253 L<Text::ParseWords> has been upgraded from version 3.29 to 3.30.
254
255 =item *
256
257 L<threads> has been upgraded from version 1.96_001 to 2.01.
258
259 =item *
260
261 L<Unicode::Collate> has been upgraded from version 1.11 to 1.12.
262
263 =item *
264
265 L<utf8> has been upgraded from version 1.14 to 1.15.
266
267 =item *
268
269 L<XS::APItest> has been upgraded from version 0.70 to 0.71.
270
271 =back
272
273 =head2 Removed Modules and Pragmata
274
275 =over 4
276
277 =item *
278
279 XXX
280
281 =back
282
283 =head1 Documentation
284
285 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
286 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
287
288 =head2 New Documentation
289
290 XXX Changes which create B<new> files in F<pod/> go here.
291
292 =head3 L<XXX>
293
294 XXX Description of the purpose of the new file here
295
296 =head2 Changes to Existing Documentation
297
298 XXX Changes which significantly change existing files in F<pod/> go here.
299 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
300 section.
301
302 =head3 L<perldata>
303
304 =over 4
305
306 =item *
307
308 Documentation has been added regarding the special floating point values C<Inf>
309 and C<NaN>.
310
311 =back
312
313 =head3 L<perlexperiment>
314
315 =over 4
316
317 =item *
318
319 Removed note about C<\s> matching C<VT> now that it is no longer experimental.
320
321 =item *
322
323 Added note that C<use re 'strict'> has been introduced experimentally.
324
325 =back
326
327 =head3 L<perlpolicy>
328
329 =over 4
330
331 =item *
332
333 The documentation of what to expect to see in future maintenance releases has
334 been updated.  Essentially the same types of changes will be included as before
335 but with fewer changes that don't affect the installation or execution of perl.
336
337 =back
338
339 =head1 Diagnostics
340
341 The following additions or changes have been made to diagnostic output,
342 including warnings and fatal error messages.  For the complete list of
343 diagnostic messages, see L<perldiag>.
344
345 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
346 include any changes in L<perldiag> that reconcile it to the C<C> code.
347
348 =head2 New Diagnostics
349
350 XXX Newly added diagnostic messages go under here, separated into New Errors
351 and New Warnings
352
353 =head3 New Errors
354
355 =over 4
356
357 =item *
358
359 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/">
360
361 (F) The pattern looks like a {min,max} quantifier, but the min or max could not
362 be parsed as a valid number - either it has leading zeroes, or it represents
363 too big a number to cope with.  The S<<-- HERE> shows where in the regular
364 expression the problem was discovered.  See L<perlre>.
365
366 =back
367
368 =head3 New Warnings
369
370 =over 4
371
372 =item *
373
374 XXX L<message|perldiag/"message">
375
376 =back
377
378 =head2 Changes to Existing Diagnostics
379
380 XXX Changes (i.e. rewording) of diagnostic messages go here
381
382 =over 4
383
384 =item *
385
386 XXX Describe change here
387
388 =back
389
390 =head1 Utility Changes
391
392 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
393 Most of these are built within the directory F<utils>.
394
395 [ List utility changes as a =head2 entry for each utility and =item
396 entries for each change
397 Use L<XXX> with program names to get proper documentation linking. ]
398
399 =head2 L<XXX>
400
401 =over 4
402
403 =item *
404
405 XXX
406
407 =back
408
409 =head1 Configuration and Compilation
410
411 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
412 go here.  Any other changes to the Perl build process should be listed here.
413 However, any platform-specific changes should be listed in the
414 L</Platform Support> section, instead.
415
416 [ List changes as a =item entry ].
417
418 =over 4
419
420 =item *
421
422 XXX
423
424 =back
425
426 =head1 Testing
427
428 XXX Any significant changes to the testing of a freshly built perl should be
429 listed here.  Changes which create B<new> files in F<t/> go here as do any
430 large changes to the testing harness (e.g. when parallel testing was added).
431 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
432 that they represent may be covered elsewhere.
433
434 [ List each test improvement as a =item entry ]
435
436 =over 4
437
438 =item *
439
440 Tests for performance issues have been added in the file F<t/perf/taint.t>.
441
442 =back
443
444 =head1 Platform Support
445
446 XXX Any changes to platform support should be listed in the sections below.
447
448 [ Within the sections, list each platform as a =item entry with specific
449 changes as paragraphs below it. ]
450
451 =head2 New Platforms
452
453 XXX List any platforms that this version of perl compiles on, that previous
454 versions did not.  These will either be enabled by new files in the F<hints/>
455 directories, or new subdirectories and F<README> files at the top level of the
456 source tree.
457
458 =over 4
459
460 =item z/OS running EBCDIC Code Page 1047
461
462 Core perl now works on this EBCDIC platform.  Early perls also worked,
463 but, even though support wasn't officially withdrawn, recent perls would
464 not compile and run well.  Perl v5.20 would work, but had many bugs
465 which have now been fixed.  Many CPAN modules that ship with Perl still
466 fail tests, including Pod::Simple.  However the version of Pod::Simple
467 currently on CPAN should work; it was fixed too late to include in
468 Perl v5.22.  Work is under way to fix many of the still-broken CPAN
469 modules, which likely will be installed on CPAN when completed, so that
470 you may not have to wait until v5.24 to get a working version.
471
472 =back
473
474 =head2 Discontinued Platforms
475
476 XXX List any platforms that this version of perl no longer compiles on.
477
478 =over 4
479
480 =item XXX-some-platform
481
482 XXX
483
484 =back
485
486 =head2 Platform-Specific Notes
487
488 XXX List any changes for specific platforms.  This could include configuration
489 and compilation changes or changes in portability/compatibility.  However,
490 changes within modules for platforms should generally be listed in the
491 L</Modules and Pragmata> section.
492
493 =over 4
494
495 =item XXX-some-platform
496
497 XXX
498
499 =back
500
501 =head1 Internal Changes
502
503 XXX Changes which affect the interface available to C<XS> code go here.  Other
504 significant internal changes for future core maintainers should be noted as
505 well.
506
507 [ List each change as a =item entry ]
508
509 =over 4
510
511 =item *
512
513 Macros have been created to allow XS code to better manipulate the POSIX
514 locale category C<LC_NUMERIC>.
515 See L<perlapi/Locale-related functions and macros>.
516
517 =back
518
519 =head1 Selected Bug Fixes
520
521 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
522 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
523
524 [ List each fix as a =item entry ]
525
526 =over 4
527
528 =item *
529
530 Repeated global pattern matches in scalar context on large tainted
531 strings were exponentially slow depending on the current match
532 position in the string. [perl #123202]
533
534 =item *
535
536 Various crashes due to the parser getting confused by syntax errors have
537 been fixed.  [perl #123801] [perl #123802] [perl #123955] [perl #123995]
538
539 =item *
540
541 C<split> in the scope of lexical $_ has been fixed not to fail assertions.
542 [perl #123763]
543
544 =item *
545
546 C<my $x : attr> syntax inside various list operators no longer fails
547 assertions.  [perl #123817]
548
549 =item *
550
551 An @ sign in quotes followed by a non-ASCII digit (which is not a valid
552 identifier) would cause the parser to crash, instead of simply trying the @
553 as literal.  This has been fixed.  [perl #123963]
554
555 =item *
556
557 C<*bar::=*foo::=*glob_with_hash> has been crashing since 5.14, but no
558 longer does.  [perl #123847]
559
560 =item *
561
562 C<foreach> in scalar context was not pushing an item on to the stack,
563 resulting in bugs.  (C<print 4, scalar do { foreach(@x){} } + 1> would
564 print 5.)  It has been fixed to return C<undef>.  [perl #124004]
565
566 =back
567
568 =head1 Known Problems
569
570 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
571 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
572 platform specific bugs also go here.
573
574 [ List each fix as a =item entry ]
575
576 =over 4
577
578 =item *
579
580 A goal is for Perl to be able to be recompiled to work reasonably well
581 on any Unicode version.  In v5.22, though, the earliest such version is
582 Unicode 5.1 (current is 7.0).
583
584 =item *
585
586 EBCDIC platforms
587
588 =over 4
589
590 =item *
591
592 Encode and encoding are mostly broken.
593
594 =item *
595
596 Many cpan modules that are shipped with core show failing tests
597
598 =item *
599
600 C<pack>/C<unpack> with C<"U0"> format may not work properly.
601
602 =back
603
604 =back
605
606 =head1 Errata From Previous Releases
607
608 =over 4
609
610 =item *
611
612 XXX Add anything here that we forgot to add, or were mistaken about, in
613 the perldelta of a previous release.
614
615 =back
616
617 =head1 Obituary
618
619 XXX If any significant core contributor has died, we've added a short obituary
620 here.
621
622 =head1 Acknowledgements
623
624 XXX Generate this with:
625
626   perl Porting/acknowledgements.pl v5.21.9..HEAD
627
628 =head1 Reporting Bugs
629
630 If you find what you think is a bug, you might check the articles recently
631 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
632 https://rt.perl.org/ .  There may also be information at
633 http://www.perl.org/ , the Perl Home Page.
634
635 If you believe you have an unreported bug, please run the L<perlbug> program
636 included with your release.  Be sure to trim your bug down to a tiny but
637 sufficient test case.  Your bug report, along with the output of C<perl -V>,
638 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
639
640 If the bug you are reporting has security implications, which make it
641 inappropriate to send to a publicly archived mailing list, then please send it
642 to perl5-security-report@perl.org.  This points to a closed subscription
643 unarchived mailing list, which includes all the core committers, who will be
644 able to help assess the impact of issues, figure out a resolution, and help
645 co-ordinate the release of patches to mitigate or fix the problem across all
646 platforms on which Perl is supported.  Please only use this address for
647 security issues in the Perl core, not for modules independently distributed on
648 CPAN.
649
650 =head1 SEE ALSO
651
652 The F<Changes> file for an explanation of how to view exhaustive details on
653 what changed.
654
655 The F<INSTALL> file for how to build Perl.
656
657 The F<README> file for general stuff.
658
659 The F<Artistic> and F<Copying> files for copyright information.
660
661 =cut