This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
e31c0c95310dccd70c3c5b388adce2620a71d532
[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.4
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.21.3 release and the 5.21.4
13 release.
14
15 If you are upgrading from an earlier release such as 5.21.2, first read
16 L<perl5213delta>, which describes differences between 5.21.2 and 5.21.3.
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 =head2 Infinity and NaN (not-a-number) handling improved
31
32 Floating point values are able to hold the special values infinity
33 (also -infinity), and NaN (not-a-number).  Now we more robustly recognize
34 and propagate the value in computations, and on output normalize them
35 to C<Inf> and C<NaN>.
36
37 See also the L<POSIX> enhancements.
38
39 =head1 Security
40
41 XXX Any security-related notices go here.  In particular, any security
42 vulnerabilities closed should be noted here rather than in the
43 L</Selected Bug Fixes> section.
44
45 [ List each security issue as a =head2 entry ]
46
47 =head1 Incompatible Changes
48
49 XXX For a release on a stable branch, this section aspires to be:
50
51     There are no changes intentionally incompatible with 5.XXX.XXX
52     If any exist, they are bugs, and we request that you submit a
53     report.  See L</Reporting Bugs> below.
54
55 [ List each incompatible change as a =head2 entry ]
56
57 =head2 Changes to the C<*> prototype
58
59 The C<*> character in a subroutine's prototype used to allow barewords
60 to take precedence over most, but not all subroutines.  It was never
61 consistent and exhibited buggy behaviour.
62
63 Now it has been changed, so subroutines always take precedence over
64 barewords, which brings it into conformity with similarly prototyped
65 built-in functions:
66
67     sub splat($) { ... }
68     sub foo { ... }
69     splat(foo); # now always splat(foo())
70     splat(bar); # still splat('bar') as before
71     close(foo); # close(foo())
72     close(bar); # close('bar')
73
74 =head1 Deprecations
75
76 XXX Any deprecated features, syntax, modules etc. should be listed here.
77
78 =head2 Module removals
79
80 XXX Remove this section if inapplicable.
81
82 The following modules will be removed from the core distribution in a
83 future release, and will at that time need to be installed from CPAN.
84 Distributions on CPAN which require these modules will need to list them as
85 prerequisites.
86
87 The core versions of these modules will now issue C<"deprecated">-category
88 warnings to alert you to this fact.  To silence these deprecation warnings,
89 install the modules in question from CPAN.
90
91 Note that these are (with rare exceptions) fine modules that you are encouraged
92 to continue to use.  Their disinclusion from core primarily hinges on their
93 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
94 not usually on concerns over their design.
95
96 =over
97
98 =item XXX
99
100 XXX Note that deprecated modules should be listed here even if they are listed
101 as an updated module in the L</Modules and Pragmata> section.
102
103 =back
104
105 [ List each other deprecation as a =head2 entry ]
106
107 =head1 Performance Enhancements
108
109 XXX Changes which enhance performance without changing behaviour go here.
110 There may well be none in a stable release.
111
112 [ List each enhancement as a =item entry ]
113
114 =over 4
115
116 =item *
117
118 Subroutines with an empty prototype and bodies containing just C<undef> are
119 now eligible for inlining.  [perl #122728]
120
121 =item *
122
123 Subroutines in packages no longer need to carry typeglobs around with them.
124 Declaring a subroutine will now put a simple sub reference in the stash if
125 possible, saving memory.  The typeglobs still notionally exist, so
126 accessing them will cause the subroutine reference to be upgraded to a
127 typeglob.  This optimisation does not currently apply to XSUBs or exported
128 subroutines, and method calls will undo it, since they cache things in
129 typeglobs.  [perl #120441]
130
131 =back
132
133 =head1 Modules and Pragmata
134
135 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
136 go here.  If Module::CoreList is updated, generate an initial draft of the
137 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
138 for important changes should then be added by hand.  In an ideal world,
139 dual-life modules would have a F<Changes> file that could be 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 L<Archive::Tar> has been upgraded from version 2.00 to 2.02.
160
161 Tests can now be run in parallel.
162
163 =item *
164
165 L<B> has been upgraded from version 1.50 to 1.51.
166
167 It provides a new C<B::safename> function, based on the existing
168 C<< B::GV->SAFENAME >>, that converts "\cOPEN" to "^OPEN".
169
170 =item *
171
172 L<B::Concise> has been upgraded from version 0.992 to 0.993.
173
174 =item *
175
176 L<B::Deparse> has been upgraded from version 1.27 to 1.28.
177
178 It now deparses C<our(I<LIST>)> and typed lexical (C<my Dog $spot>)
179 correctly.
180
181 =item *
182
183 L<CPAN::Meta::Requirements> has been upgraded from version 2.126 to 2.128.
184
185 =item *
186
187 L<ExtUtils::CBuilder> has been upgraded from version 0.280216 to 0.280219.
188 [perl #122675].
189
190 =item *
191
192 L<ExtUtils::Manifest> has been upgraded from version 1.65 to 1.66.
193 [perl #122415].
194
195 =item *
196
197 L<ExtUtils::ParseXS>:  Documentation has been added to
198 F<ExtUtils-ParseXS/lib/perlxs.pod> concerning handling of locales when writing
199 XS code.
200
201 =item *
202
203 L<File::Find> has been upgraded from version 1.27 to 1.28.
204
205 C<find()> and C<finddepth()> will now warn if passed inappropriate or
206 misspelled options.
207
208 =item *
209
210 L<Getopt::Std> has been upgraded from version 1.10 to 1.11.
211
212 =item *
213
214 L<HTTP::Tiny> has been upgraded from version 0.047 to 0.048.
215
216 =item *
217
218 L<Module::CoreList> has been upgraded from version 5.021003 to 5.021004.
219
220 =item *
221
222 L<POSIX> has been upgraded from version 1.42 to 1.43.
223
224 The C99 math functions and constants (for example acosh, round,
225 M_E, M_PI) have been added.
226
227 =item *
228
229 L<Pod::Perldoc> has been upgraded from version 3.23 to 3.24.
230
231 =item *
232
233 Scalar-List-Utils has been upgraded from version 1.40 to 1.41.
234
235 =item *
236
237 L<constant> has been upgraded from version 1.31 to 1.32.
238
239 It now accepts fully-qualified constant names, allowing constants to be
240 defined in packages other than the caller.
241
242 =item *
243
244 L<threads> has been upgraded from version 1.95 to 1.96.
245
246 =back
247
248 =head2 Removed Modules and Pragmata
249
250 =over 4
251
252 =item *
253
254 XXX
255
256 =back
257
258 =head1 Documentation
259
260 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
261 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
262
263 =head2 New Documentation
264
265 XXX Changes which create B<new> files in F<pod/> go here.
266
267 =head3 L<XXX>
268
269 XXX Description of the purpose of the new file here
270
271 =head2 Changes to Existing Documentation
272
273 XXX Changes which significantly change existing files in F<pod/> go here.
274 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
275 section.
276
277 =head3 L<XXX>
278
279 =over 4
280
281 =item *
282
283 XXX Description of the change here
284
285 =item *
286
287 L<perlsyn>: An ambiguity in the documentation of the Ellipsis statement has
288 been corrected. [perl #122661]
289
290 =back
291
292 =head1 Diagnostics
293
294 The following additions or changes have been made to diagnostic output,
295 including warnings and fatal error messages.  For the complete list of
296 diagnostic messages, see L<perldiag>.
297
298 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
299 include any changes in L<perldiag> that reconcile it to the C<C> code.
300
301 =head2 New Diagnostics
302
303 XXX Newly added diagnostic messages go under here, separated into New Errors
304 and New Warnings
305
306 =head3 New Errors
307
308 =over 4
309
310 =item *
311
312 XXX L<message|perldiag/"message">
313
314 =back
315
316 =head3 New Warnings
317
318 =over 4
319
320 =item *
321
322 XXX L<message|perldiag/"message">
323
324 =back
325
326 =head2 Changes to Existing Diagnostics
327
328 XXX Changes (i.e. rewording) of diagnostic messages go here
329
330 =over 4
331
332 =item *
333
334 XXX Describe change here
335
336 =back
337
338 =head2 Diagnostic Removals
339
340 =over 4
341
342 =item *
343
344 "Constant is not a FOO reference"
345
346 Compile-time checking of constant dereferencing (e.g.,
347 C<< my_constant->() >>) has been removed, since it was not taking
348 overloading into account.  [perl #69456] [perl #122607]
349
350 =item *
351
352 The warning "Ambiguous use of -foo resolved as -&foo()" has been removed.
353 There is actually no ambiguity here, and this impedes the use of negated
354 constants; e.g., C<-Inf>.
355
356 =item *
357
358 The little-known C<my Class $var> syntax (see L<fields> and L<attributes>)
359 could get confused in the scope of C<use utf8> if C<Class> were a constant
360 whose value contained Latin-1 characters.
361
362 =back
363
364 =head1 Utility Changes
365
366 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
367 Most of these are built within the directory F<utils>.
368
369 [ List utility changes as a =head2 entry for each utility and =item
370 entries for each change
371 Use L<XXX> with program names to get proper documentation linking. ]
372
373 =head2 L<XXX>
374
375 =over 4
376
377 =item *
378
379 XXX
380
381 =back
382
383 =head1 Configuration and Compilation
384
385 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
386 go here.  Any other changes to the Perl build process should be listed here.
387 However, any platform-specific changes should be listed in the
388 L</Platform Support> section, instead.
389
390 [ List changes as a =item entry ].
391
392 =over 4
393
394 =item *
395
396 XXX
397
398 =back
399
400 =head1 Testing
401
402 XXX Any significant changes to the testing of a freshly built perl should be
403 listed here.  Changes which create B<new> files in F<t/> go here as do any
404 large changes to the testing harness (e.g. when parallel testing was added).
405 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
406 that they represent may be covered elsewhere.
407
408 [ List each test improvement as a =item entry ]
409
410 =over 4
411
412 =item *
413
414 XXX
415
416 =back
417
418 =head1 Platform Support
419
420 XXX Any changes to platform support should be listed in the sections below.
421
422 [ Within the sections, list each platform as a =item entry with specific
423 changes as paragraphs below it. ]
424
425 =head2 New Platforms
426
427 XXX List any platforms that this version of perl compiles on, that previous
428 versions did not.  These will either be enabled by new files in the F<hints/>
429 directories, or new subdirectories and F<README> files at the top level of the
430 source tree.
431
432 =over 4
433
434 =item XXX-some-platform
435
436 XXX
437
438 =back
439
440 =head2 Discontinued Platforms
441
442 XXX List any platforms that this version of perl no longer compiles on.
443
444 =over 4
445
446 =item XXX-some-platform
447
448 XXX
449
450 =back
451
452 =head2 Platform-Specific Notes
453
454 XXX List any changes for specific platforms.  This could include configuration
455 and compilation changes or changes in portability/compatibility.  However,
456 changes within modules for platforms should generally be listed in the
457 L</Modules and Pragmata> section.
458
459 =over 4
460
461 =item XXX-some-platform
462
463 XXX
464
465 =back
466
467 =head1 Internal Changes
468
469 XXX Changes which affect the interface available to C<XS> code go here.  Other
470 significant internal changes for future core maintainers should be noted as
471 well.
472
473 [ List each change as a =item entry ]
474
475 =over 4
476
477 =item *
478
479 C<save_re_context> no longer does anything and has been moved to
480 F<mathoms.c>.
481
482 =item *
483
484 C<cv_name> is a new API function that can be passed a CV or GV.  It returns
485 an SV containing the name of the subroutine for use in diagnostics.
486 [perl #116735] [perl #120441]
487
488 =item *
489
490 C<cv_set_call_checker_flags> is a new API function that works like
491 C<cv_set_call_checker>, except that it allows the caller to specify whether
492 the call checker requires a full GV for reporting the subroutine's name, or
493 whether it could be passed a CV instead.  Whatever value is passed will be
494 acceptable to C<cv_name>.  C<cv_set_call_checker> guarantees there will be
495 a GV, but it may have to create one on the fly, which is inefficient.
496 [perl #116735]
497
498 =item *
499
500 C<CvGV> (which is not part of the API) is now a more complex macro, which
501 may call a function and reify a GV.  For those cases where is has been used
502 as a boolean, C<CvHASGV> has been added, which will return true for CVs
503 that notionally have GVs, but without reifying the GV.  C<CvGV> also
504 returns a GV now for lexical subs.  [perl #120441]
505
506 =back
507
508 =head1 Selected Bug Fixes
509
510 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
511 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
512
513 [ List each fix as a =item entry ]
514
515 =over 4
516
517 =item *
518
519 XXX
520
521 =item *
522
523 Constant dereferencing now works correctly for typeglob constants.
524 Previously the glob was stringified and its name looked up.  Now the glob
525 itself is used.  [perl #69456]
526
527 =item *
528
529 When parsing a funny character ($ @ % &) followed by braces, the parser no
530 longer tries to guess whether it is a block or a hash constructor (causing
531 a syntax error when it guesses the latter), since it can only be a block.
532
533 =item *
534
535 C<undef $reference> now frees the referent immediately, instead of hanging
536 on to it until the next statement.  [perl #122556]
537
538 =item *
539
540 Various cases where the name of a sub is used (autoload, overloading, error
541 messages) used to crash for lexical subs, but have been fixed.
542
543 =item *
544
545 Bareword lookup now tries to avoid vivifying packages if it turns out the
546 bareword is not going to be a subroutine name.
547
548 =item *
549
550 Compilation of anonymous constants (e.g., C<sub () { 3 }>) no longer
551 deletes any subroutine named C<__ANON__> in the current package.  Not only
552 was C<*__ANON__{CODE}> cleared, but there was a memory leak, too.  This bug
553 goes back to perl 5.8.0. 
554
555 =item *
556
557 Stub declarations like C<sub f;> and C<sub f ();> no longer wipe out
558 constants of the same name declared by C<use constant>.  This bug was
559 introduced in perl 5.10.0.
560
561 =item *
562
563 Under some conditions a warning raised in compilation of regular
564 expression patterns could be displayed multiple times.  This is now
565 fixed.
566
567 =item *
568
569 C<qr/[\N{named sequence}]/> now works properly in many instances.  Some
570 names known to C<\N{...}> refer to a sequence of multiple characters,
571 instead of the usual single character.  Bracketed character classes
572 generally only match single characters, but now special handling has
573 been added so that they can match named sequences, but not if the class
574 is inverted or the sequence is specified as the beginning or end of a
575 range.  In these cases, the only behavior change from before is a slight
576 rewording of the fatal error message given when this class is part of a
577 C<?[...])> construct.  When the C<[...]> stands alone, the same
578 non-fatal warning as before is raised, and only the first character in
579 the sequence is used, again just as before.
580
581 =item *
582
583 Tainted constants evaluated at compile time no longer cause unrelated
584 statements to become tainted.  [perl #122669]
585
586 =item *
587
588 C<open $$fh, ...>, which vivifies a handle with a name like "main::_GEN_0",
589 was not giving the handle the right reference count, so a double free could
590 happen.
591
592 =item *
593
594 When deciding that a bareword was a method name, the parser would get
595 confused if an "our" sub with the same name existed, and look up the method
596 in the package of the "our" sub, instead of the package of the invocant.
597
598 =item *
599
600 The parser no longer gets confused by C<\U=> within a double-quoted string.
601 It used to roduce a syntax error, but now compiles it correctly.
602 [perl #80368]
603
604 =item *
605
606 It has always been the intention for the C<-B> and C<-T> file test
607 operators to treat UTF-8 encoded files as text.
608 (L<perlfunc|perlfunc/-X FILEHANDLE> has been updated to say this.)
609 Previously, it was possible for some files to be considered UTF-8 that
610 actually weren't valid UTF-8.  This is now fixed.  The operators now
611 work on EBCDIC platforms as well.
612
613 =item *
614
615 Under some conditions warning messages raised during regular expression
616 pattern compilation were being output more than once.  This has now been
617 fixed.
618
619 =item *
620
621 A regression has been fixed that was introduced in v5.20.0 (fixed in
622 v5.20.1 as well as here) in which a UTF-8 encoded regular expression
623 pattern that contains a single ASCII lowercase letter does not match its
624 uppercase counterpart. [perl #122655]
625
626 =item *
627
628 Constant folding could incorrectly suppress warnings if lexical warnings
629 (C<use warnings> or C<no warnings>) were not in effect and C<$^W> were
630 false at compile time and true at run time.
631
632 =item *
633
634 Loading UTF8 tables during a regular expression match could cause assertion
635 failures under debugging builds if the previous match used the very same
636 regular expression.  [perl #122747]
637
638 =item *
639
640 Thread cloning used to work incorrectly for lexical subs, possibly causing
641 crashes or double frees on exit.
642
643 =item *
644
645 Since perl 5.14.0, deleting C<$SomePackage::{__ANON__}> and then undefining
646 an anonymous subroutine could corrupt things internally, resulting in
647 L<Devel::Peek> crashing or L<B.pm|B> giving nonsensical data.  This has
648 been fixed.
649
650 =item *
651
652 C<(caller $n)[3]> now reports names of lexical subs, instead of treating
653 them as "(unknown)".
654
655 =back
656
657 =head1 Known Problems
658
659 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
660 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
661 platform specific bugs also go here.
662
663 [ List each fix as a =item entry ]
664
665 =over 4
666
667 =item *
668
669 XXX
670
671 =back
672
673 =head1 Errata From Previous Releases
674
675 =over 4
676
677 =item *
678
679 XXX Add anything here that we forgot to add, or were mistaken about, in
680 the perldelta of a previous release.
681
682 =back
683
684 =head1 Obituary
685
686 XXX If any significant core contributor has died, we've added a short obituary
687 here.
688
689 =head1 Acknowledgements
690
691 XXX Generate this with:
692
693   perl Porting/acknowledgements.pl v5.21.3..HEAD
694
695 =head1 Reporting Bugs
696
697 If you find what you think is a bug, you might check the articles recently
698 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
699 https://rt.perl.org/ .  There may also be information at
700 http://www.perl.org/ , the Perl Home Page.
701
702 If you believe you have an unreported bug, please run the L<perlbug> program
703 included with your release.  Be sure to trim your bug down to a tiny but
704 sufficient test case.  Your bug report, along with the output of C<perl -V>,
705 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
706
707 If the bug you are reporting has security implications, which make it
708 inappropriate to send to a publicly archived mailing list, then please send it
709 to perl5-security-report@perl.org.  This points to a closed subscription
710 unarchived mailing list, which includes all the core committers, who will be
711 able to help assess the impact of issues, figure out a resolution, and help
712 co-ordinate the release of patches to mitigate or fix the problem across all
713 platforms on which Perl is supported.  Please only use this address for
714 security issues in the Perl core, not for modules independently distributed on
715 CPAN.
716
717 =head1 SEE ALSO
718
719 The F<Changes> file for an explanation of how to view exhaustive details on
720 what changed.
721
722 The F<INSTALL> file for how to build Perl.
723
724 The F<README> file for general stuff.
725
726 The F<Artistic> and F<Copying> files for copyright information.
727
728 =cut